def test_simulated_historical_forecasts(self):
m = Prophet()
m.fit(self.__df)
k = 2
for p in [1, 10]:
for h in [1, 3]:
period = '{} days'.format(p)
horizon = '{} days'.format(h)
df_shf = diagnostics.simulated_historical_forecasts(
m, horizon=horizon, k=k, period=period)
# All cutoff dates should be less than ds dates
self.assertTrue((df_shf['cutoff'] < df_shf['ds']).all())
# The unique size of output cutoff should be equal to 'k'
self.assertEqual(len(np.unique(df_shf['cutoff'])), k)
self.assertEqual(
max(df_shf['ds'] - df_shf['cutoff']),
pd.Timedelta(horizon),
)
dc = df_shf['cutoff'].diff()
dc = dc[dc > pd.Timedelta(0)].min()
self.assertTrue(dc >= pd.Timedelta(period))
# Each y in df_shf and self.__df with same ds should be equal
df_merged = pd.merge(df_shf, self.__df, 'left', on='ds')
self.assertAlmostEqual(
np.sum((df_merged['y_x'] - df_merged['y_y']) ** 2), 0.0)
评论列表
文章目录