Announcement

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

  • Propensity score matching on country

    Hello together,

    I have a paneldata set and I want to run propensity score matching and restrict/force matching on region in order to ensure that firms only become matched if they are located in countries that have a comparable score for the control variables (Treatment independent). But Stata gives me the following error:

    Code:
    . teffects psmatch (Inno) (dum_ICT firmage l1 c3 c6 a4a a1, probit) if a1==27&10
    there is only one level in treatment variable dum_ICT; this is not allowed
    r(459);
    I would really appreciate if one of you experts can help me. Thank you very much!

    Kind regards
    Dominik

  • #2
    I believe Stata is just telling you the truth, nothing but the truth.

    It seems the selected matching conditions provided only one treatment. To tackle this wish, one must provide matching conditions for both levels.

    Best regards,

    Marcos

    Comment


    • #3
      Dear Marcos Almeida, thank you for your respond.
      But how exactly can I approach it to "provide matching conditions for both levels"?
      As Stata told me, there is only one level in treatment variable and it is not possible to type in 2 treatment variables.
      Sorry for my stupid questions, I am new in working with Stata but I would really appreciate your help in order to learn.
      Thanks a lot. Every hint is highly welcome in order to solve my problem.

      I thought I could do that with the if function, but apparantly it doesn't work. a1 is my country variable and dum_ICT my treatment variable.

      Kind regards
      Dominik
      Last edited by Dominik Miksch; 26 May 2019, 10:51.

      Comment


      • #4
        We are not seeing data at all. That said , if there is only one treatment group under the “if” clause, Stata (and I guess whatever statistical package) cannot provide matching for observations which come from a non-existent group.
        Best regards,

        Marcos

        Comment


        • #5
          Dear Marcos Almeida,

          That is true, but I cannot include 2 treatment groups, as you can see here:
          Code:
           . teffects psmatch (Inno) (dum_ICT firmage l1 c3 c6 a4a a1) if a1==27&13&23
          there is only one level in treatment variable dum_ICT; this is not allowed
          If I don't include the if command, it works:

          Code:
          . teffects psmatch (Inno) (dum_ICT a1 firmage l1 c3 c6 a4a )
          
          Treatment-effects estimation                   Number of obs      =      5,604
          Estimator      : propensity-score matching     Matches: requested =          1
          Outcome model  : matching                                     min =          1
          Treatment model: logit                                        max =          3
          ------------------------------------------------------------------------------
                       |              AI Robust
                  Inno |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
          -------------+----------------------------------------------------------------
          ATE          |
               dum_ICT |
             (1 vs 0)  |   .3174518   .0727051     4.37   0.000     .1749524    .4599513
          ------------------------------------------------------------------------------
          But this is not what I want. I want to use "forced matching" so as to ensure that firms become only matched if they are located in countries that have a comparable score for the control variables l1 c3 c6 a4a a1.

          Or let me try to explain it in other words: In order to obtain a credible estimate of the effect of ICT adoption I want assess these effect in contrast to those of a counterfactual: “what would have happened if the firm did not adopt ICT (which it actually did)?” For firms who adopted ICT, I have to compare the outcomes to firms that are of ‘the same type’(regaring l1 c3 c6 a4a a1) but did not adopt ICT. For example, if all large firms in my dataset adopted ICT and all small firms did not, then I cannot find counterfactuals from which I can infer an unbiased estimate of the impact of ICT adoption on innovation.

          Therefore my idea was first to make a summary statistics and see which countries are most similar in the variables you see below and than I want to include those in the if command for instance.

          My data look like this:


          Code:
             
          panelid year Inno dum_ICT firmage l1 c3 c6 a4a a1
          1 1 0 0 15 8 0 1 13 10
          1 2 1 1 20 19 0 1 . 10
          2 1 0 1 14 40 0 1 6 10
          2 2 1 1 18 22 0 1 . 10
          3 1 0 0 18 11 1 1 . 10
          3 2 0 1 18 100 1 1 5 10
          4 1 0 0 13 11 0 1 . 10
          4 2 1 0 18 14 0 1 . 10
          5 1 1 0 21 16 1 . . 10
          5 2 0 0 13 12 0 1 6 10
          6 1 0 0 17 12 0 1 6 10
          6 2 1 0 16 12 1 1 . 10
          7 1 0 0 16 8 1 1 . 10
          7 2 1 1 15 9 1 1 . 10

          And I did the Propensity Score matching in the following way: Statistics-->Treatment effects --> Continous outcomes --> Propensity Score Matching:
          Click image for larger version

Name:	PSM.PNG
Views:	1
Size:	22.3 KB
ID:	1500222




          I would be so greatful if you could help me with that.

          Kind regards
          Dominik
          Last edited by Dominik Miksch; 26 May 2019, 13:04.

          Comment


          • #6
            I fail to understand your point. If there is just one level with regards to the treatment group under the ‘if’ clause, as I remarked twice, we cannot match the covariates with the 2 levels. Sorry, but this is the furtherst I can go to explain my point of view.
            Best regards,

            Marcos

            Comment


            • #7
              Dear Marcos Almeida okay I think I got what you mean. It is simple not possible in Stata to do that? Because yes, there is only one level in the if clause as two are not allowed.

              But than I don't understand why Stata tells me there are no observations even though I tell Stata to use all countries which would make the if clause redundant?
              Code:
              . teffects psmatch (Inno) (dum_ICT l1 c3 c6 a4a a1) if a1==10-36
              no observations
              r(2000);
              Maybe I am failing because I am not able to tell Stata the correct command in the if clause.It would be really kind if one of you experts can tell me how I use the if clause correctly here if I, let's say, want to include countries 12 17 27 32.

              Last edited by Dominik Miksch; 27 May 2019, 02:13.

              Comment

              Working...
              X