Skip to content

Commit c1e24ad

Browse files
committed
finished test fix
1 parent 80a8fd8 commit c1e24ad

File tree

2 files changed

+67
-39
lines changed

2 files changed

+67
-39
lines changed

test/test_converters.py

Lines changed: 58 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -163,35 +163,53 @@ def test_decomposition(self):
163163
self.assertEqual(dcdf.index[0], (1999, 1))
164164
self.assertEqual(dcdf.index[-1], (2010, 4))
165165
self.assertEqual(dcdf.shape, (48, 4))
166-
self.assertEqual(list(dcdf.columns), [u'data', u'seasonal', u'trend', u'remainder'])
167-
self.assertAlmostEqual(dcdf.data[(1999, 1)], 30.0525, places=3)
168-
self.assertAlmostEqual(dcdf.data[(2010, 4)], 47.9137, places=3)
169-
self.assertAlmostEqual(dcdf.seasonal[(1999, 1)], 5.5077, places=3)
170-
self.assertAlmostEqual(dcdf.seasonal[(2010, 4)], 0.7848, places=3)
171-
self.assertAlmostEqual(dcdf.trend[(1999, 1)], 24.3714, places=3)
172-
self.assertAlmostEqual(dcdf.trend[(2010, 4)], 47.1525, places=3)
173-
self.assertAlmostEqual(dcdf.remainder[(1999, 1)], 0.1732, places=3)
174-
self.assertAlmostEqual(dcdf.remainder[(2010, 4)], -0.0236, places=3)
166+
self.assertEqual(list(dcdf.columns),
167+
[u'data', u'seasonal', u'trend', u'remainder'])
168+
self.assertAlmostEqual(dcdf.data[(1999, 1)],
169+
self.aus_ts.rx(1)[0], places=3)
170+
self.assertAlmostEqual(dcdf.data[(2010, 4)],
171+
self.aus_ts.rx(48)[0], places=3)
172+
self.assertAlmostEqual(dcdf.seasonal[(1999, 1)],
173+
dc.rx2('time.series').rx(1, 1)[0], places=3)
174+
self.assertAlmostEqual(dcdf.seasonal[(2010, 4)],
175+
dc.rx2('time.series').rx(48, 1)[0], places=3)
176+
self.assertAlmostEqual(dcdf.trend[(1999, 1)],
177+
dc.rx2('time.series').rx(1, 2)[0], places=3)
178+
self.assertAlmostEqual(dcdf.trend[(2010, 4)],
179+
dc.rx2('time.series').rx(48, 2)[0], places=3)
180+
self.assertAlmostEqual(dcdf.remainder[(1999, 1)],
181+
dc.rx2('time.series').rx(1, 3)[0], places=3)
182+
self.assertAlmostEqual(dcdf.remainder[(2010, 4)],
183+
dc.rx2('time.series').rx(48, 3)[0], places=3)
175184

176185
dc = wrappers.decompose(self.aus_ts)
177186
dcdf = converters.decomposition(dc)
178187
self.assertEqual(type(dcdf.index), pandas.core.index.MultiIndex)
179188
self.assertEqual(dcdf.index[0], (1999, 1))
180189
self.assertEqual(dcdf.index[-1], (2010, 4))
181190
self.assertEqual(dcdf.shape, (48, 4))
182-
self.assertEqual(list(dcdf.columns), [u'data', u'seasonal', u'trend', u'remainder'])
183-
self.assertAlmostEqual(dcdf.data[(1999, 1)], 30.0525, places=3)
184-
self.assertAlmostEqual(dcdf.data[(2010, 4)], 47.9137, places=3)
185-
self.assertAlmostEqual(dcdf.seasonal[(1999, 1)], 8.5906, places=3)
186-
self.assertAlmostEqual(dcdf.seasonal[(2010, 4)], 1.5042, places=3)
187-
self.assertAlmostEqual(dcdf.trend[(1999, 3)], 25.7805, places=3)
188-
self.assertAlmostEqual(dcdf.trend[(2010, 2)], 46.514102, places=3)
191+
self.assertEqual(list(dcdf.columns),
192+
[u'data', u'seasonal', u'trend', u'remainder'])
193+
self.assertAlmostEqual(dcdf.data[(1999, 1)],
194+
self.aus_ts.rx(1)[0], places=3)
195+
self.assertAlmostEqual(dcdf.data[(2010, 4)],
196+
self.aus_ts.rx(48)[0], places=3)
197+
self.assertAlmostEqual(dcdf.seasonal[(1999, 1)],
198+
dc.rx2('seasonal').rx(1)[0], places=3)
199+
self.assertAlmostEqual(dcdf.seasonal[(2010, 4)],
200+
dc.rx2('seasonal').rx(48)[0], places=3)
201+
self.assertAlmostEqual(dcdf.trend[(1999, 3)],
202+
dc.rx2('trend').rx(3)[0], places=3)
203+
self.assertAlmostEqual(dcdf.trend[(2010, 2)],
204+
dc.rx2('trend').rx(46)[0], places=3)
189205
self.assertTrue(dcdf.trend.isnull()[(1999, 1)])
190206
self.assertTrue(dcdf.trend.isnull()[(1999, 2)])
191207
self.assertTrue(dcdf.trend.isnull()[(2010, 3)])
192208
self.assertTrue(dcdf.trend.isnull()[(2010, 4)])
193-
self.assertAlmostEqual(dcdf.remainder[(1999, 3)], 1.3091, places=3)
194-
self.assertAlmostEqual(dcdf.remainder[(2010, 2)], -2.9993, places=3)
209+
self.assertAlmostEqual(dcdf.remainder[(1999, 3)],
210+
dc.rx2('random').rx(3)[0], places=3)
211+
self.assertAlmostEqual(dcdf.remainder[(2010, 2)],
212+
dc.rx2('random').rx(46)[0], places=3)
195213
self.assertTrue(dcdf.remainder.isnull()[(1999, 1)])
196214
self.assertTrue(dcdf.remainder.isnull()[(1999, 2)])
197215
self.assertTrue(dcdf.remainder.isnull()[(2010, 3)])
@@ -205,16 +223,20 @@ def test_prediction_intervals(self):
205223
self.assertEqual(list(pred.index), range(2011, 2021))
206224
self.assertEqual(list(pred.columns), [u'point_fc', u'lower80',
207225
u'upper80', u'lower95', u'upper95'])
208-
self.assertAlmostEqual(pred.point_fc[2011], 370.3502, places=3)
209-
self.assertAlmostEqual(pred.point_fc[2020], 370.3502, places=3)
210-
self.assertAlmostEqual(pred.lower80[2011], 204.1084, places=3)
211-
self.assertAlmostEqual(pred.lower80[2020], 204.1084, places=3)
212-
self.assertAlmostEqual(pred.upper80[2011], 536.5920, places=3)
213-
self.assertAlmostEqual(pred.upper80[2020], 536.5920, places=3)
214-
self.assertAlmostEqual(pred.lower95[2011], 112.9187, places=3)
215-
self.assertAlmostEqual(pred.lower95[2020], 112.9187, places=3)
216-
self.assertAlmostEqual(pred.upper95[2011], 627.7818, places=3)
217-
self.assertAlmostEqual(pred.upper95[2020], 627.7818, places=3)
226+
self.assertAlmostEqual(pred.point_fc[2011],
227+
self.fc_oil.rx2('mean').rx(1)[0], places=3)
228+
self.assertAlmostEqual(pred.point_fc[2020],
229+
self.fc_oil.rx2('mean').rx(10)[0], places=3)
230+
lower = self.fc_oil.rx2('lower')
231+
upper = self.fc_oil.rx2('upper')
232+
self.assertAlmostEqual(pred.lower80[2011], lower.rx(1, 1)[0], places=3)
233+
self.assertAlmostEqual(pred.lower80[2020], lower.rx(10, 1)[0], places=3)
234+
self.assertAlmostEqual(pred.upper80[2011], upper.rx(1, 1)[0], places=3)
235+
self.assertAlmostEqual(pred.upper80[2020], upper.rx(10, 1)[0], places=3)
236+
self.assertAlmostEqual(pred.lower95[2011], lower.rx(1, 2)[0], places=3)
237+
self.assertAlmostEqual(pred.lower95[2020], lower.rx(10, 2)[0], places=3)
238+
self.assertAlmostEqual(pred.upper95[2011], upper.rx(1, 2)[0], places=3)
239+
self.assertAlmostEqual(pred.upper95[2020], upper.rx(10, 2)[0], places=3)
218240
self.assertRaises(ValueError, converters.prediction_intervals, self.oil_ts)
219241

220242

@@ -228,9 +250,14 @@ def test_accuracy(self):
228250
acdf2.shape == (7, 2)
229251
set(acdf2.columns) == {'Train', 'Test'}
230252
self.assertTrue(acdf1.Train.round(5).equals(acdf2.Train.round(5)))
231-
self.assertAlmostEqual(acdf2.Test.ix['ME'], -20.3502, places=3)
232-
self.assertAlmostEqual(acdf2.Test.ix['MAE'], 20.3502, places=3)
233-
self.assertAlmostEqual(acdf2.Test.ix['RMSE'], 20.3502, places=3)
253+
r_test_vals = list(acc2.rx(2, True))
254+
r_cols = list(robjects.r.colnames(acc2))
255+
self.assertAlmostEqual(acdf2.Test['ME'],
256+
r_test_vals[r_cols.index('ME')], places=3)
257+
self.assertAlmostEqual(acdf2.Test['MAE'],
258+
r_test_vals[r_cols.index('MAE')], places=3)
259+
self.assertAlmostEqual(acdf2.Test['RMSE'],
260+
r_test_vals[r_cols.index('RMSE')], places=3)
234261

235262

236263

test/test_wrappers.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
from rforecast import wrappers
33
from rforecast import converters
44
from rforecast import ts_io
5-
import rpy2
65
from rpy2 import robjects
6+
from rpy2.robjects.packages import importr
77
import numpy
8-
import pandas
98

109

1110
NULL = robjects.NULL
@@ -28,6 +27,7 @@ def setUp(self):
2827
0.54447409, 0.82227504, 0.99736304, 0.91404314, 0.42225177,
2928
0.14696605, 0.08098318, 0.11046747, 0.8412757 , 0.73562921]
3029
self.rnd = converters.sequence_as_series(r, freq=4)
30+
self.fc = importr('forecast')
3131

3232

3333
def test_frequency(self):
@@ -60,16 +60,17 @@ def test_box_cox(self):
6060
bc0 = wrappers.BoxCox(self.oil, 0)
6161
self.assertAlmostEqual(self.oil[0], bc1[0] + 1, places=4)
6262
self.assertAlmostEqual(numpy.log(self.oil[0]), bc0[0], places=4)
63-
self.assertAlmostEqual(bc[0], 19.07217, places=4)
63+
bc_value = (self.oil.rx(1)[0]**0.5 - 1) / 0.5
64+
self.assertAlmostEqual(bc[0], bc_value, places=2)
6465
inv_bc = wrappers.InvBoxCox(bc, 0.5)
6566
self.assertAlmostEqual(inv_bc[0], self.oil[0], places=4)
6667

6768
def test_tsclean(self):
68-
clean_gold = wrappers.tsclean(converters.ts_as_series(self.gold))
69-
self.assertFalse(clean_gold.isnull().any())
70-
self.assertAlmostEqual(clean_gold[56], 333.250, places=3)
71-
self.assertAlmostEqual(clean_gold[419],394.5, places=3)
72-
self.assertAlmostEqual(clean_gold[604], 476.6000, places=3)
69+
gold_py = converters.ts_as_series(self.gold)
70+
clean_py = wrappers.tsclean(gold_py)
71+
self.assertFalse(clean_py.isnull().any())
72+
clean_r = self.fc.tsclean(self.gold)
73+
self.assertAlmostEqual(clean_py[770], clean_r.rx(770), places=3)
7374

7475
def test_findfrequency(self):
7576
self.assertEqual(wrappers.findfrequency(self.aus), 4)

0 commit comments

Comments
 (0)