gpt4 book ai didi

r - 使用 Arima 模型预测不在序列结束之前的时期的值

转载 作者:行者123 更新时间:2023-12-04 20:51:23 27 4
gpt4 key购买 nike

我正在生成带有外部回归器的 Arima 模型。假设我有 观察。 predict.Arima函数来自 forecast包只是对 进行预测n + 1 观察。

我需要对 进行预测值(系列的最后一个值),改变外部回归量的值,即我需要预测 的值观察给定外部回归量的特定值。

library(forecast)
set.seed(123)
aux <- 1:24
covari <- aux + rnorm(24,0,2)
vari <- ts(aux * runif(24,0,3), start=c(2010,1), freq=12)

mod <- auto.arima(vari, xreg=covari)

predict(mod, newxreg=20)

此代码生成模型,并展示如何生成预测。我可以通过设置参数 n.ahead 来控制提前期的数量.
predict(mod, newxreg=runif(4,15,25), n.ahead=4)

此代码将为系列的下 4 个值生成预测。

我需要的是一个 n.ahead=-1 ,即对序列内部值的预测,但具有不同的外部回归量。

如果我只使用一个外部回归器,那么任务并不复杂,因为它是一个加法模型,我可以将观察到的 xreg 值的差值与我想要的值乘以 xreg 的系数相加。但是,如果外部回归量的数量增加,则情况会变得更加复杂。

有什么方法可以预测不在 Arima 模型系列结束之前的值?

最佳答案

你所说的“预测”是什么意思?对于时间序列,这是对以观察到的过去值为条件的 future 值的估计。因此,观测值的“预测”就是观测值。

但也许你的意思是拟合值。也就是说,以所有先前观察为条件的观察的一步预测。在这种情况下,你可以使用 fitted(mod) 得到你想要的东西。 .

顺便说一句,predict.Arima()不是预测包的一部分。预测包提供了 forecast.Arima()起到替代的作用。例如:

forecast(mod, xreg=20)
forecast(mod, xreg=runif(4,15,25), h=4)

更新:
正如评论中所解释的那样,假设已观察到回归量的不同值,OP 想要对过去的观察进行“预测”。有几种解释方式。

首先,更新系数以反射(reflect)新信息,并且仅使用过去的数据。在这种情况下,只需重新拟合模型并获得拟合值。

其次,系数没有更新,只使用过去的数据。没有任何功能,我不确定为什么有人需要这样做。但它可以按如下方式完成:
fitted(mod) + mod$coef["covari"] * (newx - oldx)

第三,系数没有更新,所有数据都被使用。然后我们得到
observed  + mod$coef["covari"] * (newx - oldx)

关于r - 使用 Arima 模型预测不在序列结束之前的时期的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304924/

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