我想获取匹配数据集的列表(使用MatchIt Package将观察结果与他们的倾向得分进行匹配)用于Zelig Package中的后续建模。
在此示例中,我将在 (t1
和t2
)、两个自变量 (x1
和x2
) 和一个结果 ( y1
) 上匹配两个处理。
library(Zelig)
library(MatchIt)
library(plyr)
d1 <- data.frame(y1 = rbinom(100, 1, .5),
x1 = runif(100),
x2 = runif(100),
t1 = rbinom(100, 1, .5),
t2 = rbinom(100, 1, .5))
首先,我将列出匹配的数据框:
list.dfs <- llply(c("t1", "t2"),
function(i)
matchit(as.formula(paste0(i, "~ x1 + x2")), data= d1))
只是一个检查 - 每个元素list.dfs
都有正确的类:
class(list.dfs[[1]])
[1] "matchit"
接下来,我想从这个列表中获取元素匹配的数据框,并制作一个 Zelig 模型对象列表
list.mods <- llply(list.dfs,
function(i)
zelig(y1 ~ x1 + x2, model = "logit", data = match.data(i)))
这提供了以下错误:
Error in match.data(i) : object 'i' not found
但这显然与列表有关,因为如果我对 的单个元素执行相同的功能,一切正常list.dfs
:
class(zelig(y1 ~ x1 + x2, model = "logit", data = match.data(list.dfs[[1]])))
[1] "zelig" "logit"
我错过了什么?如何让 Zelig 处理此列表中的单独项目?