我需要编写R代码来从rsav
文件中建模时间序列数据。这是有关该问题的详细信息:
该文件“file.rsav”
(可以使用加载到R中load(“file.rsav”)
)包含一个时间序列(“xx”
)。该系列是公司的“demeaned”
每月收入流(百万美元)。有n = 96
观察。
该系列已经“demeaned”
; 通常,这意味着我们将从每个数据点中减去$ \ bar {X} $,但假装现在我们知道均值$ miu $,因此我们已从每个数据点中减去了µ,因此新的序列是精确的(理论上)的意思0
。(但是,其样本均值并不精确0
。)
我们将考虑ARMA
$ X_t $系列的可能模型。我们假设相应的白噪声是高斯(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
扩展文件了解不多,有人可以帮助我解决此问题或给我一些提示吗?提前致谢。
我认为使用“ backcast”意味着适合最近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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句