【问题标题】:Time Dummy Variables and Regressing columns of a dataframe as dependent variables数据帧的时间虚拟变量和回归列作为因变量
【发布时间】:2013-08-13 14:45:54
【问题描述】:

我已尝试在此处搜索此问题,但如果此问题已得到解答,我找不到任何非常抱歉的内容。我的数据集包含 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 循环?

非常感谢您的帮助。

【问题讨论】:

  • 非常感谢,我之前找不到那个帖子。我很抱歉。你介意告诉我我的虚拟变量方法是否正确吗?再次感谢。
  • 抱歉,我现在帮不了你。我能给出的唯一建议是提供一些 small 测试数据,这些数据代表了真实数据中最重要的属性。这将使人们更愿意帮助你。例如,一个日期列和两个股票列,大约 20 行。此类测试数据的解决方案很可能会扩展到您的 1000 多列。

标签: r


【解决方案1】:

您可以如下创建一个股票列表,然后使用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) 

【讨论】:

  • 谢谢,但我不得不使用 for 循环,因为我的时间序列数据包含 NA(抱歉,问题中没有提到),这意味着我必须分别回归每一列。
  • 您可以删除NA,但在我更新答案之前您需要提供示例数据。
猜你喜欢
  • 2014-01-27
  • 2018-03-29
  • 2014-12-24
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 2018-10-18
相关资源
最近更新 更多