我试图在这里搜索这个问题,但如果这个问题已经得到解答我找不到任何对不起。我的数据集包含10年期间大量股票(1000+)的每日信息。所以我已经将我的数据集读作数据框时间序列,其中每列是一个单独的股票。我想回归每个股票的月份虚拟变量捕获季节变化并获得残差。我所做的是以下内容:
for (i in 1:1000){
month.f<-factor(months(time(stockinfo[,i])))
dummy<-model.matrix(month.f)
residStock[,1]<-residuals(lm(stockinfo[,i]~dummy,na.action=na.exclude))
}
#Stockinfo is data.frame
这是正确的方法吗?
其次,我想使用残差作为因变量和其他数据框的其他独立变量进行回归。什么是最好的方法,我是否必须再次使用for循环?
非常感谢你的帮助。
答案 0 :(得分:0)
您可以按如下方式创建股票列表,然后使用Map
函数并避免使用R for loop
(未测试,因为您未提供样本数据)
假设您的数据是mydata,月份为1,2,如果有12个月,则使用11个月作为假人
mystock<-list("APP~","INTEL~","MICROSOFT~") # stocks with tilde sign
myresi<-Map(function(x) resi(lm(as.formula(paste(x,paste(levels(as.factor(mydata$month))[-1],collapse="+"))),data=mydata),mystock) #-1 means we are using only 11 months excluding first as base month
假设你的独立变量是indep1,indep2和indep3,而依赖是dep(假设dep和indep对于每只股票是相同的)
myestimate<-Map(function(x)lm(dep~indep1+indep2+indep3,data=x),myresi)