【问题标题】:Write R code of AR(2) model for a time serie data from `rsav` file为 rsav 文件中的时间序列数据编写 AR(2) 模型的 R 代码
【发布时间】:2020-07-05 23:41:17
【问题描述】:

我需要编写 R 代码来对来自 rsav 文件的时间序列数据进行建模。以下是有关该问题的详细信息:

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

系列已“demeaned”;通常这意味着我们从每个数据点中减去 $\bar{X}$,但假设现在我们完全知道平均值) 表示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 扩展文件,有人可以帮我解决这个问题或给我一些提示吗?提前致谢。

【问题讨论】:

    标签: r time-series arima


    【解决方案1】:

    我认为“回溯”是指适合最后 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)
    

    【讨论】:

    • 谢谢。我们可以使用a=c(0.134, -0.48); y=filter(xx, filter=a, method=’’recursive’’)吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2019-04-22
    • 2021-09-29
    • 2015-06-14
    相关资源
    最近更新 更多