在得到fama因子(国泰安数据库有)模型后,需要计算每个股票的阿尔法进而计算风险调整收益率,因此需要进行对每个股票进行ols,也就是需要进行分组回归。
这里需要引入一个包“data.table",结合之前常用的”tidyverse“包。假设因子模型存放在”test.csv“中,为了方面,假定回归模型为:y~x1+x2+x3,stock为各股票代码,
library (tidyverse)
library(data.table)
test<-read_csv("test.csv")#肯定还有更好的方法读取,但是现在只会这样
dt<-data.table(test)
result<-dt[,as.list(coef(lm(y~x1+x2+x3,data=.SD))),keyby=.(stock)]
这里dt[i,j,k]为data.table数据格式的特殊表示形式,i为dt数据中的行,k为分组依据,j为运算表达式,方括号里面的.(stock)的意思是读取dt数据中的stock这一列数据,keyby=.(stock)意思是以stock这一列分组依据;.SD的意思是读取分组后的子集,也就是stock的各个分组的子集。coef为提取回归方程的系数,as.list意思是输出的格式为一个向量