我想知道如何计算残差从拟合AR模型的手。现在我可以使用stats::ar
来拟合自回归模型,并通过拟合模型的$resid
获得残差,但是我希望能够在给定估计的AR参数的情况下自己计算这些残差。所以我想有一个函数,它从ar模型和时间序列中获取估计的AR参数,并返回残差或去除自相关的时间序列。
我的最终目标是能够在一个数据集上估计AR系数并将其应用于另一个数据集,或者尝试从同一时间序列中删除略有不同的AR系数。
因此,例如,在这里,我希望能够通过将估计的系数应用于原始的多变量usconsumption
时间序列来重现相同的ar_model$resid
数据。
> library(fpp)
> ar_model <- ar(usconsumption, aic=FALSE, order.max=1)
> ar_model$ar
, , consumption
consumption income
1 0.3088803 0.5627686
, , income
consumption income
1 0.08269438 -0.2310507
> head(ar_model$resid)
consumption income
1970 Q1 NA NA
1970 Q2 -0.2363646 1.0249511
1970 Q3 0.1294457 1.0084068
1970 Q4 -1.1150108 -0.9913129
1971 Q1 1.5423841 1.5613124
1971 Q2 -0.2947244 0.3983440
我尝试使用timsac::mfilter
函数,但我无法得到任何接近原始ar
残差的结果。
1条答案
按热度按时间s3fp2yjn1#
我写了这段代码来回答你的问题。它将根据
ar
帮助页中的公式将AR系数乘以滞后值。不幸的是,结果并不完全正确:(我对预测值的计算与
fitted(model)
不同。虽然这并没有回答你的问题,但我会把它贴在这里,以防其他用户能够发现这段代码的错误,或者把它作为完整解决方案的模板。
x t −μ=a 1 (x t−1 −μ)++a p (x t−p −μ)+e t
创建于2023-05-22使用reprex v2.0.2