R 使用不同列(自变量)执行多重滚动回归
如何在单独的回归中,以y1为因变量,以y2、y3等为自变量进行多重滚动回归: 见下例:R 使用不同列(自变量)执行多重滚动回归,r,regression,multiple-columns,xts,rolling-computation,R,Regression,Multiple Columns,Xts,Rolling Computation,如何在单独的回归中,以y1为因变量,以y2、y3等为自变量进行多重滚动回归: 见下例: library(xts) df=data.frame(y1=rnorm(300),y2=rnorm(300),y3=rnorm(300),y4=rnorm(300),y5=rnorm(300),y6=rnorm(300)) data <- xts(df, Sys.Date()-300:1) 但是现在我想测试y1~y3、y1~y4等等。我有一个总共120列的数据集 下面的帖子很接近,但我无法重现编码:
library(xts)
df=data.frame(y1=rnorm(300),y2=rnorm(300),y3=rnorm(300),y4=rnorm(300),y5=rnorm(300),y6=rnorm(300))
data <- xts(df, Sys.Date()-300:1)
但是现在我想测试y1~y3、y1~y4等等。我有一个总共120列的数据集
下面的帖子很接近,但我无法重现编码:
如何调整rollingb以完成工作
@Yannis Vassiliadis提供的解决方案是有效的,但是接下来的问题是如何将所有系数beta很好地取消列在矩阵中
/data.frame与xts中的相应日期一致?这个怎么样
roll_lm <- lapply(2:ncol(data), function(x) rollapply(zoo(data[, c(1, x)]),
width=20,
FUN = function(Z)
{ Z = as.data.frame(Z);
t = lm(formula=Z[, 1]~Z[, 2]);
return(t$coef)
},
by.column=FALSE, align="right"))
您可以使用purrr中的map沿y1~y2和y1~y3行构建公式列表。然后在lm中使用这些公式中的每一个
取消上市的最佳方式是什么?我用的是输出,你可以用roll_lm,我想你的意思是namesroll_lm@M_Sunny,是的!你说得对,我在传输代码时忘了更新名称。有没有办法只提取日期为xts的data.frame中的系数?coefplot::multipotmodels,plot=FALSE
plot(rollingb)
roll_lm <- lapply(2:ncol(data), function(x) rollapply(zoo(data[, c(1, x)]),
width=20,
FUN = function(Z)
{ Z = as.data.frame(Z);
t = lm(formula=Z[, 1]~Z[, 2]);
return(t$coef)
},
by.column=FALSE, align="right"))
names(roll_lm) <- paste0("y1~y",2:6)
roll_lm2 <- plyr::rbind.fill.matrix(roll_lm)
roll_lm3 <- cbind(roll_lm2, rep(names(roll_lm), each = 281)) # just to keep track of the names
# these are the packages we are using
library(purrr)
library(useful)
library(coefplot)
# here's your data
df=data.frame(y1=rnorm(300),y2=rnorm(300),y3=rnorm(300),y4=rnorm(300),y5=rnorm(300),y6=rnorm(300))
# keep track of the response variable
response <- 'y1'
# we'll assume all the other variables are predictors
predictors <- setdiff(names(df), response)
# fit a bunch of models
models <- predictors %>%
# for each predictor build a formula like y1 ~ y2
map(~build.formula(response, .x)) %>%
# for each of those fit a model
map(lm, data=df)
# plot them for good measure
multiplot(models)