2016-05-09 4 views
0

Ich versuche, eine ähnliche Regression für 25 verschiedene Portfolios durchzuführen und dann das R^2 aller 25 Regressionen zu finden. Natürlich kann ich sie durch AusführenLooping-Regression und Erhalten von Summenstatistiken in Matrixform

P1<-lm(formula = df[1:24,1] - RiskFree ~ Mkt.RF + SMB + HML, data = df) 
summary(P1)$r.squared 

25 mal einzeln tun, um alle r.square zu bekommen, die wirklich zeitaufwendig ist (kann sich nicht vorstellen, wenn es 100 oder größer ist). Ich dachte daran, eine Schleife zu machen und hier blieb ich stecken. Das ist, was ich tat

sequence<-seq(1,25) 
P<-cbind(sequence) 
for(i in 2:26){ 
P[i-1]<-lm(formula = df[1:24,i] - RiskFree ~ Mkt.RF + SMB + HML, data = df) 
return(summary(P[i-1])$r.squared) 

die Fehler in Zusammenfassung

Fehler zurückgibt (P [i - 1]) $ r.squared: $ Operator für die Atom Vektoren Zusätzlich ungültig ist: Warnung Nachricht: In P [i - 1] < - lm (Formel = df [1:24, ich] - RiskFree ~ Mkt.RF + SMB +: Anzahl der Elemente zu ersetzen ist kein Vielfaches der Ersatzlänge

Wie bekomme ich meine R^2 und lege sie dann in eine Matrixform?

(edit) ist dies die Beispieldaten, die ich arbeite auf

df <- "Year SMALL.LoBM ME1.BM2 ME1.BM3 ME1.BM4 Mkt.RF SMB HML RiskFree 
     1991 -4.61 22.74  16.42 27.89 37.88 2.59 13.60 23.22 
     1992 8.20 20.59  22.90 25.94 40.05 6.66 15.14 16.04 
     1993 1.20 12.41  19.27 21.39 37.59 5.46 17.19 23.40 
     1994 -22.67 -0.56  -3.86 1.34  1.93 -3.38-2.28 0.25  
Data <- read.table(text=df, header = TRUE) 
+0

Können Sie bitte ein reproduzierbares Beispiel für die Daten angeben, mit denen Sie arbeiten? – Sotos

Antwort

1

Sie keine Schleife benötigen. Stattdessen verwenden, dass lm mehrere Antwortvariablen akzeptiert:

fits <- summary(lm(cbind(mpg, hp) ~ wt, data = mtcars)) 
#or summary(lm(as.matrix(mtcars[, c(1, 4)]) ~ wt, data = mtcars)) 
sapply(fits, `[[`, "r.squared") 
#Response mpg Response hp 
# 0.7528328 0.4339488 

Dies ist nicht nur elegant, sondern auch effizienter.

+0

Vielen Dank, wusste nicht, dass das möglich war. beides effizient und elegant! – Donkeykongy

Verwandte Themen