数据如下图,
按照PERMNO分组,每个PERMNO代表股票编号,每个股票有每个月的收益(RET),现在想实现按PERMNO分组,然后进行rolling regression(reg RET on Mkt.RF+SMB+HML+UMD+LIQ),window=60, 我之前的代码如下:
f2<-data
attach(f2)
result<-f2[,as.list(coef(roll_regres(er~Mkt.RF+SMB+HML+UMD+LIQ,data=.SD,width = 60))),keyby=.(PERMNO)]
报错如下
Error in f2[, as.list(coef(roll_regres(er ~ Mkt.RF + SMB + HML + UMD + :
Assertion on 'width' failed: All elements must be <= 33.
现在有几个关键问题需要解决,一个是roll_regres能否直接嵌套在里面用,就像一般的Lm一样。
第二个:不是所有的股票观测月数都大于60,所以如果用roll_regres width=60很有可能会报错,对于观测月数小于60的,就按照它最大的观测月份进行回归就好了,比如假设PERMNO=10002的股票,只有40个观测月份,那么就按照40个数据点进行回归。最后按把回归结果按照PERMNO和date储存起来。