Announcement

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

  • #46
    Originally posted by George Ford View Post
    Here's a sketch of something that may help guide you.

    I create a control mean of the not-yet-treated (you could also create one of never treated), and then means for each treatment group.

    Code:
    clear all
    use http://www.damianclarke.net/stata/bacon_example.dta, clear
    gen t2treat = year - _nfd
    
    egen controlmean = mean(cond(t2treat<0,asmrs,.)), by(year)
    tab _nfd
    foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
    egen treatmean`t' = mean(cond(_nfd==`t',asmrs,.)), by(year)
    g diffmean`t' = treatmean`t' - controlmean
    }
    
    foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
    twoway connected controlmean year , sort || connected treatmean`t' year , sort xline(`t') name(group`t', replace)
    twoway connected diffmean`t' year , sort xline(`t') name(group`t'_diff, replace)
    }
    Thank you, George Ford.

    I ran this and got these results:
    Code:
     gen t2treat = Year - _nfd
    (552 missing values generated)
    
    . egen controlmean = mean(cond(t2treat==.,OverallBalanceDeficit,.)), by(Year)
    
    . tab _nfd
    
           _nfd |      Freq.     Percent        Cum.
    ------------+-----------------------------------
           2013 |        146       23.32       23.32
           2014 |        233       37.22       60.54
           2015 |         47        7.51       68.05
           2016 |         32        5.11       73.16
           2017 |         71       11.34       84.50
           2018 |         43        6.87       91.37
           2019 |         54        8.63      100.00
    ------------+-----------------------------------
          Total |        626      100.00
    
    . foreach t in 2013 2014 2015 2016 2017 2018 2019 {
      2.     egen treatmean`t' = mean(cond(_nfd==`t',OverallBalanceDeficit,.)), by(Year)
      3.     g diffmean`t' = treatmean`t' - controlmean
      4. }
    
    . 
    . foreach t in 2013 2014 2015 2016 2017 2018 2019 {
      2.     twoway connected controlmean Year , sort || connected treatmean`t' Year , sort xline(`t') name(group`t', replace)
      3.     twoway connected diffmean`t' Year , sort xline(`t') name(group`t'_diff, replace)
      4. }
    
    . 
    end of do-file
    2013:
    Click image for larger version

Name:	fig2013.PNG
Views:	1
Size:	26.4 KB
ID:	1761782
    Click image for larger version

Name:	fig2013diff.PNG
Views:	1
Size:	26.8 KB
ID:	1761783


    2014:
    Click image for larger version

Name:	fig2014.PNG
Views:	1
Size:	30.9 KB
ID:	1761784
    Click image for larger version

Name:	fig2014diff.PNG
Views:	1
Size:	27.3 KB
ID:	1761785



    lag10 contains very few observations so that's why you see the spike in the treatment there. It refers to 2013 treatment year. I might even drop it.

    Comment


    • #47
      Originally posted by George Ford View Post
      Here's a sketch of something that may help guide you.

      I create a control mean of the not-yet-treated (you could also create one of never treated), and then means for each treatment group.

      Code:
      clear all
      use http://www.damianclarke.net/stata/bacon_example.dta, clear
      gen t2treat = year - _nfd
      
      egen controlmean = mean(cond(t2treat<0,asmrs,.)), by(year)
      tab _nfd
      foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
      egen treatmean`t' = mean(cond(_nfd==`t',asmrs,.)), by(year)
      g diffmean`t' = treatmean`t' - controlmean
      }
      
      foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
      twoway connected controlmean year , sort || connected treatmean`t' year , sort xline(`t') name(group`t', replace)
      twoway connected diffmean`t' year , sort xline(`t') name(group`t'_diff, replace)
      }

      2015:


      2016:


      2017:


      2018:


      2019:

      Comment


      • #48
        Wow. The treated are super variable after the treatment. I suppose it's the smaller sample sizes.

        You could center the series (on the pre-treatment means of the control group) so that the difference graph has a mean of 0 in the pre-treatment period. It won't look any different.

        Code:
        clear all
        use http://www.damianclarke.net/stata/bacon_example.dta, clear
        gen t2treat = year - _nfd
        
        egen controlmean = mean(cond(t2treat<0,asmrs,.)), by(year)
        tab _nfd
        foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
            egen treatmean`t' = mean(cond(_nfd==`t',asmrs,.)), by(year)
            summ controlmean if year<=`t'
            local cmean = r(mean)
            summ treatmean`t' if year<=`t'
            local tmean = r(mean)
            g diffmean`t' = (treatmean`t' - `tmean') - (controlmean - `cmean')
        }
        
        foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
            twoway connected controlmean year , sort || connected treatmean`t' year , sort xline(`t') name(group`t', replace)
            twoway connected diffmean`t' year , sort xline(`t') name(group`t'_diff, replace)
        }

        Comment


        • #49
          Originally posted by George Ford View Post
          Wow. The treated are super variable after the treatment. I suppose it's the smaller sample sizes.

          You could center the series (on the pre-treatment means of the control group) so that the difference graph has a mean of 0 in the pre-treatment period. It won't look any different.

          Code:
          clear all
          use http://www.damianclarke.net/stata/bacon_example.dta, clear
          gen t2treat = year - _nfd
          
          egen controlmean = mean(cond(t2treat<0,asmrs,.)), by(year)
          tab _nfd
          foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
          egen treatmean`t' = mean(cond(_nfd==`t',asmrs,.)), by(year)
          summ controlmean if year<=`t'
          local cmean = r(mean)
          summ treatmean`t' if year<=`t'
          local tmean = r(mean)
          g diffmean`t' = (treatmean`t' - `tmean') - (controlmean - `cmean')
          }
          
          foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
          twoway connected controlmean year , sort || connected treatmean`t' year , sort xline(`t') name(group`t', replace)
          twoway connected diffmean`t' year , sort xline(`t') name(group`t'_diff, replace)
          }
          Hey George,

          It's been a while since your comment, but I realize I might have some selection bias. I will write the situation again and would like to hear your opinion:

          Any club that has UEFA license needs to report its financial statements to UEFA. UEFA then check the financial statements of each club that is licensed and determine whether or not the club meets the financial fair play (FFP) regulations.
          To make things simpler, in case UEFA found that the club didn't meet the financial requirements, they are sanctioning the club. My treatment group consists of clubs that were sanctioned at some point by UEFA, and my control group consists of clubs that either have UEFA license but were not sanctioned (they met the financial requirements) or don't have UEFA license at all and therefore they are not mandated to follow the FFP rules.
          Now, given that UEFA doesn't choose licensed clubs randomly and check them, I think I lose the assumption of randomization. However, given that all UEFA licensed clubs submit their financial reports to UEFA, it makes the process less selective. Do I have here a selection bias? I think yes, but I want to hear your opinions. And If I have it, how can I handle it? I'm not sure if staggered DiD will be fit here (what I did so far). I think PSM is better way to deal with such case, but I don't have many variables to do the matching and honestly I'm not so familiar with this method.

          Would appreciate your opinion.

          Thank you.

          Comment


          • #50
            Originally posted by George Ford View Post
            Wow. The treated are super variable after the treatment. I suppose it's the smaller sample sizes.

            You could center the series (on the pre-treatment means of the control group) so that the difference graph has a mean of 0 in the pre-treatment period. It won't look any different.

            Code:
            clear all
            use http://www.damianclarke.net/stata/bacon_example.dta, clear
            gen t2treat = year - _nfd
            
            egen controlmean = mean(cond(t2treat<0,asmrs,.)), by(year)
            tab _nfd
            foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
            egen treatmean`t' = mean(cond(_nfd==`t',asmrs,.)), by(year)
            summ controlmean if year<=`t'
            local cmean = r(mean)
            summ treatmean`t' if year<=`t'
            local tmean = r(mean)
            g diffmean`t' = (treatmean`t' - `tmean') - (controlmean - `cmean')
            }
            
            foreach t in 1969 1970 1971 1972 1973 1974 1975 1976 1977 1980 1984 1985 {
            twoway connected controlmean year , sort || connected treatmean`t' year , sort xline(`t') name(group`t', replace)
            twoway connected diffmean`t' year , sort xline(`t') name(group`t'_diff, replace)
            }
            George Ford
            Not sure whether you received any notification or not, but in any case I'm adding your name here. Thanks.

            Comment


            • #51
              How does EUFA choose which statements to analyze? I think it may have something to do with past financial or compliance problems.

              Sounds like you will need to use IPW or some other procedure to account for selection.
              Last edited by George Ford; 04 Oct 2024, 14:18.

              Comment


              • #52
                Originally posted by George Ford View Post
                How does EUFA choose which statements to analyze? I think it may have something to do with past financial or compliance problems.

                Sounds like you will need to use IPW or some other procedure to account for selection.
                George Ford
                Although the selection process is not explicitly stated, I am almost certain that they are looking at all clubs that have a UEFA license. In any case, we are not talking about a lot of clubs, so I think it makes sense.
                You are right that if a club is found to have financial difficulties and did not comply with the rules, a monitoring period of between one to three years applies to that club and then in any case the statements will be analyzed in the following years.

                Comment


                • #53
                  if the outcome is financial related, then the outcome and the treatment are very closely linked, as bad financial outcomes in the past, or the perceived risk of bad finances, is part of the selection. It will be tricky to sort this out.

                  Comment


                  • #54
                    Originally posted by George Ford View Post
                    if the outcome is financial related, then the outcome and the treatment are very closely linked, as bad financial outcomes in the past, or the perceived risk of bad finances, is part of the selection. It will be tricky to sort this out.
                    Hey George Ford,

                    So if I understand you correctly, the first stage where all the clubs that have a UEFA license submit their financial statements is not a problem because UEFA does not selectively choose clubs, but it looks at all the clubs that have a license. The second stage, in which UEFA imposed sanctions on some of the clubs (treated clubs), is the stage in which there is endogeneity in the following years, since the result of the following years is related to financial problems originating in the first stage in which sanctions were imposed on those clubs, that is, in the first year of treatment.

                    If it is correct, how can I deal with it if I want to measure the outcome variable (overall balance deficit in the transfer market) over the monitoring years? I think that RDD would be appropriate here if I wanted to check only the cutoff, e.g, how the outcome behaves just around the first year of the treatment (which is the first stage and I have no endogeneity stemming from the following years). However, to produce something more meaningful I need to deal with the whole sample period and take into consideration the following years after the treatment year.

                    Comment


                    • #55
                      Any method using "time since treatment" is going to tell you what happens right after the treatment.

                      I think the selection issues may be more complicated. The treatment (sanctions) is due to bad finances, and bad finances is the outcome as well (it appears). The assignment of the treatment is non-random, and is based on bad finances (in some part). It's going to take some thinking to make sure you've got it right.

                      csdid (among other methods) often used PSM on the Xs, and that may be of some help, but finances would need to be in the Xs, but it appears the outcome is likewise financial.

                      Comment


                      • #56
                        Originally posted by George Ford View Post
                        Any method using "time since treatment" is going to tell you what happens right after the treatment.

                        I think the selection issues may be more complicated. The treatment (sanctions) is due to bad finances, and bad finances is the outcome as well (it appears). The assignment of the treatment is non-random, and is based on bad finances (in some part). It's going to take some thinking to make sure you've got it right.

                        csdid (among other methods) often used PSM on the Xs, and that may be of some help, but finances would need to be in the Xs, but it appears the outcome is likewise financial.
                        George Ford,

                        So my only option at this point is choosing other dependent variable to estimate which is not financial (for example, performance of the club in terms of points or the change in performance over the last season)? But then I'd imagine that it's hard to compare treated clubs to untreated clubs in terms of performance.

                        And for showing that there is still a reduction in the dependent variable (financial variable) I can use RDD or RDD won't be valid aswell because of the endogeneity?

                        Comment


                        • #57
                          what are you running on with RDD?

                          Comment


                          • #58
                            Originally posted by George Ford View Post
                            what are you running on with RDD?
                            George Ford
                            Financial measure as dependent variable (overall balance deficit - the one that I used so far) on year as a running variable and covariates of market value and league.
                            I would rather use DiD instead of RDD but it looks like I lack options.
                            Another thing that I don't fully understand: we said that the fact that every licensed club submit its financial statements to UEFA and then UEFA sanctioning clubs with bad finances, makes the treatment non-random. Does it mean that I can't use other dependent variable which is not financial-related?

                            One can only imagine how I feel right now after months of dedicated work on it. I appreciate every single comment and help from you, though.

                            Comment


                            • #59
                              We observe Y0, and if audited and Y0<T (some threshold), then the team is sanctioned. But some other teams may meet that threshold too (or be close to it), but are not audited and are unsanctioned. (These are the controls.) We want to know whether Y1-Y0 is larger if sanctioned. Is this right?

                              The treatment depends on Y0, the outcome in period 0, so this is very tricky, I think.

                              Start here for now to get a rough feel for what may be in the data.

                              For sanctioned firms, look at the value of the dependent variable in the sanctioned year. I suspect there is some cutoff (may be rough). Set this as T.

                              Set a sample of firms where Y0 is not too much bigger than T. These are financially distressed firms that are not sanctioned.

                              Make tables for each cohort that has Y0 and the mean for a few years after the sanction (Y1), by treated and controls. (I recognize the data may be messier than this).

                              See if Y1/Y0-1 is bigger for the sanctioned firms.

                              Now, you may be able to do this, but needs some thinking.

                              g distance = Y0/T.

                              logit sanction distance in (treatment year)
                              predict PS
                              g IPW = PS/(1-PS)

                              run eventdd and weight by IPW.


































                              Comment


                              • #60
                                Originally posted by George Ford View Post
                                We observe Y0, and if audited and Y0<T (some threshold), then the team is sanctioned. But some other teams may meet that threshold too (or be close to it), but are not audited and are unsanctioned. (These are the controls.) We want to know whether Y1-Y0 is larger if sanctioned. Is this right?

                                The treatment depends on Y0, the outcome in period 0, so this is very tricky, I think.

                                Start here for now to get a rough feel for what may be in the data.

                                For sanctioned firms, look at the value of the dependent variable in the sanctioned year. I suspect there is some cutoff (may be rough). Set this as T.

                                Set a sample of firms where Y0 is not too much bigger than T. These are financially distressed firms that are not sanctioned.

                                Make tables for each cohort that has Y0 and the mean for a few years after the sanction (Y1), by treated and controls. (I recognize the data may be messier than this).

                                See if Y1/Y0-1 is bigger for the sanctioned firms.

                                Now, you may be able to do this, but needs some thinking.

                                g distance = Y0/T.

                                logit sanction distance in (treatment year)
                                predict PS
                                g IPW = PS/(1-PS)

                                run eventdd and weight by IPW.
                                George Ford

                                Thank you.
                                Note that my dependent variable is a proxy for financial sustainability, since the financial statements of most of the clubs (treated and untreated) are not accessible publicly. Therefore I can't pull exactly their break-even numbers from the statements and need to use a proxy variable.
                                Also, teams might be sanctioned due to other bad financial criteria (such as withholding wages, debts to other clubs, etc), although most of them are being sanctioned because of net aggregate negative breakeven result for the three years prior to the treatment year (according to UEFA's settlement agreements).

                                Comment

                                Working...
                                X