Fama Macbeth Regression in Python (Pandas oder Statsmodels)
Ökonometrisches Hintergrundbild
Die Fama-Macbeth-Regression bezieht sich auf eine Prozedur zum Ausführen einer Regression für Paneldaten (wobei es N verschiedene Personen gibt und jede Person mehreren Perioden T entspricht, z. B. Tag, Monate, Jahr). Insgesamt gibt es also N x T obs. Beachten Sie, dass es in Ordnung ist, wenn die Paneldaten nicht ausgeglichen sind.
Die Fama-Macbeth-Regression soll zuerst eine Regression für jede Periode quer zur Sektionalität ausführen, d. H. N Individuen in einer gegebenen Periode t zusammenfassen. Und mach das für t = 1, ... T. Insgesamt werden also T-Regressionen ausgeführt. Dann haben wir eine Zeitreihe von Koeffizienten für jede unabhängige Variable. Dann können wir einen Hypothesentest unter Verwendung der Zeitreihe von Koeffizienten durchführen. Normalerweise nehmen wir den Durchschnitt als Endkoeffizienten jeder unabhängigen Variablen. Und wir verwenden T-Statistiken, um die Signifikanz zu testen.
Mein Problem
Mein Problem ist, dies in Pandas umzusetzen. Aus dem Quellcode von Pandas ist mir aufgefallen, dass es eine Prozedur gibt, die aufgerufen wirdfama_macbeth
. Aber ich kann keine Dokumentation dazu finden.
Die Operation kann leicht durchgeführt werdengroupby
auch. Zur Zeit mache ich das:
def fmreg(data,formula):
return smf.ols(formula,data=data).fit().params[1]
res=df.groupby('date').apply(fmreg,'ret~var1')
Das funktioniert,res
ist eine Serie, die von indexiert wirddate
und die Werte von Series sindparams[1]
, das ist der Koeffizient vonvar1
. Aber jetzt möchte ich mehr unabhängige Variablen haben, ich muss die Koeffizienten all dieser unabhängigen Variablen extrahieren, aber ich kann das nicht herausfinden. Ich habe es versucht
def fmreg(data,formula):
return smf.ols(formula,data=data).fit().params
res=df.groupby('date').apply(fmreg,'ret~var1+var2+var3')
Das wird nicht funktionieren. Das gewünschte Ergebnis ist dasres
ist ein von indizierter Datenrahmendate
und jede Spalte des Datenrahmens sollte die Koeffizienten jeder Variablen enthaltenintercept
, var1
, var2
undvar3
.
Ich habe auch nachgefragtstatsmodels
Sie haben auch kein solches eingebautes Verfahren.
Und gibt es ein Paket, mit dem sich Regressionstabellen in Publikationsqualität erstellen lassen? Mögenoutreg2
in Stata undtexreg
in R? Danke für Ihre Hilfe!