2014-04-24 9 views
2

Zelig Package에서 후속 모델링을 위해 일치하는 데이터 세트 (성향 점수가 일치하는 곳, MatchIt Package을 사용)가 필요합니다.Zelig가리스트 작업을 할 수있게하기

이 예에서

(t1t2)에 내가 일치하는 것 두 가지 치료, 두 개의 독립 변수 (x1x2) 및 결과 (y1)이 있습니다.

class(list.dfs[[1]]) 

[1] "matchit"

: - list.dfs의 각 요소가 올바른 클래스가

list.dfs <- llply(c("t1", "t2"), 
        function(i) 
        matchit(as.formula(paste0(i, "~ x1 + x2")), data= d1)) 

그냥 체크 :

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)) 

첫째, 일치하는 데이터 프레임의 목록을 만들 수 있습니다

다음으로이 목록에서 요소 일치 데이터 프레임을 가져 와서 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가 작업하게하려면 어떻게해야합니까?

답변

2

이름으로 data 값을 찾는 zelig 안에 이상한 물건이있는 것 같습니다. 명시 적 루프를 수행해야하는 것처럼 보입니다.

list.mods <- list() 
for(i in seq_along(list.dfs)) { 
    list.mods[[i]] <- zelig(y1 ~ x1 + x2, model = "logit", data = match.data(list.dfs[[i]])) 
} 
list.mods