2014-12-29 1 views
2

일치하는 패키지를 사용하여 성향 악센트와 일치하는 데이터 세트를 얻으려고합니다. 그것은 일대일 매칭을 할 때 잘 작동하지만 1 대 2 매칭을 시도 할 때는 그렇지 않습니다. 나는이 문제를 해결하기 위해 다양한 방법을 시도했습니다R : 일치하는 패키지에서 일치하는 데이터 세트 얻기 - 쉽지 않음

> require(Matching) 
> data(lalonde) 
> # Estimate the propensity model 
> glm1 <- glm(treat~age + I(age^2) + educ + I(educ^2) + black + 
+     hisp + married + nodegr + re74 + I(re74^2) + re75 + I(re75^2) + 
+     u74 + u75, family=binomial, data=lalonde) 
> 
> #save data objects 
> X <- glm1$fitted 
> Y <- lalonde$re78 
> Tr <- lalonde$treat 
> 
> # one-to-two matching with replacement 
> rr <- Match(Y=NULL, Tr=Tr, X=X, M=2, ties=F, caliper=0.01); 
> summary(rr) 

Estimate... 0 
SE......... 0 
T-stat..... NaN 
p.val...... NA 

Original number of observations.............. 445 
Original number of treated obs............... 185 
Matched number of observations............... 97 
Matched number of observations (unweighted). 194 

Caliper (SDs)........................................ 0.01 
Number of obs dropped by 'exact' or 'caliper' 88 

> 
> #Obtain the matched data set 
> matched <- rbind(lalonde[rr$index.treated,], lalonde[rr$index.control,]) 
> 
> nrow(matched) 
[1] 388 

:

여기에 코드를 간다. 내 목표는 하나의 컨트롤을 2 개의 컨트롤에 일치시킨 다음 전체 데이터 세트에서 이러한 개체를 얻는 것입니다. 필자는 웹 및 패키지 작성자 문서를 아무런 성공없이 검색했습니다. 불행히도 지금까지 찾은 모든 예제는 1 : 1로 일치하거나 일치하지 않습니다.

정말 도움이됩니다. 당신이 index.treated의 값이는 caliper 거리에 일치하는 항목을 찾을 수있는 그 처리 경우에, 시간의 M 수를 반복 있습니다 경우

답변

1

이 실제로 재구성하는 것이 매우 간단합니다.

따라서, index.control의 처음 두 요소는 index.treated의 처음 두 요소에 매핑되는 사례의 색인 번호입니다. 당신은 전체 목록을 검색하고 다음과 같이 처리하는 경우 당 하나 개의 행을 구성 할 수 있습니다 :

dfTC = data.frame(idxTreated = rr$index.treated, idxControl = rr$index.control, 
        numControl = factor(rep(1:2), labels = paste0("Control", 1:2))) 
dfTCWide = reshape2::dcast(dfTC, idxTreated ~ numControl, 
          value.var = "idxControl") 

이 작동하는지 확인할 수 있습니다

> head(dfTCWide) 
    idxTreated Control1 Control2 
1   1  271  386 
2   3  216  259 
3   4  254  359 
4   5  230  255 
5   6  188  220 
6   8  242  279 
+0

이 문제를 해결하기 위해 당신의 시간을 주셔서 감사합니다. 감사. 또한 패키지 작성자가 이러한 작업을보다 직접적으로 진행할 수 있다고 주장 할 수도 있습니다. 결국이 문제를 고려하여 그물에 수많은 스레드가 있습니다. MatchIt 패키지에는 이것에 대한 좋은 해결책이 있습니다 ... 다시 fg nu에게 감사드립니다. –