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!



