1# Replication of Guido Imbens lalonde_exper_04feb2.m file
2# See http://elsa.berkeley.edu/~imbens/estimators.shtml
3# with balance checks
4
5suppressMessages(library(Matching))
6suppressWarnings(RNGversion("3.5.3"))
7
8data(lalonde)
9
10X  <- lalonde$age
11Z  <- X;
12V  <- lalonde$educ;
13Y  <- lalonde$re78/1000;
14T  <- lalonde$treat;
15w.educ=exp((lalonde$educ-10.1)/2);
16
17res  <- matrix(nrow=1,ncol=3)
18
19rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,
20             sample=TRUE);
21summary(rr)
22
23res[1,]  <- cbind(1,rr$est,rr$se)
24
25
26X  <- cbind(lalonde$age, lalonde$educ, lalonde$re74, lalonde$re75)
27rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,
28             sample=TRUE);
29summary(rr)
30
31res  <- rbind(res,cbind(2,rr$est,rr$se))
32
33rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=3,BiasAdj=FALSE,Weight=1,Var.calc=0,
34             sample=TRUE);
35summary(rr)
36res  <- rbind(res,cbind(4,rr$est,rr$se))
37
38rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATT",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,
39             sample=TRUE);
40summary(rr)
41res  <- rbind(res,cbind(5,rr$est,rr$se))
42
43rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATC",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,
44             sample=TRUE);
45summary(rr)
46res  <- rbind(res,cbind(6,rr$est,rr$se))
47
48rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=2,Var.calc=0,
49             sample=TRUE);
50summary(rr)
51res  <- rbind(res,cbind(7,rr$est,rr$se))
52
53rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=3,Var.calc=0,
54             Weight.matrix=diag(4), sample=TRUE);
55summary(rr)
56res  <- rbind(res,cbind(8,rr$est,rr$se))
57
58
59rr  <- Match(Y=Y,Tr=T,X=X,Z=X,V=V,estimand="ATE",M=1,BiasAdj=TRUE,Weight=1,Var.calc=0,
60             sample=TRUE);
61summary(rr)
62res  <- rbind(res,cbind(9,rr$est,rr$se))
63
64Z  <- cbind(lalonde$married, lalonde$age)
65rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=TRUE,Weight=1,Var.calc=0,sample=TRUE);
66summary(rr)
67res  <- rbind(res,cbind(10,rr$est,rr$se))
68
69V  <- lalonde$age
70rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,exact=TRUE,
71             sample=TRUE);
72summary(rr)
73res  <- rbind(res,cbind(11,rr$est,rr$se))
74
75V  <- cbind(lalonde$married, lalonde$u74)
76rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,exact=TRUE,
77             sample=TRUE);
78summary(rr)
79res  <- rbind(res,cbind(12,rr$est,rr$se))
80
81rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,sample=FALSE);
82summary(rr)
83res  <- rbind(res,cbind(13,rr$est,rr$se))
84
85rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=3,sample=TRUE);
86summary(rr)
87res  <- rbind(res,cbind(14,rr$est,rr$se))
88
89rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,estimand="ATE",M=1,BiasAdj=FALSE,Weight=1,Var.calc=0,
90             weights=w.educ,sample=TRUE);
91summary(rr)
92res  <- rbind(res,cbind(15,rr$est,rr$se))
93
94
95V  <- lalonde$age
96Z  <- cbind(lalonde$married, lalonde$age)
97X  <- cbind(lalonde$age, lalonde$educ, lalonde$re74, lalonde$re75)
98weight  <- w.educ
99Weight.matrix  <- diag(4)
100
101rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,
102             sample=FALSE, M=3, estimand="ATT", BiasAdj=TRUE, Weight=3, exact=TRUE,Var.calc=3,
103             weights=w.educ, Weight.matrix=Weight.matrix);
104summary(rr)
105res  <- rbind(res,cbind(75,rr$est,rr$se))
106
107
108V  <- lalonde$married;
109Z  <- cbind(lalonde$age, lalonde$re75);
110X  <- cbind(lalonde$age, lalonde$educ, lalonde$re74);
111
112rr  <- Match(Y=Y,Tr=T,X=X,Z=Z,V=V,
113             sample=TRUE, M=3, estimand="ATE", BiasAdj=TRUE, Weight=2, exact=TRUE,Var.calc=0,
114             weights=w.educ);
115summary(rr)
116res  <- rbind(res,cbind(76,rr$est,rr$se))
117
118cat("\nResults:\n")
119print(res)
120
121