Esempio n. 1
0
    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))
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
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)
Esempio n. 5
0
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
Esempio n. 6
0
 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))
Esempio n. 7
0
def get_mock_with_dates():
    mock = make_mock()
    num = len(mock['x'])
    mock['dates'] = date_range(2015, 1, 2099, 12)[:num]
    return mock
Esempio n. 8
0
 def setUp(self):
     mock = make_mock()
     self.y = mock['y']
     num = len(self.y)
     self.dates = date_range(2015, 1, 2029, 12)[0: num]