如何估计自回归模型 AR(2) 的残差,其中缺少 R 中数据帧的数据

How to estimate Residuals of Autoregressive Model AR(2)with missing data for dataframe in R

我想要estimate/acquire AR(2) 模型的残差。由于残差 = 实际值 - 拟合 value.I 有一个巨大的数据框,其中包含 4000 列(每列公司),时间序列。现在我想 运行 一个 AR(2) 模型并从 it.These 列中获取残差是每个公司的流动性度量。现在我需要转换为每家公司计算的流动性度量,以通过具有 2 个滞后的自回归模型进行转换,因此,第一个自相关是 removed.To 使用 AR(2) 转换每家公司的流动性度量以下等式中概述的过程,并使用残差进行后续分析。

其中,Ct i 是股票 i 在 t 月的流动性度量,x 是自回归过程中包含的滞后数,而 ut i 是股票 i 在 t 月的流动性残差。 我提供了一小部分数据如下。

 DATE         A     B   C       D   E   F
31/12/1999  79.5    NA  NA      6   NA  NA
03/01/2000  79.5    NA  NA      6   NA  NA
04/01/2000  79.5    NA  325     6   961 3081.9
05/01/2000  79.5    NA  322.5   6   945 2524.7
06/01/2000  79.5    NA  327.5   6   952 3272.3
07/01/2000  79.5    NA  327.5   6   941 2102.9
10/01/2000  79.5    7   327.5   6   946 2901.5
11/01/2000  79.5    7   327.5   6   888 9442.5
12/01/2000  79.5    7   331.5   6   870 7865.8
13/01/2000  79.5    7   334     6   853 7742.1

我从统计数据包中找到了如下代码。你能帮忙指定这个代码吗,所以,它为每一列(日期除外)设置 运行s,并在延迟为 2 的情况下处理缺失值。

ar(x, aic = TRUE, order.max = NULL,
   method = c("yule-walker", "burg", "ols", "mle", "yw"),
   na.action, series, ...)

假设您的数据被称为 df 您可以为每一列添加 AR(2) 模型的残差,如下所示:

df <- data.frame(df, apply(df[-1], 2, function(x) arima(x, order = c(2,0,0))$res))
df
       Date   Company1   Company2   Company1.1    Company2.1
1  Jan-2000 0.05365700 0.01821019 -0.036876374  0.0006985845
2  Feb-2000 0.07201239 0.01680506 -0.001093970 -0.0005063298
3  Mar-2000 0.08740745 0.01924687 -0.003796628  0.0017217050
4  Apr-2000 0.10866274 0.01792439  0.010745400  0.0007815183
5  May-2000 0.14189171 0.01848372  0.032286719  0.0014418422
6  Jun-2000 0.15228030 0.01472494  0.023719800 -0.0024127538
7  Jul-2000 0.10231285 0.01634404 -0.025709302 -0.0016760248
8  Aug-2000 0.10838209 0.01919361  0.019162611  0.0009089139
9  Sep-2000 0.08358543 0.01624093 -0.022191184 -0.0010003877
10 Oct-2000 0.10907866 0.01768522  0.022780332  0.0001924767

编辑代码:

df <- data.frame(df, apply(df[-1], 2, function(x) arima(x[!is.na(x)], order = c(2,0,0), method = "ML")$res))