## Not run:
# ###
# ### Example: propensity score matching
# ###
#
# ##Load the LaLonde data
# data(LaLonde)
# ## Estimate CBPS
# fit <- CBPS(treat ~ age + educ + re75 + re74 + I(re75==0) + I(re74==0),
# data = LaLonde, ATT = TRUE)
# summary(fit)
# ## matching via MatchIt: one to one nearest neighbor with replacement
# library(MatchIt)
# m.out <- matchit(treat ~ fitted(fit), method = "nearest", data = LaLonde,
# replace = TRUE)
#
#
# ### Example: propensity score weighting
# ###
# ## Simulation from Kang and Shafer (2007).
# set.seed(123456)
# n <- 500
# X <- mvrnorm(n, mu = rep(0, 4), Sigma = diag(4))
# prop <- 1 / (1 + exp(X[,1] - 0.5 * X[,2] + 0.25*X[,3] + 0.1 * X[,4]))
# treat <- rbinom(n, 1, prop)
# y <- 210 + 27.4*X[,1] + 13.7*X[,2] + 13.7*X[,3] + 13.7*X[,4] + rnorm(n)
#
# ##Estimate CBPS with a misspecificied model
# X.mis <- cbind(exp(X[,1]/2), X[,2]*(1+exp(X[,1]))^(-1)+10, (X[,1]*X[,3]/25+.6)^3,
# (X[,2]+X[,4]+20)^2)
# fit1 <- CBPS(treat ~ X.mis, ATT = 0)
# summary(fit1)
#
# ## Horwitz-Thompson estimate
# mean(treat*y/fit1$fitted.values)
# ## Inverse propensity score weighting
# sum(treat*y/fit1$fitted.values)/sum(treat/fit1$fitted.values)
#
# rm(list=c("y","X","prop","treat","n","X.mis","fit1"))
#
# ### Example: Continuous Treatment
# set.seed(123456)
# n <- 1000
# X <- mvrnorm(n, mu = rep(0,2), Sigma = diag(2))
# beta <- rnorm(ncol(X)+1, sd = 1)
# treat <- cbind(1,X)%*%beta + rnorm(n, sd = 5)
#
# treat.effect <- 1
# effect.beta <- rnorm(ncol(X))
# y <- rbinom(n, 1, (1 + exp(mean(-treat.effect*treat - X%*%effect.beta)))^-1)
#
# fit2 <- CBPS(treat ~ X)
# summary(fit2)
# summary(glm(y ~ treat + X, weights = fit2$weights, family = "quasibinomial"))
#
# rm(list=c("n","X","beta","treat","treat.effect","effect.beta","y","fit2"))
#
# ### Example: Improved CBPS from Fan et al
# set.seed(123456)
# n <- 500
# X <- mvrnorm(n, mu = rep(0, 4), Sigma = diag(4))
# prop <- 1 / (1 + exp(X[,1] - 0.5 * X[,2] + 0.25*X[,3] + 0.1 * X[,4]))
# treat <- rbinom(n, 1, prop)
# y1 <- 210 + 27.4*X[,1] + 13.7*X[,2] + 13.7*X[,3] + 13.7*X[,4] + rnorm(n)
# y0 <- 210 + 13.7*X[,2] + 13.7*X[,3] + 13.7*X[,4] + rnorm(n)
# ##Estimate CBPS with a misspecificied model
# X.mis <- cbind(exp(X[,1]/2), X[,2]*(1+exp(X[,1]))^(-1)+10, (X[,1]*X[,3]/25+.6)^3,
# (X[,2]+X[,4]+20)^2)
# fit1 <- CBPS(treat ~ X.mis,baseline.formula=~X.mis[,2:4],diff.formula=~X.mis[,1], ATT = FALSE)
# summary(fit1)
# ## End(Not run)
Run the code above in your browser using DataLab