2016-12-01 8 views
-1

Ich habe Stata und eViews für einige Zeit verwendet, und habe sehr begrenzte Kenntnisse oder R und deshalb brauche ich etwas Hilfe. Ich schätze das französische Fama-Modell für Aktien von 2010 bis 2016, daher muss ich für jede Aktie eine Regression durchführen. Jede Regression wird als abhängige Variable eine Überschussrendite (Ereturn) und dann MKTRF, HML und SMB als unabhängige Variablen aufweisen. Der Lagercode wird in einer Variablen namens permno gespeichert. Die meisten der Fragen, die ich hier gestellt habe, betrafen die Wiederholung einer Regression mit verschiedenen Variablen, aber in meinem Fall ändern sich die Variablen nicht, aber die Beobachtungen tun es. Ich muss die Koeffizienten und den R2-Wert für jede Regression speichern. Ich hoffe, dass jemand helfen kann.Looping Regressionen in R mit verschiedenen Beobachtungen

+1

Ich bin mir nicht sicher, ob ich das Problem verstehe, das Sie haben. Was ist deine Frage? – WillardSolutions

+0

Ich werde versuchen zu klären. Ich weiß, wie man eine Regression für die gesamte Stichprobe hat, aber ich brauche separate Regressionen, eine für jede Aktie. Die Regressionsgleichung ist die gleiche: eReturn = c + b1 * MKTRF + b2 * HML + b3 * SMB. Wie kann ich eine Schleife erstellen und die Regression innerhalb der Schleife ausführen und die Ergebnisse speichern? Danke –

Antwort

0

Ausgehend von Ihren Variablen, nehme ich an, dass Sie eine Regression für Beobachtungen durchführen wollen, die nach "permno" gruppiert sind? Hier ist was du tun könntest.

# Create list of subsets 
dfList = split(df, permno) 

Die split() Funktion teilt Ihre „df“ von der Gruppe „permno“ dass permno unter der Annahme, ein Faktor ist. Verwenden Sie jetzt lapply, um dasselbe Modell für jede Teilmenge auszuführen.

regSummaryList = lapply(dfList, function(x) { 
    lm(eReturn ~ MLTRF + HML + SMB, data = x) 
}) 

Dies gibt eine Liste der Regressionsobjekte für jede Regression zurück. Sie können dann die Koeffizienten und R Quadrat mit der folgenden extrahieren:

coefList = lapply(regSummaryList, coef) 
R2 = sapply(regSummaryList, function(x) summary(x)$r.squared) 

coefList eine Liste von Koeffizienten wäre, während R2 ein Vektor von R2 des wäre.

+0

Vielen Dank. –

Verwandte Themen