先知预测,高MSE

时间:2017-08-02 12:13:22

标签: time-series gam

我在月度数据中使用先知(facebook package)来预测汽车销售。 GAM似乎忽略(不适合)所有更高的值(见图)。 与ARIMA模型相比,这给了我一个更高的MSE

enter image description here

df <- data.frame(ds = seq(as.Date('1993-01-01'), as.Date('2017-06-01'),by = 'm'), y)
attach(df)
m <- prophet(df,weekly.seasonality = F, yearly.seasonality = T, seasonality.prior.scale = 12)
future <- make_future_dataframe(m, periods = 12, freq = 'm')
forecast <- predict(m, future)
tail(forecast[c('ds', 'yhat', 'yhat_lower', 'yhat_upper')])
plot(m, forecast)

1 个答案:

答案 0 :(得分:0)

@alien_plutone,

您需要减少时间序列值(y)的变化,即汽车销售价值。大多数时间序列模型都期望固定的时间序列值(y)。我建议在应用先知模型之前对时间序列值使用对数变换。例如,引入以下代码行以使时间序列静止。

注意:

对数转换使时间序列值(y)保持不变。大多数时间序列模型要求输入值(时间序列)是静止的。如果时间序列的趋势和季节性随着时间的推移保持稳定,那么它就是固定的。

df['y'] <- np.log(df['y'])

e.g。根据您的代码:

df <- data.frame(ds = seq(as.Date('1993-01-01'), as.Date('2017-06-01'),by = 'm'), y)
df['y'] <- np.log(df['y'])
m <- prophet(df,weekly.seasonality = F, yearly.seasonality = T, seasonality.prior.scale = 12)
future <- make_future_dataframe(m, periods = 12, freq = 'm')
forecast <- predict(m, future)
tail(forecast[c('ds', 'yhat', 'yhat_lower', 'yhat_upper')])
plot(m, forecast) 

如果这个答案可以帮助您减少MSE,请告诉我。请使用exp函数将预测值恢复到原始比例。

非固定时间序列

Click here to see plot of a non-stationary series

固定时间序列

Click here to see plot of a Stationary series