Announcement

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

  • Keeping Treated Units With a Certain Number of Before and After Periods

    For an estimator, I'm interested in keeping a certain set of treated units which have a given number of before and after treatment periods. If a unit only as one month of post-intervention data, that's much less helpful than a unit with 6 or 12 months (generally speaking), so I want users to be able to restrict their sample, when possible, to however many pre and post observations they choose. The following code gives you my real data, provided by the fine people at Github.



    Note that I use the labvars command from SSC, but this isn't integral here and can be commented out if you so choose.
    Code:
    * Basque Example
    loc int_time = 1975
    qui {
    import delim "https://raw.githubusercontent.com/SucreRouge/synth_control/master/basque.csv", clear
    
    
    
    
    *sysuse basque, clear
    replace regionname = "Pais Vasco" if regionname == "Basque Country (Pais Vasco)"
    labvars year gdpcap "Year" "ln(GDP per 100,000)"
    egen id = group(regionname), label(regionname) // makes a unique ID
    
    *drop if year < 1960
    xtset id year, y
    
    drop if id == 18
    
    
    g treated = 1 if id == 15 & year > = 1970
    
    replace treated = 1 if inlist(id,9) & year > = 1975
    
    replace treated = 0 if mi(treated)
    
    g rel = .
    
    qui levelsof id if treated ==1, l(states)
    
    foreach x of loc states {
        
    qui su year if treated ==1 & id ==`x'
    replace rel = year- r(min) if id ==`x'
        
    }
    
    keep if inlist(id,9,15,8)
    
    }
    Let's say for some silly reason, I'm only interested in keeping treated units with 20 years of pre intervention observations and 15 years post, dropping treated units that don't meet these restrictions. The code I've tried to do this is
    Code:
    loc before = -20
    
    loc after = 15
    
    qui levelsof id if !mi(rel), l(present)
    
    foreach l of loc present {
        
        su rel if id ==`l'
        
        cap as inrange(rel,`before',`after') if id ==`l'
            if _rc {
                
                drop if id ==`l'
            }
        }
    
    br
    but when we do this, we keep only Catalan, when what I want is to get rid of the Basque Country since its pre-intervention periods doesn't extend to -20.

    How might I solve this?

  • #2
    Can you have multiple treatments and do you care whether the years are consecutive? You are doing this across multiple panels, so its better to make use of temporary variables. Assuming a single switch from pre to post:

    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input int v1 str28 regionname int year float(gdpcap id treated)
    388 "Cataluna"             1955   3.54663  8 0
    389 "Cataluna"             1956  3.690446  8 0
    390 "Cataluna"             1957  3.826835  8 0
    391 "Cataluna"             1958  3.875678  8 0
    392 "Cataluna"             1959  3.921737  8 0
    393 "Cataluna"             1960 4.2417884  8 0
    394 "Cataluna"             1961 4.5753355  8 0
    395 "Cataluna"             1962  4.838047  8 0
    396 "Cataluna"             1963  5.081334  8 0
    397 "Cataluna"             1964  5.158098  8 0
    398 "Cataluna"             1965   5.22365  8 0
    399 "Cataluna"             1966  5.332477  8 0
    400 "Cataluna"             1967  5.429449  8 0
    401 "Cataluna"             1968  5.674379  8 0
    402 "Cataluna"             1969  5.915524  8 0
    403 "Cataluna"             1970  6.066838  8 0
    404 "Cataluna"             1971  6.227649  8 0
    405 "Cataluna"             1972   6.53906  8 0
    406 "Cataluna"             1973  6.837975  8 0
    407 "Cataluna"             1974  6.987361  8 0
    408 "Cataluna"             1975  7.124893  8 0
    409 "Cataluna"             1976   7.13539  8 0
    410 "Cataluna"             1977  7.142959  8 0
    411 "Cataluna"             1978  7.019351  8 0
    412 "Cataluna"             1979  7.010997  8 0
    413 "Cataluna"             1980  7.078835  8 0
    414 "Cataluna"             1981  7.182233  8 0
    415 "Cataluna"             1982  7.287204  8 0
    416 "Cataluna"             1983  7.397886  8 0
    417 "Cataluna"             1984   7.48429  8 0
    418 "Cataluna"             1985   7.56998  8 0
    419 "Cataluna"             1986  8.077692  8 0
    420 "Cataluna"             1987  8.583976  8 0
    421 "Cataluna"             1988  9.057412  8 0
    422 "Cataluna"             1989  9.525849  8 0
    423 "Cataluna"             1990  9.785062  8 0
    424 "Cataluna"             1991   10.0507  8 0
    425 "Cataluna"             1992  9.837903  8 0
    426 "Cataluna"             1993  9.625107  8 0
    427 "Cataluna"             1994 10.006427  8 0
    428 "Cataluna"             1995 10.339903  8 0
    429 "Cataluna"             1996 10.576263  8 0
    430 "Cataluna"             1997 11.045416  8 0
    431 "Comunidad Valenciana" 1955  2.575978  9 0
    432 "Comunidad Valenciana" 1956  2.738503  9 0
    433 "Comunidad Valenciana" 1957  2.899886  9 0
    434 "Comunidad Valenciana" 1958 2.9635105  9 0
    435 "Comunidad Valenciana" 1959  3.026207  9 0
    436 "Comunidad Valenciana" 1960  3.219294  9 0
    437 "Comunidad Valenciana" 1961  3.362468  9 0
    438 "Comunidad Valenciana" 1962   3.56998  9 0
    439 "Comunidad Valenciana" 1963   3.76521  9 0
    440 "Comunidad Valenciana" 1964  3.823693  9 0
    441 "Comunidad Valenciana" 1965  3.874179  9 0
    442 "Comunidad Valenciana" 1966  3.978149  9 0
    443 "Comunidad Valenciana" 1967 4.0734076  9 0
    444 "Comunidad Valenciana" 1968 4.2797775  9 0
    445 "Comunidad Valenciana" 1969 4.4862895  9 0
    446 "Comunidad Valenciana" 1970 4.6547413  9 0
    447 "Comunidad Valenciana" 1971  4.817124  9 0
    448 "Comunidad Valenciana" 1972  5.138889  9 0
    449 "Comunidad Valenciana" 1973  5.449372  9 0
    450 "Comunidad Valenciana" 1974  5.557983  9 0
    451 "Comunidad Valenciana" 1975  5.655955  9 1
    452 "Comunidad Valenciana" 1976  5.761354  9 1
    453 "Comunidad Valenciana" 1977   5.86104  9 1
    454 "Comunidad Valenciana" 1978  5.810911  9 1
    455 "Comunidad Valenciana" 1979  5.775493  9 1
    456 "Comunidad Valenciana" 1980  5.790988  9 1
    457 "Comunidad Valenciana" 1981  5.899672  9 1
    458 "Comunidad Valenciana" 1982  6.018138  9 1
    459 "Comunidad Valenciana" 1983  6.139817  9 1
    460 "Comunidad Valenciana" 1984  6.236861  9 1
    461 "Comunidad Valenciana" 1985  6.336118  9 1
    462 "Comunidad Valenciana" 1986   6.73936  9 1
    463 "Comunidad Valenciana" 1987  7.144387  9 1
    464 "Comunidad Valenciana" 1988  7.560697  9 1
    465 "Comunidad Valenciana" 1989  7.969151  9 1
    466 "Comunidad Valenciana" 1990  8.138389  9 1
    467 "Comunidad Valenciana" 1991  8.306198  9 1
    468 "Comunidad Valenciana" 1992  8.080548  9 1
    469 "Comunidad Valenciana" 1993  7.857041  9 1
    470 "Comunidad Valenciana" 1994  8.068409  9 1
    471 "Comunidad Valenciana" 1995  8.289061  9 1
    472 "Comunidad Valenciana" 1996  8.429734  9 1
    473 "Comunidad Valenciana" 1997  8.725365  9 1
    689 "Pais Vasco"           1955  3.853185 15 0
    690 "Pais Vasco"           1956  3.945658 15 0
    691 "Pais Vasco"           1957 4.0335617 15 0
    692 "Pais Vasco"           1958  4.023422 15 0
    693 "Pais Vasco"           1959  4.013782 15 0
    694 "Pais Vasco"           1960  4.285918 15 0
    695 "Pais Vasco"           1961  4.574336 15 0
    696 "Pais Vasco"           1962  4.898957 15 0
    697 "Pais Vasco"           1963  5.197015 15 0
    698 "Pais Vasco"           1964  5.338903 15 0
    699 "Pais Vasco"           1965  5.465153 15 0
    700 "Pais Vasco"           1966  5.545916 15 0
    701 "Pais Vasco"           1967  5.614896 15 0
    702 "Pais Vasco"           1968  5.852185 15 0
    703 "Pais Vasco"           1969  6.081406 15 0
    704 "Pais Vasco"           1970  6.170094 15 1
    705 "Pais Vasco"           1971  6.283633 15 1
    706 "Pais Vasco"           1972  6.555555 15 1
    707 "Pais Vasco"           1973  6.810769 15 1
    708 "Pais Vasco"           1974  7.105184 15 1
    709 "Pais Vasco"           1975  7.377892 15 1
    710 "Pais Vasco"           1976  7.232934 15 1
    711 "Pais Vasco"           1977  7.089831 15 1
    712 "Pais Vasco"           1978  6.786704 15 1
    713 "Pais Vasco"           1979  6.639817 15 1
    714 "Pais Vasco"           1980  6.562839 15 1
    715 "Pais Vasco"           1981  6.500785 15 1
    716 "Pais Vasco"           1982  6.545059 15 1
    717 "Pais Vasco"           1983   6.59533 15 1
    718 "Pais Vasco"           1984  6.761497 15 1
    719 "Pais Vasco"           1985   6.93716 15 1
    720 "Pais Vasco"           1986  7.332191 15 1
    721 "Pais Vasco"           1987  7.742788 15 1
    722 "Pais Vasco"           1988  8.120537 15 1
    723 "Pais Vasco"           1989  8.509711 15 1
    724 "Pais Vasco"           1990  8.776778 15 1
    725 "Pais Vasco"           1991  9.025279 15 1
    726 "Pais Vasco"           1992  8.873893 15 1
    727 "Pais Vasco"           1993  8.718224 15 1
    728 "Pais Vasco"           1994  9.018138 15 1
    729 "Pais Vasco"           1995  9.440874 15 1
    730 "Pais Vasco"           1996  9.686518 15 1
    731 "Pais Vasco"           1997 10.170666 15 1
    end
    format %ty year
    label values id regionname
    label def regionname 8 "Cataluna", modify
    label def regionname 9 "Comunidad Valenciana", modify
    label def regionname 15 "Pais Vasco", modify
    
    assert !missing(treated)
    tempvar pre post
    bys id: egen `pre'= total(!treated)
    bys id: egen `post'= total(treated)
    drop if `pre'< 20 | `post'< 15
    In the example, Catalonia was never treated and the Basque Country does not fulfill the "pre" condition.

    Res.:

    Code:
     l, sepby(id)
    
         +----------------------------------------------------------------------------------------------------------------+
         |  v1             regionname   year     gdpcap                     id   treated   __000000   __000001   __000002 |
         |----------------------------------------------------------------------------------------------------------------|
      1. | 431   Comunidad Valenciana   1955   2.575978   Comunidad Valenciana         0          1         20         23 |
      2. | 432   Comunidad Valenciana   1956   2.738503   Comunidad Valenciana         0          1         20         23 |
      3. | 433   Comunidad Valenciana   1957   2.899886   Comunidad Valenciana         0          1         20         23 |
      4. | 434   Comunidad Valenciana   1958   2.963511   Comunidad Valenciana         0          1         20         23 |
      5. | 435   Comunidad Valenciana   1959   3.026207   Comunidad Valenciana         0          1         20         23 |
      6. | 436   Comunidad Valenciana   1960   3.219294   Comunidad Valenciana         0          1         20         23 |
      7. | 437   Comunidad Valenciana   1961   3.362468   Comunidad Valenciana         0          1         20         23 |
      8. | 438   Comunidad Valenciana   1962    3.56998   Comunidad Valenciana         0          1         20         23 |
      9. | 439   Comunidad Valenciana   1963    3.76521   Comunidad Valenciana         0          1         20         23 |
     10. | 440   Comunidad Valenciana   1964   3.823693   Comunidad Valenciana         0          1         20         23 |
     11. | 441   Comunidad Valenciana   1965   3.874179   Comunidad Valenciana         0          1         20         23 |
     12. | 442   Comunidad Valenciana   1966   3.978149   Comunidad Valenciana         0          1         20         23 |
     13. | 443   Comunidad Valenciana   1967   4.073408   Comunidad Valenciana         0          1         20         23 |
     14. | 444   Comunidad Valenciana   1968   4.279778   Comunidad Valenciana         0          1         20         23 |
     15. | 445   Comunidad Valenciana   1969    4.48629   Comunidad Valenciana         0          1         20         23 |
     16. | 446   Comunidad Valenciana   1970   4.654741   Comunidad Valenciana         0          1         20         23 |
     17. | 447   Comunidad Valenciana   1971   4.817124   Comunidad Valenciana         0          1         20         23 |
     18. | 448   Comunidad Valenciana   1972   5.138889   Comunidad Valenciana         0          1         20         23 |
     19. | 449   Comunidad Valenciana   1973   5.449372   Comunidad Valenciana         0          1         20         23 |
     20. | 450   Comunidad Valenciana   1974   5.557983   Comunidad Valenciana         0          1         20         23 |
     21. | 451   Comunidad Valenciana   1975   5.655955   Comunidad Valenciana         1          0         20         23 |
     22. | 452   Comunidad Valenciana   1976   5.761354   Comunidad Valenciana         1          0         20         23 |
     23. | 453   Comunidad Valenciana   1977    5.86104   Comunidad Valenciana         1          0         20         23 |
     24. | 454   Comunidad Valenciana   1978   5.810911   Comunidad Valenciana         1          0         20         23 |
     25. | 455   Comunidad Valenciana   1979   5.775493   Comunidad Valenciana         1          0         20         23 |
     26. | 456   Comunidad Valenciana   1980   5.790988   Comunidad Valenciana         1          0         20         23 |
     27. | 457   Comunidad Valenciana   1981   5.899672   Comunidad Valenciana         1          0         20         23 |
     28. | 458   Comunidad Valenciana   1982   6.018138   Comunidad Valenciana         1          0         20         23 |
     29. | 459   Comunidad Valenciana   1983   6.139817   Comunidad Valenciana         1          0         20         23 |
     30. | 460   Comunidad Valenciana   1984   6.236861   Comunidad Valenciana         1          0         20         23 |
     31. | 461   Comunidad Valenciana   1985   6.336118   Comunidad Valenciana         1          0         20         23 |
     32. | 462   Comunidad Valenciana   1986    6.73936   Comunidad Valenciana         1          0         20         23 |
     33. | 463   Comunidad Valenciana   1987   7.144387   Comunidad Valenciana         1          0         20         23 |
     34. | 464   Comunidad Valenciana   1988   7.560697   Comunidad Valenciana         1          0         20         23 |
     35. | 465   Comunidad Valenciana   1989   7.969151   Comunidad Valenciana         1          0         20         23 |
     36. | 466   Comunidad Valenciana   1990   8.138389   Comunidad Valenciana         1          0         20         23 |
     37. | 467   Comunidad Valenciana   1991   8.306198   Comunidad Valenciana         1          0         20         23 |
     38. | 468   Comunidad Valenciana   1992   8.080548   Comunidad Valenciana         1          0         20         23 |
     39. | 469   Comunidad Valenciana   1993   7.857041   Comunidad Valenciana         1          0         20         23 |
     40. | 470   Comunidad Valenciana   1994   8.068409   Comunidad Valenciana         1          0         20         23 |
     41. | 471   Comunidad Valenciana   1995   8.289061   Comunidad Valenciana         1          0         20         23 |
     42. | 472   Comunidad Valenciana   1996   8.429734   Comunidad Valenciana         1          0         20         23 |
     43. | 473   Comunidad Valenciana   1997   8.725365   Comunidad Valenciana         1          0         20         23 |
         +----------------------------------------------------------------------------------------------------------------+
    
    .
    Last edited by Andrew Musau; 05 Mar 2022, 09:50.

    Comment


    • #3
      Okay this worked perfectly, but my apologies, I forgot to add that I want to keep Catalonia too. The goal is to compare Valencia to Catalonia/however many untreated units we have.


      So I'd keep all the untreated units, and keep only the treated units which meet the time restrictions I/the user specifies. Andrew Musau



      EDIT: Regarding the treatment, I assume the treatment turns on and stays on, and we can have many units that are treated, possible at different points in time, and that treatment remains on forever/until the time series ends.


      I think the solution then would be

      drop if (`pre'< 20 | `post'< 15) & `post'!=0
      Last edited by Jared Greathouse; 05 Mar 2022, 10:31.

      Comment


      • #4
        Then you need a panel indicator for treated (different from your treated indicator)

        Code:
        assert !missing(treated)
        tempvar pre post ptreated
        bys id: egen `ptreated'= max(treated)
        bys id: egen `pre'= total(!treated)
        bys id: egen `post'= total(treated)
        drop if (`pre'< 20 & `ptreated') | (`post'< 15 & `ptreated')

        Comment

        Working...
        X