从不同大小的列的回归中获取残差

时间:2016-04-12 11:53:54

标签: r loops matrix regression

我是R和统计学的新手。

我有一个矩阵,包含277家公司的股票回报,矩阵包含370行。由于这些公司的年龄不同,因此列中的观察量存在差异。我还有一个包含Fama French因子的矩阵和一个包含虚拟变量的向量。我已设法创建一个循环来获得回归系数,但我需要检索包含回归残差的矩阵,或残差的协方差矩阵,以便我可以执行GRS测试。

到目前为止我使用的代码是:

reg <- data.frame(matrix(nrow=370, ncol=277))
for (i in c(1:277)) {
reg[,i] <- dynlm(returns.ts[,i] ~ 1 + Mkt.Rf + SMB + HML)$residuals
}

然而,当我运行这个循环时,我得到一个&#34;替换有202行,数据有370&#34;错误。我假设这是因为列长度的不同,因为前两列(属于具有&#34;完整&#34;观察的公司)填充在返回矩阵中。

我尝试了na.action = na.omit但没有成功。有没有办法用这些回归中的残差填充这个矩阵?或者是否有可能获得绕过这一步骤的协方差矩阵?我正在使用R.

1 个答案:

答案 0 :(得分:0)

使用列表而不是data.frame来存储残差。

reg <- list()

for (i in c(1:277)) {
  reg[[i]] <- dynlm(returns.ts[,i] ~ 1 + Mkt.Rf + SMB + HML)$residuals
}

您可以使用相同的提取方法访问残差。例如,reg[[1]]将返回第一组残差。