gpt4 book ai didi

R、时间序列、Arima 模型、预测、每日数据

转载 作者:行者123 更新时间:2023-12-03 20:20:34 24 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




我正在尝试使用 2012 年 1 月 16 日至 2013 年 10 月 10 日的每日数据进行一些需求预测。但预测结果很糟糕。任何线索为什么?

这是数据在图中的样子:存在每周和每月的季节性。即:工作日需求较多,周末需求较少。



以下是预测图的外观:黑线是实际数据,蓝线是预测数据。


 x = ts(data, freq=7, start=c(3,2))
fit <- auto.arima(x)
pred <- forecast(fit, h=300)

我做了很多关于如何用 arima 模型拟合日常数据的研究。而且由于每周都有季节性,所以我选择了 freq=7。

但是,由于预测很糟糕。有人很好地指出了 Hyndman 教授分享的关于拟合具有多个季节性的模型的方法之一。

https://stats.stackexchange.com/questions/74418/frequency-of-time-series-in-r/74426#74426

所以我接受了好人的建议,并使用上面链接中给定的 2 种方法来拟合模型。

方法一:使用tbats()函数。

x_new <- msts(x, seasonal.periods=c(7,7*52))
fit <- tbats(x_new)
fc <- forecast(fit, h=7*52)

我使用了每周季节性 7 和每年季节性 7*52。因为我还没有找到一种简单的方法来获得每月的季节性。根据结果​​,预测也不好。注意:如果我使用 7*4 作为每月的第二个季节性周期,它会给出更差的预测。

方法 2:使用傅立叶作为 xreg。

seas1 <- fourier(x, K=1)
seas2 <- fourier(ts(x,freq=7*52), K=1)
fit <- auto.arima(x, xreg=cbind(seas1,seas2))
seas1.f <- fourierf(x, K=1, h=7*52)
seas2.f <- fourierf(ts(x,freq=7*52), K=1, h=7*52)
fc1 <- forecast(fit, xreg=cbind(seas1.f, seas2.f))

我用不同的 K 进行了尝试,但它并没有改善预测。

因此,我被卡住了!由于预测还差得很远。谁能指出我的错误在哪里?或者我应该如何改进我的模型?

非常感谢!

最佳答案

您错过了假期的影响以及假期和异常值周围的领先或拉格影响(脉冲异常值、水平变化、趋势变化、一周中某天的变化影响(即季节性脉冲))。如果你处理这些事情,那么你就无法很好地阅读星期几模式。你能把你的数据发到 dropbox.com 上让我看看吗?指定开始日期和数据来自的国家/地区。

关于R、时间序列、Arima 模型、预测、每日数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com