Giorgio Garziano
2015-Oct-02 12:41 UTC
[R] problem of Mahalanobis distance matching using MatchIT
About the "distance = NA" issue, please see if this comment helps: https://lists.gking.harvard.edu/pipermail/matchit/2011-January/000174.html Furthermore, the Mahalanobis NA distance values are hard-wired in the code, file matchit.R: ## no distance for full mahalanobis matching if(fn1=="distance2mahalanobis"){ distance[1:length(distance)] <- NA class(out2) <- c("matchit.mahalanobis","matchit") } About the resulting MDM matrix, I was able to create some "unmatching" by changing T1 so that its values do not always exactly map 1:1 to a pair of values each one taken from the distribution values set control and treated (x1_.., x2_..). n<-100 set.seed(1023) x1_contr<-runif(n,0,5) x2_contr<-runif(n,0,5) x_contr<-cbind(x1=x1_contr,x2=x2_contr) x1_treat<-runif(n,1,6) x2_treat<-runif(n,1,6) x_treat<-cbind(x1=x1_treat,x2=x2_treat) T1<-c(rep(0,n/2),rep(1,3*n/2)) X.all<-rbind(x_contr,x_treat) my.data<-data.frame(T1,X.all) rownames(my.data)<-paste("ID",1:dim(my.data)[1]) library(MatchIt) mdm.out<-matchit(T1~x1+x2,data=my.data, method="nearest", distance="mahalanobis", mahvars=c("x1","x2"), caliper=0.15, replace=FALSE) Sample sizes: Control Treated All 50 150 Matched 50 50 Unmatched 0 100 Discarded 0 0 Hope this helps. -- GG [[alternative HTML version deleted]]