华宇之前或华宇内部的差异时间序列

机器算法验证 r 时间序列 有马
2022-02-09 02:54:02

在使用 Arima 之前区分一个系列(假设它需要它)更好还是更好地在 Arima 中使用 d 参数?

我很惊讶拟合值的不同取决于使用相同模型和数据采取的路线。还是我做错了什么?

install.packages("forecast")
library(forecast)

wineindT<-window(wineind, start=c(1987,1), end=c(1994,8))
wineindT_diff <-diff(wineindT)

#coefficients and other measures are similar
modA<-Arima(wineindT,order=c(1,1,0))
summary(modA)
modB<-Arima(wineindT_diff,order=c(1,0,0))
summary(modB)

#fitted values from modA
A<-forecast.Arima(modA,1)$fitted

#fitted from modB, setting initial value to the first value in the original series
B<-diffinv(forecast.Arima(modB,1)$fitted,xi=wineindT[1])


plot(A, col="red")
lines(B, col="blue")

添加:

请注意,我将系列差分一次并拟合 arima (1,0,0) 然后我将 arima (1,1,0) 拟合到原始系列。我(我认为)正在反转差异文件上 arima(1,0,0) 拟合值的差异。

我正在比较拟合值 - 而不是预测。

这是情节(红色是 arima(1,1,0),蓝色是变回原始比例后差异系列上的 arima (1,0,0)):

在此处输入图像描述

回应 Hyndman 博士的回答:

1)您能否在 R 代码中说明我需要做什么才能使两个拟合值(可能是预测)在 Arima(1,1, 0) 和 Arima(1,0,0) 在手动差分系列上?我认为这与未包含在 modA 中的均值有关,但我不完全确定如何进行。

2)关于你的#3。我知道我错过了明显的,但不是定义为相同吗?你是说我错误地“无差别”吗?X^t=Xt1+ϕ(Xt1Xt2)Y^t=ϕ(Xt1Xt2)Y^tX^tXt1

4个回答

这里有几个问题。

  1. 如果您先进行差异化,则将Arima()模型拟合到差异化数据。如果您让Arima()差分作为估计过程的一部分,它将使用扩散先验进行初始化。这在arima(). 因此,由于处理初始观察的方式不同,结果会有所不同。我认为这对估计的质量没有太大影响。Arima()但是,如果您想要对原始(未差分)数据进行预测或拟合值,则处理差分要容易得多。

  2. 除了估计的差异之外,您的两个模型并不等效,因为modB包含一个常数而modA没有。默认情况下,Arima()时包含常量,时不包含常量。您可以使用参数覆盖这些默认值d=0d>0include.mean

  3. 原始数据的拟合值不等于差分数据上的未差分拟合值。要看到这一点,请注意原始数据上的拟合值由 ,而拟合差分数据的值由 给出,其中是原始时间序列,是不同的系列。因此

    X^t=Xt1+ϕ(Xt1Xt2)
    Y^t=ϕ(Xt1Xt2)
    {Xt}{Yt}
    X^tX^t1Y^t.

有时您需要删除本地方法以使系列静止。如果原始系列的 acf 没有消失,这可能是由于系列中的电平/步长偏移。补救措施是贬低系列。

对赏金的回应:

获得相同结果/拟合值的方法是在对原始 (Y(t) 系列进行物理差分以获得一阶差分 (dely) 之后,估计没有常数的 AR(1)。这相当于拟合 OLS 模型形式 dely(t)= B1*dely(t-1) + a(t) 没有截距。来自该模型的拟合值,适当地整合 1 阶将(我相信)为您提供模型的拟合值;[ 1-B][AR(1)] Y(t)=a(t)。除了 AUTOBOX 之外,大多数软件都不允许您在没有常数的情况下估计 AR(1) 模型。这里是dely =+ [(1- .675B * 1)]**-1 [A(T)] 的方程,而 Y 的方程是

[(1-B* 1)]Y(T) =+ [(1- .676B * 1)]**-1 [A(T)] 。请注意由 Y 的物理差分引起的舍入误差。请注意,当差分有效(在模型中)或无效时,用户可以选择是否包括或排除常数。正常过程是为平稳的(即未差分的)ARIMA 模型包括一个常数,并在模型中存在差分时选择性地包括一个常数。似乎替代方法(Arima)将一个常数强制转换为一个固定模型,在我看来这导致了您的困境。

我不知道为什么结果会有所不同,除非您以某种方式比另一种方式差异更多倍。对于 ARIMA(p,d,q),在任何模型拟合之前首先完成 d 差异。然后将平稳的 ARMA(p,q) 模型拟合到差分序列。假设是在去除序列中的多项式趋势之后,剩余的序列是平稳的。差异的数量对应于您要删除的多项式的阶数。因此,对于线性趋势,您只需要一个差异,对于二次趋势,您需要两个差异。我不同意约翰回答中所说的大部分内容。

区分 I(1) 系列的一个原因是使其静止。假设您有正确的 ARIMA 模型规范,模型的残差将移除自回归和移动平均分量,并且应该是静止的。在这方面,使用模型的残差而不是差分是有意义的。然而,在你有很多你认为大约是 I(1) 的数据的情况下,有些人只会对数据进行差分,而不是完全估计 ARIMA 模型。ARIMA 模型可以拟合大量时间序列问题,而这些问题可能对差异没有意义。例如,如果数据经历均值回归,这可能并不总是适合差异,因为它可能不是 I(1)。