inst/doc/multiMatch_vignette.R

## ----data1, eval=FALSE--------------------------------------------------------
#  library(matchMulti)
#  
#  data(catholic_schools)
#  
#  catholic_schools$sectorf <- factor(catholic_schools$sector,
#                              label=c("Public", "Catholic"))
#  
#  #Number of Treated Schools
#  length(table(catholic_schools$school[
#    catholic_schools$sector==1]))
#  
#  #Number of Controls Schools
#  length(table(catholic_schools$school[
#    catholic_schools$sector==0]))
#  

## ----plot, eval=FALSE---------------------------------------------------------
#  # Create Discrete Measures from Continuous Covariates
#  library(ggplot2)
#  
#  # A Boxplot for the size of the school
#  ggplot(catholic_schools, aes(x=sectorf, y=size,
#                               fill=sectorf)) +
#    geom_boxplot() + guides(fill="none") +
#    xlab("") + ylab("School Enrollment")

## ----plot2, eval=FALSE--------------------------------------------------------
#  ggplot(catholic_schools, aes(x=sectorf, y=female_mean,
#                               fill=sectorf)) +
#    geom_boxplot() + guides(fill="none") +
#    xlab("") + ylab("Percentage of Female Students")

## ----trim, eval=FALSE---------------------------------------------------------
#  library(dplyr)
#  summary(catholic_schools$female_mean)
#  summary(catholic_schools$female_mean[
#    catholic_schools$sector==1])
#  summary(catholic_schools$female_mean[
#    catholic_schools$sector==0])
#  catholic_schools <- catholic_schools %>%
#    filter(female_mean>.30, female_mean<.75)
#  summary(catholic_schools$female_mean)

## ----bal, eval=FALSE----------------------------------------------------------
#  student.cov <- c('minority','female','ses')
#  school.cov <- c('minority_mean', 'female_mean', 'size',
#                  'acad', 'discrm', 'ses_mean')
#  all.cov <- c('minority','female','ses','minority_mean',
#               'female_mean', 'size', 'acad',
#               'discrm', 'ses_mean')
#  
#  #look at balance on students before matching
#  balanceTable(catholic_schools[c(all.cov,'sector')],
#               treatment = 'sector')

## ----no_stu, eval=FALSE-------------------------------------------------------
#  match.simple <- matchMulti(catholic_schools,
#                             treatment = 'sector',
#                             school.id = 'school',
#                             match.students = FALSE,
#                             student.vars = student.cov,
#                             verbose=TRUE)
#  
#  # Check Balance
#  bal.tab <- balanceMulti(match.simple,
#                          student.cov = student.cov,
#                          school.cov = school.cov)
#  
#  out <- cbind(bal.tab$schools[,3], bal.tab$schools[,6])
#  colnames(out) <- c("S.Diff Before", "S.Diff After")
#  round(out, 3)

## ----no_stu2, eval=FALSE------------------------------------------------------
#  match.out <- matchMulti(catholic_schools,
#                          treatment = 'sector',
#                          school.id = 'school',
#                          match.students = TRUE,
#                          student.vars = student.cov)
#  # Check Balance
#  bal.tab.stu <- balanceMulti(match.out,
#                              student.cov = student.cov,
#                              school.cov = school.cov)

## ----cut, eval=FALSE----------------------------------------------------------
#  # Create Discrete Measures from Continuous Covariates
#  catholic_schools$acad_cut <- cut(catholic_schools$acad, 6)
#  catholic_schools$size_cut <- cut(catholic_schools$size, 6)
#  catholic_schools$discrm_cut <- cut(catholic_schools$discrm, 6)
#  catholic_schools$ses_cut <- cut(catholic_schools$ses_mean, 6)

## ----fine.bal, eval=FALSE-----------------------------------------------------
#  # Match with Fine Balance
#  match.fb <- matchMulti(catholic_schools,
#                         treatment = 'sector',
#                         school.id = 'school',
#                         match.students = TRUE,
#                         verbose=TRUE,
#                         student.vars = student.cov,
#                         school.fb = list(c('size_cut',
#                                            'acad_cut',
#                                            'discrm_cut',
#                                            'ses_cut')))
#  # Balance Check
#  bal.tab.fb <- balanceMulti(match.fb,
#                             student.cov = student.cov,
#                             school.cov)

## ----match.fb2, eval=FALSE----------------------------------------------------
#  match.fb2 <- rematchSchools(match.fb,
#                              catholic_schools,
#                              school.fb = list(c('acad_cut',
#                                                 'discrm_cut'),
#                                               c('size_cut',
#                                                 'acad_cut',
#                                                 'discrm_cut',
#                                                 'ses_cut')))
#  
#  
#  bal.tab3 <- balanceMulti(match.fb2,
#                           student.cov = student.cov,
#                           school.cov)

## ----opt_subset, eval=FALSE---------------------------------------------------
#  # Trim Schools
#  # How many treated schools are left after
#  # dropping single-gender schools?
#  length(table(catholic_schools$school[
#    catholic_schools$sector==1]))
#  
#  match.fb4 <- rematchSchools(match.fb,
#                              catholic_schools,
#                              school.fb = list(c('acad_cut',
#                                                 'discrm_cut'),
#                                               c('size_cut',
#                                                 'acad_cut',
#                                                  'discrm_cut',
#                                                 'ses_cut')),
#                              keep.target = 10,
#                              tol = 0.1)
#  
#  bal.tab4 <- balanceMulti(match.fb4,
#                           student.cov = student.cov,
#                          school.cov = c(school.cov))
#  

## ----hlm, eval=FALSE----------------------------------------------------------
#  #Use an HLM for Outcome Analysis
#  match.data <- as.data.frame(match.fb4$matched)
#  head(match.data)
#  library(nlme)
#  out <- lme(mathach ~ sector, random = ~ 1 |
#               pair.id/school, data=match.data)
#  summary(out)
#  

## ----randinf, eval=FALSE------------------------------------------------------
#  output.fb <- matchMultioutcome(match.fb4, out.name = "mathach",
#                                 schl_id_name = "school",
#                                 treat.name = "sector")

## ----sens1, eval=FALSE--------------------------------------------------------
#  #Compare to Less Balanced Match
#  matchMultisens(match.fb4, out.name = "mathach",
#            schl_id_name = "school",
#            treat.name = "sector")

## ----sens2, eval=FALSE--------------------------------------------------------
#  matchMultisens(match.fb, out.name = "mathach",
#            schl_id_name = "school",
#            treat.name = "sector")
#  

## ----sens3, eval=FALSE--------------------------------------------------------
#  matchMultisens(match.fb, out.name = "mathach",
#            schl_id_name = "school",
#            treat.name = "sector", Gamma=2.17)

Try the matchMulti package in your browser

Any scripts or data that you put into this service are public.

matchMulti documentation built on May 31, 2023, 9:13 p.m.