Announcement

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

  • How to run a regression on matched data?

    Hello. My apologies as I am not very well acquainted with Stata. I have read through the manual and searched the internet extensively to answer my question, yet unfortunately to no avail.

    I am using the -psmatch2- command in order to conduct propensity score matching. i have run the first-stage of the propensity score matching using:

    Code:
    psmatch2 dummy N_dir Tenure Age N_nations lnMV CASH LEVERAGE VOL R_Ya TOBINQ, out(N_ACQ) common
    where dummy = 1 when there is at least one female board member, and 0 otherwise. The outcome variable relates to the number of acquisitions a firm undertakes in a given year.

    However, I cannot figure out for the life of me how to do the 2nd stage of the regression analysis, whereby I run a regression on my matched data.

    Any guidance would be heavily appreciated. Thank you.

  • #2
    you've done both stages, the "Difference" from psmatch2's output is the estimated treatment effect
    Code:
    display r(att)

    Comment


    • #3
      Originally posted by Øyvind Snilsberg View Post
      you've done both stages
      That's not quite true. Sometimes there may be a good reason to run a regression on the matched sample.

      Please see the sources cited in https://www.statalist.org/forums/for...opensity-score and https://www.statalist.org/forums/for...ion-covariates

      For sample Stata code, see appendix SA2 of DuGoff et al. (2014).
      David Radwin
      Senior Researcher, California Competes
      californiacompetes.org
      Pronouns: He/Him

      Comment


      • #4
        Under the hood, psmatch2 does the trick. However, it is possible as far as I remember from my matching days to use other parametric models (e.g., Poisson) on a matched sample.

        Comment


        • #5
          Originally posted by David Radwin View Post
          That's not quite true. Sometimes there may be a good reason to run a regression on the matched sample.
          Thank you for pointing this out. I was hinting at psmatch2 and regress producing the same treatment effect estimate,
          Code:
          sysuse auto, clear
          psmatch2 foreign mpg rep78 ,out(price) common
          regress price foreign [aw=_weight]

          Comment


          • #6
            Originally posted by Øyvind Snilsberg View Post
            you've done both stages, the "Difference" from psmatch2's output is the estimated treatment effect
            Code:
            display r(att)
            Hi,

            I am also wondering if there is a way to calculate treatment effect for each individuals, which means I use all the covariates to conduct a propensity score matching instead of using command "if",
            and then use ttest over the subsamples. Well, I need treatment effect on treated or untreated for each observations is because I also need to use them for other purpose.

            I found following command in "help psmatch2" but I don't quite understand what "groupvars" means.
            > g att = . > egen g = group(groupvars) > levels g, local(gr) > qui foreach j of local gr { > psmatch2 treatvar varlist if g==`j', out(outvar) > replace att = r(att) if g==`j' > } > sum att Hope someone can help me out with this.
            Thanks^^

            Comment


            • #7
              Dear all,

              May I have a question regarding the PSM estimation? Specifically, it seems that PSM has been designed for panel data, but does it work well with cross-sectional data? If so, I would appreciate it if anyone here could send me some references.

              Thank you.

              Comment


              • #8
                If you can't find these references by searching for "matching," please follow FAQ Extra Advice 1.5 Starting a new thread: "If you have what is essentially a new and different question, it is generally best to start a new thread. A cross-reference to the previous thread is helpful if there is a relation."
                David Radwin
                Senior Researcher, California Competes
                californiacompetes.org
                Pronouns: He/Him

                Comment


                • #9
                  Originally posted by Øyvind Snilsberg View Post
                  Thank you for pointing this out. I was hinting at psmatch2 and regress producing the same treatment effect estimate,
                  Code:
                  sysuse auto, clear
                  psmatch2 foreign mpg rep78 ,out(price) common
                  regress price foreign [aw=_weight]
                  Dear Snilsberg, can we do it with an unmatched sample too, just like you mentioned for matched sample"regress price foreign [aw=_weight]"

                  Comment


                  • #10
                    yes, just drop the weights

                    Comment


                    • #11
                      Originally posted by Øyvind Snilsberg View Post
                      yes, just drop the weights
                      Kindly Sir if you don't mind provide an example for this end

                      Comment


                      • #12
                        Code:
                        sysuse auto, clear
                        
                        *regress price on foreign in unmatched sample
                        regress price foreign 
                        
                        *regress price on foreign in matched (on mpg and rep78) sample
                        psmatch2 foreign mpg rep78
                        regress price foreign [aw=_weight]
                        
                        *alternatively
                        psmatch2 foreign mpg rep78, out(price)

                        Comment


                        • #13
                          Originally posted by Øyvind Snilsberg View Post
                          Code:
                          sysuse auto, clear
                          
                          *regress price on foreign in unmatched sample
                          regress price foreign
                          
                          *regress price on foreign in matched (on mpg and rep78) sample
                          psmatch2 foreign mpg rep78
                          regress price foreign [aw=_weight]
                          
                          *alternatively
                          psmatch2 foreign mpg rep78, out(price)
                          I got it,
                          Thank You Dear Snilsberg

                          Comment


                          • #14
                            Originally posted by Øyvind Snilsberg View Post
                            Code:
                            sysuse auto, clear
                            
                            *regress price on foreign in unmatched sample
                            regress price foreign
                            
                            *regress price on foreign in matched (on mpg and rep78) sample
                            psmatch2 foreign mpg rep78
                            regress price foreign [aw=_weight]
                            
                            *alternatively
                            psmatch2 foreign mpg rep78, out(price)
                            Dear Snilsberg, thanks for your comments and useful commends, Snilsberg, how we matched the sample based on a variable, although I have tried the code ematch and biasadj, but it didn't work.

                            Comment

                            Working...
                            X