Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Differences between Stata teffects psmatch and nnmatch?

    Hi, I am using Stata 13 to analyse some observational data and a treatment. I came across an abundance of possible ways to estimate treatment effects with Stata. Let me just show you two options below (excluding the popular psmatch2, pscore and attn etc.).
    Code:
     use "http://www.stata-press.com/data/r13/cattaneo2.dta", clear
    
    global treat mbsmoke
    global match mmarried mage medu fbaby
    global ylist bweight
    
    *Option 1: teffects psmatch
    teffects psmatch ($ylist) ($treat $match, logit), atet
    
    *Option 2: teffects nnmatch
    teffects nnmatch ($ylist $match) ($treat), atet
    I use the Cattaneo sample, which offers some material on the mother's habit to smoke (treatment), birth weight of a child (endogenous variable), and a few factors to match (here randomly selected marriage status of the mother, mother's age, and first baby). I always calculate the average treatment effect on the treated and match at least one nearest neighbour.

    I tried to specify the commands as similar as possible - but the outcomes differ a bit: -245.711 vs. -239.2433.

    I have a few questions: First and foremost, why do the results differ? When should one use psmatch and when nnmatch? And, why can I specify nnmatch to exactly match on some criteria (via
    ematch) and why is that not the case for psmatch?



    Crosspost Cross Validated: http://stats.stackexchange.com/quest...t364219_191733
    Recent post: In a simialr vein, I posted a related question at Statalist here: http://www.statalist.org/forums/foru...der-conditions

  • #2
    The differences are due to the underlying algorithms by which the "counterfactual" is established. A quick look at

    Code:
    help teffects
    Shows that psmatch is a "propensity-score matching" and nnmatch is a "nearest-neighbor match". For propensity scores, you are first estimating the propensity score (e.g., probability of treatment conditional on some set of variables) and then matching on the estimated probabilities. Or, as written on p. 296 of [TE] "Similarity between subjects is based on estimated treatment probabilities, known as propensity scores." For nearest neighbor matching (see p. 267 of [TE]) "Similarity between subjects is based on a weighted function of the covariates for each observation."

    Comment


    • #3
      Thank you! I merely assumed both were basically the same given the specification
      Code:
      nneighbor(#)
      But I have a better understanding what the difference between the two is now.

      But why can't one exactly match on certain criteria with
      Code:
      teffects psmatch
      When I read papers about propensity score matching, exact matches on certain criteria a often used.
      Last edited by Rachel Sleeps; 22 Jan 2016, 03:25.

      Comment


      • #4
        The "exact matching" is probably stratification on the covariates (e.g., estimating the propensity scores within levels or ranges of given covariate values). There are some examples of this in Murnane, R. J., & Willett, J. B. (2010). Methods matter: Improving causal inference in educational and social science research. New York City, NY: Oxford University Press. The book also has a lot of code examples archived on the UCLA statistics consulting group's website

        Comment


        • #5
          Thank you, Mr. Buchanan ! However, and as far as I unterstand, teffects psmatch leaves no options to stratify the propensity score estimation, and I can seem to tell teffects psmatch to use a priorly estimated propensity score as a basis. Any ideas?

          Comment


          • #6
            You would estimate the propensities manually for each value of the covariate you are stratifying on then you could combine them into a single variable and use that as the propensity score. The UCLA website has examples of how to do this the last time I checked.

            Comment


            • #7
              Ok, thank you! I will check it out.

              Comment


              • #8
                Originally posted by wbuchanan View Post
                You would estimate the propensities manually for each value of the covariate you are stratifying on then you could combine them into a single variable and use that as the propensity score. The UCLA website has examples of how to do this the last time I checked.
                Many thanks for your suggestion. I'm wondering how the propensity scores for each value of the covariate can be estimated.
                For instance, I'm using:
                pscore $treatment $xlist, pscore(myscore) blockid(myblock) comsup numblo(5) level(0.005)
                then get ATT by stratification matching using:
                atts $ylist $treatment $xlist, pscore(myscore) blockid(myblock) comsup boot reps(500) detail

                How shall I obtain the propensity scores as you suggested, please? Thank you very much.

                Comment

                Working...
                X