将AR(1)项添加到R中的多个回归中

问题描述 投票:1回答:1

我正在运行503个单独的回归,每个回归都有一个单独的因变量,有3个独立变量和1个AR(1)项。

数据:

# fake data 
set.seed(333)
df <- data.frame(seq(as.Date("2017/1/1"), as.Date("2017/2/19"), "days"),
                 matrix(runif(50*506), nrow = 50, ncol = 506))

names(df) <- c("Date", paste0("var", 1:503), c("mktrf", "smb", "hml"))

我使用名为lagpad的函数创建AR(1)过程如下:

lagpad <- function(x, k=1) {
  i<-is.vector(x)
  if(is.vector(x)) x<-matrix(x) else x<-matrix(x,nrow(x))
  if(k>0) {
    x <- rbind(matrix(rep(NA, k*ncol(x)),ncol=ncol(x)), matrix(x[1:(nrow(x)-k),], ncol=ncol(x)))
  }
  else {
    x <- rbind(matrix(x[(-k+1):(nrow(x)),], ncol=ncol(x)),matrix(rep(NA, -k*ncol(x)),ncol=ncol(x)))
  }
  if(i) x[1:length(x)] else x
}

然后我存储我的必要变量用于回归:

  1. 所有的dep var x = df[,505:507]
  2. 所有的indep var y <- df[,2:504]
  3. AR(1)过程 y_lag <- lagpad(y, -1)
  4. 适合所有型号 list_models_AR= lapply(y, function(y) with(x, lm(y ~ mktrf + smb + hml + y_lag, na.action = na.exclude)))

在这种情况下,我无法弄清楚如何使用lapply,因为需要调用y_lag的多个组件,每个回归一个。

r linear-regression lapply lm autoregressive-models
1个回答
1
投票

我不确定你的滞后期,它似乎实际上是下一个y列。如果是这样,您可以创建502模型,如下所示:

list_models_AR= lapply(1:(ncol(y)-1), function(i) lm(y[,i]~x[,1] +  x[,2] + x[,3] +y[,i+1], na.action=na.exclude))
© www.soinside.com 2019 - 2024. All rights reserved.