R 多滞后自变量线性回归

R 多滞后自变量线性回归,r,lm,R,Lm,我试图对多重滞后自变量进行线性回归。我正在尝试将指定滞后数(即1、3、5等)的部分自动化,这将自动更新下面的代码,并提供前一步中定义的滞后结果。 我的代码没有任何“滞后”自动操作,如下所示。在本例中,我指定了2个滞后: base::summary(stats::lm(ABX_2000$Returns ~ stats::lag(as.ts(ABX_2000$Returns),1) + stats::lag(as.ts(ABX_2000$

我试图对多重滞后自变量进行线性回归。我正在尝试将指定滞后数(即1、3、5等)的部分自动化,这将自动更新下面的代码,并提供前一步中定义的滞后结果。 我的代码没有任何“滞后”自动操作,如下所示。在本例中,我指定了2个滞后:

base::summary(stats::lm(ABX_2000$Returns ~ stats::lag(as.ts(ABX_2000$Returns),1) + 
                              stats::lag(as.ts(ABX_2000$Returns),2)))
这个代码有效

我定义了一个函数,如下所示:

# function to accept multiple lags
lm_lags_multiple <- function(ds,lags=2){
  base::summary(stats::lm(ds ~ paste0("stats::lag(as.ts(ds,k=(", 1:lags, ")))", collapse = " + ")))
}
# run function
lm_lags_multiple(ds=ABX_2000$Returns,lags=2)
#接受多个延迟的函数
lm_lags_multiple让我们试试下面的代码:

lm_lags_multiple <- function(ds,lags=2){
  lst <- list()
  for (i in 1:lags){
    lst[i] <- paste0("stats::lag(as.ts(ABX_2000$Returns),",i,")")
  }
  base::summary(stats::lm(as.formula(paste0("ds ~",paste(Reduce(c,lst), collapse = "+")))))
}

lm_lags_倍数滞后向量比原始向量短滞后量。您可能需要在滞后序列的开头填入零,以使它们具有相同的长度。Hello@AndrewGustar。我对R很陌生,不知道如何解决这个问题。paste0函数[paste0”(“stats::lag(as.ts(ds,k=(“,1:lags,”)))”,collapse=“+”)返回[1]“stats::lag(as.ts(ds,k=(1)))+stats::lag(as.ts(ds,k=(2))”。将此结果指定给变量会导致相同的错误。谢谢你的帮助。我必须解决另一个问题,但很高兴知道解决办法