Zelig Packageでの後続のモデリングのために、一致したデータセット ( MatchIt Packageを使用して、観測が傾向スコアで一致している場合) のリストを取得したいと考えています。
この例では、(t1
とt2
)、2 つの独立変数 (x1
とx2
)、および結果 ( y1
) で照合する 2 つの処理があります。
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 に作業させるにはどうすればよいですか?