首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预测,高MSE

预测,高MSE
EN

Stack Overflow用户
提问于 2017-08-02 20:13:22
回答 1查看 723关注 0票数 1

我使用predict (facebook软件包)的月度数据来预测汽车销量。GAM似乎忽略(不适合)所有更高的值(见图)。与ARIMA模型相比,这给了我一个非常高的MSE

enter image description here

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-04-29 12:27:19

@alien_plutone,

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

注意:

对数变换以带来时间序列中的平稳值(y)。大多数时间序列模型要求输入值(时间序列)是平稳的。如果时间序列的趋势和季节性在一段时间内保持稳定,则称该时间序列是平稳的。

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

例如,基于您的代码:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45460590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档