1

我试图在这里搜索这个问题,但如果这个问题已经得到回答,我找不到任何很抱歉的东西。我的数据集包含 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 循环?

非常感谢您的帮助。

4

1 回答 1

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

假设您的独立 var 是 indep1、indep2 和 indep3,并且依赖是 dep(假设每个股票的 dep 和 indep 相同)

myestimate<-Map(function(x)lm(dep~indep1+indep2+indep3,data=x),myresi) 
于 2013-08-12T17:38:35.637 回答