对于25个资产组合,我有576年的超额收益数据集(一直持续到2010年12月和25年)
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次回归,我需要以25x3矩阵形式排列alphas(截距),beta(系数)和截距的t统计量。< / p>
以下是我的回归。
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个截距统计数据)的矩阵或表格形式。 还有任何循环代码可以编写运行此ols回归,因为我不得不为每个资产手动运行25次回归。
答案 0 :(得分:1)
直接循环示例如下:
# 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])