2012-04-05 15 views
5

Weiß jemand, ob es ein Paket gibt, das Fama-MacBeth-Regressionen in R ausführen und die Standardfehler berechnen würde? Ich kenne das Paket sandwich und seine Fähigkeit, Newey-West-Standardfehler zu schätzen und Funktionen für das Clustering bereitzustellen. Ich habe jedoch nichts in Bezug auf Fama-MacBeth gesehen.Fama MacBeth Standardfehler in R

+3

'Bibliothek ("sos"); findFn ("macbeth") 'findet nichts, aber' findFn ("fama") 'bekommt ein paar Treffer in finanzbezogenen Paketen. –

Antwort

11

Das plm Paket kann Fama-MacBeth-Regressionen und SEs schätzen.

require(foreign) 
require(plm) 
require(lmtest) 
test <- read.dta("http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.dta") 
fpmg <- pmg(y~x, test, index=c("year","firmid")) ##Fama-MacBeth 

> ##Fama-MacBeth 
> coeftest(fpmg) 

t test of coefficients: 

      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 0.031278 0.023356 1.3392 0.1806  
x   1.035586 0.033342 31.0599 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

weisen jedoch darauf hin, dass diese Methode zu einem pdata.frame funktioniert nur, wenn Ihre Daten umgewandelt werden. (. Es wird scheitern, wenn Sie "duplicate couples (time-id)" haben)

Für weitere Details siehe:

+0

im Beispiel coeftest (fpmg) behandelt nicht doppelt gruppierte Standardfehler. Bitte zeigen Sie, wie es für fpmg gemacht wird. http://stackoverflow.com/questions/37441230/r-noway-to-get-double-clustered-standard-errors-for-an-object-of-class-cpmg –

+0

Eine Person schrieb, dass wir tauschen müssen N und T und alle machen es. Ich sehe andere, die es in Frage gestellt haben, aber sie wurden zum Schweigen gebracht;) –

+0

Beide Aufträge arbeiten an 'df.petersen'. 'PMG' soll durchschnittliche Zeitreihen darstellen. Manchmal ist das Mitteilen von Querschnitten theoretisch sinnvoll. In der FM-Regression: Die RHS-Variable ist ein Index: derselbe für alle IDs. Versuchen Sie: 'df.petersen2 <-data.table (df.petersen); df.petersen2 [, ': =' (x = df.petersen2 [firmid == 1, x]), von = "firmid"] '. Dann versuche 'summary (pmg (y ~ x, data = df.petersen2, index = c (" year "," firmid ")))). Sie erhalten NAs, da Sie die Abschnitte ohne RHS-Variation ausführen. "PMG" ist nicht gut dokumentiert, so dass ich nicht sicher bin, ob es eine korrekte FM-Regression gibt, aber "index = c (" firmid "," year "))" erzeugt eine Schätzung. –

Verwandte Themen