我在月度数据中使用先知(facebook package)来预测汽车销售。 GAM似乎忽略(不适合)所有更高的值(见图)。 与ARIMA模型相比,这给了我一个更高的MSE
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)
答案 0 :(得分:0)
@alien_plutone,
您需要减少时间序列值(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