【发布时间】:2011-09-22 17:59:06
【问题描述】:
我正在运行多个单变量回归,例如这个可重现的示例:
require(dynlm)
data(USeconomic)
US<-USeconomic
vars<-colnames(US)[-2]
a<-lapply(colnames(US),function(x) dynlm(log(GNP)~get(x),data=US))
a 包含 3 个单变量回归的列表。假设现在我想以 3 个滞后运行相同的回归:l<-c(0,1,4) 其中 0 当然是我已经得到的情况。有没有办法直接使用向量l,比如
# this did not work for me, I obtain multivariate regressions including all lags at once
lapply(colnames(US),function(x) dynlm(log(GNP)~L(get(x),l),data=US),l=l)
这不起作用后,我尝试了另一种方法并添加到以下向量:
lagged_vars <- paste("L(",rep(vars,each=3),",",l,")",sep="")
得到:
[1] "L(log(M1),0)" "L(log(M1),1)" "L(log(M1),4)" "L(rs,0)" "L(rs,1)"
[6] "L(rs,4)" "L(rl,0)" "L(rl,1)" "L(rl,4)"
不幸的是,我无法使用新的字符向量运行它,get() 没有帮助。我不明白为什么它适用于vars,但不适用于lagged_vars,它们都是字符向量。
注意,L() 语法来自 dynlm 包。
附带问题:如果我只打印回归结果中的系数仍然标记为 get(x) - 我该如何更改它?
i,j 循环可能是可能的解决方案,但我宁愿使用 lapply 或这个系列中的其他东西......
编辑:
as.formula 不能与来自dynlm 的L() 一起使用。我收到此错误消息:
merge.zoo(log(GNP), L(log(M1), 0), retclass= "list", all = FALSE) 中的错误: 找不到函数“L”
编辑: 找到一个interesting post bei Achim Zeileis 指代这个问题。
【问题讨论】:
标签: r formula regression lapply