2016-04-12 33 views
1

我是R和统计学的新手。从不同大小的列回归得到残差

我有一个包含277家公司股票收益的矩阵,矩阵包含370行。由于这些公司的年龄有所不同,因此各栏中的观察数量存在差异。我也有一个包含Fama法语因素的矩阵和一个包含虚拟变量的向量。我设法创建了一个循环来获得回归的系数,但是我需要检索一个包含回归残差的矩阵或残差的协方差矩阵,以便我可以执行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 
} 

但是当我运行这个循环我得到一个“更换有202行,数据具有370”的错误。我假设这是由于列长度的差异造成的,因为前两列(属于具有“完整”观察值的公司)填充在回报矩阵中。

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

回答

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]]将返回第一组残差。

+0

谢谢你的帮助。它工作完美。 – Patusz

+0

当然,@Patrick Bukowsky。如果这是有帮助的,你可以选择它作为答案(也许增加upvote)。 – lmo

+0

我的票比较低,因为名誉不高。 – Patusz