Seite 1 von 1

Regressions !window" definieren

BeitragVerfasst: Fr 27. Jul 2012, 10:31
von filaglad
Hallo zusammen,
ich habe ein datenset mit 1000 firmen über 10 jahre, monatliche daten. Nun möchte ich für jede Firma über ein "rolling window" von 2 Jahren den Market Beta koeffizienten ermitteln. Die regressinosgleichung ist wie folgt:
Code: Alles auswählen
reg return x1,r


Allerdings habe ich ein unbalanced panel, und somit für einige firmen keine daten in den Frühen Zeitperioden meines samples. Daraus entsteht die problematik, dass wenn meine for-schleife auf eine solche Firma in den frühen jahren meines samples trifft, dass die regression abgebrochen wird. Deshalb habe ich nun eine weitere variable definiert, die den wert =1 annimmt, wenn das jeweilige regressionsfenster für die jeweilige Firma alle daten enthält:
Code: Alles auswählen
Beispielhaftes zeitfenster von 4 monaten:
ID   Return    x1    Zeit   Periode
1      1%      5%   01/1990   1
1      2%      6%   02/1990   1
1      3%      7%   03/1990   1
1      4%      8%   04/1990   1
2      .%      5%   01/1990   0
2      .%      6%   02/1990   0
2      3%      7%   03/1990   1
2      4%      8%   04/1990   1


Die von mir geschriebene For-Schleife für eine "rolling window"-regression sieht so aus:
Code: Alles auswählen
forvalues k = 1/1000 {                               ///Definiert die ID
    matrix E = (0,0,0)                                     /// Kreiert matrix um koeffizienten abzuspeichern
   forvalues i=528/627{                                            /// Definiert Zeitfenster aka rolling window
      quietly reg return x1 if (id==`k' & month>=`i'-24 & month<`i'), r         /// regression der Firma 'k' über ein zeitfenster von 24 monaten
      matrix E = E\(`i',_b[msciwde], _se[msciwde])                                       ///abspeichern der werte in einer matrix
   }
}

Nun würde ich also gerne die Regression NUR durchführen, wenn meine "perioden Variable" =1 ist und ansonsten soll die Forschleife zum nächten monat (derselben ID) springen. Also in etwa:
Wenn Period ==1 für alle month>=`i'-24 & month<`i'
DANN laufe die regression
Ansonsten springe zum nächten zeitfenster der ID (also count `i'+1) und prüfe (Wenn period==1 für alle .....)

Ich wäre euch für jede HIlfe überaus dankbar!

Re: Regressions !window" definieren

BeitragVerfasst: Fr 27. Jul 2012, 12:07
von daniel
Ich habe nicht alles druchgelesen, und das selbst noch nicht gemacht, aber bevor Du da versuchst das Rad neu zu erfinden, hast Du mal unter

help rolling

nachgelesen?

Re: Regressions !window" definieren

BeitragVerfasst: Fr 27. Jul 2012, 12:26
von filaglad
hi daniel
danke für den Tip mit
daniel hat geschrieben:help rolling


Allerdings definiert "rolling" nur das zeitfenster, also das was ich mit -month>=`i'-24 & month<`i'- auch erreiche. Mein punkt war dass eine Regression nur dann durchgeführt wird, wenn für die y variable alle werte für ein "window" vorhanden sind. Aber anscheinend muss ich jetzt wohl alle observations raus schmeißen für die die werte fehlen...

Re: Regressions !window" definieren

BeitragVerfasst: Fr 27. Jul 2012, 14:14
von daniel
Aber anscheinend muss ich jetzt wohl alle observations raus schmeißen für die die werte fehlen...


Das scheint mir der bessere Weg zu sein.