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