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 Datenrahmendateund jede Spalte des Datenrahmens sollte die Koeffizienten jeder Variablen enthaltenintercept, var1, var2 undvar3.

Ich habe auch nachgefragtstatsmodelsSie 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!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage