def test_get_seasonality_matrix_month(self): """ Test that seasonality matrix works with month :return: None """ dates = date_range(2013, 1, 2015, 8) #This maps Jan -> 0, Dec -> 11 etc seasonality_function = lambda date: date.month-1 matrix, compression = get_seasonality_matrix(dates, seasonality_function) for key, val in compression.items(): self.assertEquals(val, key) n_dates = len(dates) n_months = 12 self.assertEquals(matrix.size, (n_dates, n_months)) # the first one which is Jan should be 1 for month index 0 and # 0 for every other month index self.assertEquals(matrix[0, 0], 1) for month_num in xrange(n_months): self.assertEquals(matrix[0, month_num], int(month_num == 0)) # Test that the whole matrix is as expected for index in xrange(n_dates): for month_num in xrange(n_months): month_num_from_index = index % 12 self.assertEquals(matrix[index, month_num], int(month_num == month_num_from_index))
def test_date_range(self): expected = [datetime.date(2015, 1, 1), datetime.date(2015, 2, 1), datetime.date(2015, 3, 1), datetime.date(2015, 4, 1), datetime.date(2015, 5, 1)] result = ds.date_range(2015, 1, 2015, 5) self.assertEquals(result, expected)
def test_zaggy_predict_is_zero_on_dates_before_first_data_point(self): self.model = ZaggyModel(self.dates, self.y) self.model.fit() old_dates = date_range(2013, 1, 2014, 12) results = self.model.predict(old_dates) for expected, result in zip(self.model.solution['model'], results): self.assertEquals(result, 0.0)
def setUp(self): self.mock = make_mock(do_plot=False) self.y = self.mock['y'] self.num = len(self.y) self.dates = date_range(2015, 1, 2029, 12)[0:self.num] self.assertEquals(len(self.y), len(self.dates)) seas_func = lambda date: date.month-1 self.seasonality_matrix, self.compression_dict = \ get_seasonality_matrix(self.dates, seasonality_function=seas_func)
def make_extrapolatad_plot(params=None): mock = get_mock_with_dates() plot_mock(mock) timescale = (1.0, 'month') model = ZaggyModel(mock['dates'], mock['y'], timescale=timescale, params=params) model.fit() plot_model(model) dates = date_range(2022, 1, 2024, 12) results = model.predict(dates) plt.plot(dates, results, color='orange', alpha=0.7, marker='d', label='predictions') dates = date_range(2014, 1, 2016, 1) results = model.predict(dates) plt.plot(dates, results, color='orange', alpha=0.7, marker='s', label='predictions (earlier)') plt.legend(loc='upper left') return model
def test_get_seasonality_matrix_year(self): """ Test that seasonality matrix works with year :return: None """ dates = date_range(2013, 1, 2015, 8) #This maps 2013->0, 2014->1, 2015->2 seasonality_function = lambda date: date.year-2013 matrix, compression = get_seasonality_matrix(dates, seasonality_function) expected_compression = {0: 0, 1: 1, 2: 2} self.assertDictEqual(compression, expected_compression) n_dates = len(dates) n_years = 3 self.assertEquals(matrix.size, (n_dates, n_years)) # Test that the whole matrix is as expected for index in xrange(n_dates): for year_num in xrange(n_years): #integer division year_num_from_index = index / 12 self.assertEquals(matrix[index, year_num], int(year_num == year_num_from_index))
def get_mock_with_dates(): mock = make_mock() num = len(mock['x']) mock['dates'] = date_range(2015, 1, 2099, 12)[:num] return mock
def setUp(self): mock = make_mock() self.y = mock['y'] num = len(self.y) self.dates = date_range(2015, 1, 2029, 12)[0: num]