为 `rsav` 文件中的时间序列数据编写 AR(2) 模型的 R 代码

Write R code of AR(2) model for a time serie data from `rsav` file

我需要编写 R 代码来为 rsav 文件中的时间序列数据建模。下面是问题的详细信息:

文件 “file.rsav”(可以使用 load(“file.rsav”) 加载到 R 中)包含一个时间序列 (“xx”)。该系列是 “demeaned” 月收入流(以百万计 美元)的公司。有 n = 96 个观察结果。

该系列已经“demeaned”;通常这意味着我们从每个数据点中减去 $\bar{X}$,但现在假装我们确切地知道均值 $miu$,所以我们从每个数据点中减去 µ,所以新的系列正好(理论上) 表示 0。 (但因此它的样本均值并不精确 0。)

我们将考虑 $X_t$ 系列可能的 ARMA 型号。我们假设对应的白噪声是高斯分布的(所以X_t是高斯分布的)。我们将首先考虑 AR(2) 模型。我们假设我们完全知道真实模型:$X_t = .1.34X_{t-1} - .48X_{t-2} + W_t, W_t \ sim iid N(0, σ^2)$.

我被要求使用模型计算预测回溯,最多 25 个时间步长的未来和过去。

编写代码以手动进行预测(即不使用 predict() 函数)。绘制数据、预测和 95% 预测区间 [假设高斯分布](全部在一个图上)。 (注意:您不需要对预测区间进行多重校正。)

代码:

load('./file.rsav')
str(xx)
xx

输出:

Time-Series [1:96] from 1 to 8.92: 2.45 2.18 0.389 -1.44 -1.47 ...
          Jan         Feb         Mar         Apr         May         Jun         Jul
1  2.45017780  2.17955829  0.38874020 -1.43979552 -1.47049807 -2.25233354 -0.82580703
2  1.92378321  1.87944208  1.07382472  1.01933130  1.88660307 -0.31109156 -0.25732342
3  0.60732330  1.53185399  1.58614371  0.63922270  0.82728407  0.28910411 -1.18154941
4  0.41375543  1.96633332  1.97402973  4.16058136  5.15474250  5.71865844  3.93136013
5 -1.51228022 -3.03396294 -3.65446772 -4.69589618 -3.51276584 -2.97682246 -3.08655352
6  3.43027017  4.68909032  6.55598795  4.95816124  4.87626503  3.17103291  0.79093946
7 -0.62481997 -0.94469455 -2.13648402 -3.64364158 -2.07214317 -3.26793808 -3.38573375
8  0.67823828  1.09908274  0.93832242  0.08791237  1.77322327  2.01201710  3.70197246
          Aug         Sep         Oct         Nov         Dec
1  0.53048061  1.31994246  0.69306401  1.25916404  1.53363966
2 -0.47154459  0.52849630  0.90548093  0.71783457  0.86908457
3 -0.52525201 -0.40335058  0.73415310  0.58501633  0.29875228
4  2.50242432  1.69408297  0.96230124  0.53164036 -0.64480235
5 -1.60735865 -0.20500888 -0.44508903 -0.01443040  1.71087427
6 -0.09975821 -0.85972650 -0.41557374 -0.99876068  0.52620555
7 -2.25968715 -0.91700127 -0.49302872 -1.44275203 -0.66221559
8  4.62724761  4.17549847  3.43992950  3.15302462  4.17300576

我不太了解 rsav 扩展文件,有人可以帮我解决这个问题或给我一些提示吗?提前致谢。

我认为“回溯”是指适合最后 25 个观测值的样本内数据。要从 AR(2) 模型进行预测,您只需要下一步的最后 2 个观察值。

型号为:x_t = ar1 * x_{t-1} + ar2 * x_{t-2} + error

现在我们只需要插入估计的 ar 参数和 x_{t-1}x_{t-2} 的观测值。对于下一步,我们需要预测步骤和最后一次观察:

x_{t+1} = ar1 * x_{t} + ar2 * x_{t-1} + error

这是我们重复 25 次的内容。假定误差项服从正态分布,因此预计为零。

我们对“回溯”做同样的事情,样本内拟合,但这里我们只需要时间序列的观察。

forecast<-numeric(25)
backcast<-numeric(25)

forecast[1]<-0.134*xx[length(xx)]+0.48*xx[length(xx)-1]
forecast[2]<-0.134*forecast[1]+0.48*xx[length(xx)]
for(i in 3:25)
{
forecast[i]<-0.134*forecast[i-1]+0.48*forecast[i-2]
}

for(i in 1:25)
{
backcast[i]<-0.134*xx[length(xx)-i-1]+0.48*xx[length(xx)-i-2]
}

ts.plot(xx)