创建 OLS 结果矩阵

Creating a matrix of OLS results

我有 25 个资产组合的 576 年超额 returns 数据集(一直持续到 201012 和 er25)

 date    er1     er2     er3     er4     er5   market-rf
196301  12.77   11.19   9.15    10.71   10.87   4.93
196302  -3.48   -3.72   -0.94   -1.06   2.51   -2.42
196303  4.75    -1.7    -0.34    0.99   2.36    3.06
196304  4.55    1.25     1.8     3.29   2.52    4.49
196305  3.15    1.44     2.51    3.89   7.63    1.77

我需要 运行 CAPM 模型的 25 个回归,我需要安排 alphas(截距)、betas(系数)和截距的 t 统计量一个 25x3 矩阵形式。

这是我的回归。

capm1 <- lm(er1~market.rf, data=ff25)
capm2 <- lm(er2~market.rf, data=ff25)
capm3 <- lm(er3~market.rf, data=ff25) etc until capm25.

我可以这样得到coeftest的结果。

coeftest(capm1)

t test 系数:

#             Estimate Std. Error t value Pr(>|t|)    
#(Intercept) -0.395188   0.204474 -1.9327  0.05376 .  
#market.rf    1.434851   0.045032 31.8629  < 2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

此外,我可以使用

提取感兴趣的 3 个变量
summary(capm1)$coef[1,1]
summary(capm1)$coef[2,1]
summary(capm1)$coef[1,3]

谁能帮我以矩阵或表格形式安排这些变量(我最终会得到 25 个截距、25 个系数和 25 个截距 t 统计量)。 还有没有任何循环代码可以写入 运行 这个 ols 回归,因为我必须手动 运行 每个资产的回归 25 次。

一个简单的循环例子是这样的:

# an index matrix to extract to three values of interest
indx <- matrix(c(1,1,
                 2,1,
                 1,3),nrow=3,byrow=TRUE)

# initialize the output matrix to NULL
out <- NULL

# iterate over the 25 variables
for(i in seq(25)) 
    out  <- rbind(out,
                 coeftest(lm(formula(paste0('er',i,'~market.rf')), 
                             data=ff25))[indx])