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

时间:2016-01-08 18:12:42

标签: r loops dataframe multiple-columns quantmod

我想估计/获取AR(2)模型的残差。作为残差=实际值 - 拟合值。我有一个巨大的数据框,有4000列(每个公司),时间序列。现在我想运行AR(2)模型并从中获取残差。这些列是每个公司的流动性度量。现在我需要转换为每个公司计算的流动性度量,通过具有2个滞后的自回归模型进行转换,因此,第一个自动关联被删除。使用AR(2)流程概述转换每个公司的流动性度量在下面的等式中,使用残差进行后续分析。

enter image description here

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

 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

我从stats包中发现了这段代码如下。你能帮忙指定一下这段代码吗,它会为每一列(日期除外)运行,并在滞后期间处理缺失值。

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

1 个答案:

答案 0 :(得分:1)

假设您的数据被称为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))