gpt4 book ai didi

r - 将双差预测转换为 R 中的实际值 diff()

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

我已经读过

时间序列预测:将差异预测转换回差异水平之前

如何“无差异”时间序列变量

不幸的是,这些都没有给出任何明确的答案,说明如何使用差分方法 (diff()) 将 ARIMA 中完成的预测转换为平稳序列。

代码示例。

## read data and start from 1 jan 2014
dat<-read.csv("rev forecast 2014-23 dec 2015.csv")
val.ts <- ts(dat$Actual,start=c(2014,1,1),freq=365)

##Check how we can get stationary series
plot((diff(val.ts)))
plot(diff(diff(val.ts)))
plot(log(val.ts))
plot(log(diff(val.ts)))
plot(sqrt(val.ts))
plot(sqrt(diff(val.ts)))
##I found that double differencing. i.e.diff(diff(val.ts)) gives stationary series.

#I ran below code to get value of 3 parameters for ARIMA from auto.arima
ARIMAfit <- auto.arima(diff(diff(val.ts)), approximation=FALSE,trace=FALSE, xreg=diff(diff(xreg)))
#Finally ran ARIMA
fit <- Arima(diff(diff(val.ts)),order=c(5,0,2),xreg = diff(diff(xreg)))

#plot original to see fit
plot(diff(diff(val.ts)),col="orange")
#plot fitted
lines(fitted(fit),col="blue")

这给了我一个完美契合的时间序列。但是,我如何将拟合值从当前形式重新转换为原始指标?我的意思是从双差分到实际数字?对于日志,我知道我们可以为平方根做 10^fitted(fit) 有类似的解决方案,但是如何做差分,那就是双重差分?

请在 R 中对此提供任何帮助?经过几天的严格锻炼,我卡在了这一点上。

我运行测试以检查差异是否对 auto.arima 函数的模型拟合有任何影响,并发现它确实如此。因此 auto.arima 无法处理非平稳序列,并且需要分析师部分努力将序列转换为平稳序列。

首先,auto.arima 没有任何区别。橙色为实际值,蓝色为拟合值。

ARIMAfit <- auto.arima(val.ts, approximation=FALSE,trace=FALSE, xreg=xreg)
plot(val.ts,col="orange")
lines(fitted(ARIMAfit),col="blue")

其次,我尝试了差分

ARIMAfit <- auto.arima(diff(val.ts), approximation=FALSE,trace=FALSE, xreg=diff(xreg))
plot(diff(val.ts),col="orange")
lines(fitted(ARIMAfit),col="blue")

enter image description here

第三,我做了两次差分。

ARIMAfit <- auto.arima(diff(diff(val.ts)), approximation=FALSE,trace=FALSE, 
xreg=diff(diff(xreg)))
plot(diff(diff(val.ts)),col="orange")
lines(fitted(ARIMAfit),col="blue")

enter image description here

目视检查可以表明第 3 个图表更准确。这是我知道的。挑战在于如何将这种双差形式的拟合值重新转换为实际度量!

最佳答案

diff 的反义词是 cumsum,但您需要知道每个 diff 的起始值。

例如:

set.seed(1234)
x <- runif(100)
z <- cumsum(c(x[1], cumsum(c(diff(x)[1], diff(diff(x))))))
all.equal(z, x)
[1] TRUE

分享您的一些数据以制作可重现的示例,以更好地帮助回答问题。

关于r - 将双差预测转换为 R 中的实际值 diff(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518083/

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