R 循环列以执行滚动回归

R 循环列以执行滚动回归,r,statistics,rollapply,R,Statistics,Rollapply,这篇文章有点触及我的问题: 然而,我也在尝试为回归添加滚动周期 例如: data <-data.frame("col1"=runif(10,2,10),"col2"=runif(10,1,10),"col3"=runif(10,1,10),"col4"=runif(10,1,10)) sapply(data, function(x) rollapply(data,30, coef(lm(data$col1~x,data=data)))) data什么包是rollapplyin?zoo,

这篇文章有点触及我的问题:

然而,我也在尝试为回归添加滚动周期

例如:

data <-data.frame("col1"=runif(10,2,10),"col2"=runif(10,1,10),"col3"=runif(10,1,10),"col4"=runif(10,1,10))

sapply(data, function(x) rollapply(data,30, coef(lm(data$col1~x,data=data))))

data什么包是
rollapply
in?zoo,很抱歉没有意识到这是一个特定于zoo的问题,我认为这不是。你只有10个OB,但试图滚动30个周期(这是不存在的)。另外,从统计角度来看,我假设这是某种时间序列回归。但是您使用的是
lm
。IE-你有关于相关错误数据的
lm
,这是非常非常错误的。所以我的系列有3000个周期,我有150个变量(列)。我基本上想要每个变量的30天滚动系数。不确定相关错误是否是一个问题,但绝对值得研究,你是对的。
betadf <- data.frame()
for (i in colnames(data2[,3:ncol(data2)])){
formula <- formula(paste("variablename ~",i,sep=""))
data3 <- na.omit(merge(data2[,'variablename'],data2[,i]))
model <- na.omit(rollapply(data3,rollperiod, 
                         function(z) coef(lm(formula,data=as.data.frame(z))),
                         by.column = FALSE, align = "right"))
colnames(model) <- c("intercept",i)
betadf <- cbind(betadf,model[,i])
}