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

Obtaining residuals from regressions with different sized columns

我是 R 和统计学的新手。

我有一个包含 277 家公司股票 return 的矩阵,该矩阵包含 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
}

然而,当我 运行 这个循环时,我得到一个 "replacement has 202 rows, data has 370" 错误。我假设这是因为列长度的差异,因为前两列(属于具有 "full" 观察值的公司)填充在 return 矩阵中。

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

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

reg <- list()

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

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