我试图对多个滞后的自变量进行线性回归。我试图自动化指定滞后数量的部分,即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)
在运行上述功能时,我收到一条错误消息,指出:
可变长度不同。
我不知道如何解决这个错误?在R中是否存在与Python相同的lambda函数?
答案 0 :(得分:1)
让我们试试这段代码:
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 = "+")))))
}
请不要忘记告诉我们是否有效:)