GNU R: Regression

Aus Wikibooks
Wechseln zu: Navigation, Suche

EDV GNU R

Einleitung[Bearbeiten]

Mit Regressionen wird versucht eine abhängige, metrische Variable in Abhängigkeit von einer oder mehreren unabhängigen Variablen zu beschreiben. Die abhängige Variable soll dadurch üblicherweise kausal auf die Effekte andere Variablen zurückgeführt werden.(Bspw. Regression der persönlichen Laune abhängig vom Wetter) Es gibt zum Teil recht unterschiedliche Regressionsverfahren und R stellt eine Vielzahl an Methoden bereit. Die einfachste Variante eines Regressionsmodells ist die lineare Regression.

Lineare Regression[Bearbeiten]

Ein erstes Beispiel: Lebensalter und Gewicht[Bearbeiten]

Als erstes Beispiel verwenden wir den Datensatz aus Beispiel 5, welcher das Gewicht eines Babys an verschiedenen Lebenstagen enthält. Es werden die Befehle plot(), abline, lm, install.packages, library, xyplot, geom_point, geom_line und geom_smooth verwendet.

Zunächst stellen wir die Daten mit plot() graphisch dar:

 plot(bsp5, type="o", main="Gewicht des Babys", ylab="Gewicht in Gramm", xlab="Lebenstag", col="blue", lwd=2)

Nun fügen wir die Regressionsgeraden hinzu, indem wir die Funktion lm(Y~X) mit dem Befehl abline() in die Graphik integrieren.

  • Y ist in diesem Falle die Spalte des Gewichts (also hier: bsp5[,2])
  • X ist in diesem Falle die Spalte der Lebenstage (also hier: bsp5[,1])

Der Befehl lautet demzufolge:

abline(lm(bsp5[,2]~bsp5[,1]))

GewichtLebenstag.svg

Alternative mit xyplot[Bearbeiten]

Um eine Regressionsgerade durch eine Punktwolke zu ziehen, kann auch der Befehl xyplot aus dem Zusatzpaket lattice verwendet werden. Falls lattice noch nicht installiert ist, muss dies natürlich nun nachgeholt werden:

install.packages("lattice", dependencies = T)

Anschließend aktivieren wir das lattice-Paket:

library(lattice)

Eine Regressionsgerade erhält man durch:

xyplot(y~x, type=c("p","r"))

Angewendet auf Beispiel 5 lautet der Befehl:

xyplot(bsp5[,2]~bsp5[,1], type=c("p","r"))

Wir erhalten nun eine Punktwolke (type="p") der Daten, durch welche die Regressionsgerade (type="r") verläuft.

Alternative mit ggplot[Bearbeiten]

Für ggplot() muß die Bibliothek ggplot2 geladen werden

library("ggplot2")

Mit den Daten von Beispiel 5 wird ein ggplot()-Objekt erstellt:

g <- ggplot(bsp5, aes(x = Lebenstag, y = Gewicht)) +
  geom_point(colour="blue", size = 2.5) +  # Daten als Punkte
  geom_line(colour="blue", size = 0.8)  # Linie, die die Punkte verbindet

Schließlich wird die Regressionsgerade hinzugefügt. Das ebenfalls mögliche Konfidenzintervall um die Gerade wird ausgeblendet.

# Regressionsgerade, ohne Konfidenzintervall (level=0)
g + geom_smooth(method = "lm", colour = "black", level = 0)

Lineare Modelle mit R[Bearbeiten]

Bei linearer Modellierung wird angenommen, dass die Effekte verschiedener unabhängiger Variablen folgendermassen addiert werden können:

In können zur Berechnung linearer Modelle zum Beispiel die Funktionen lm (für "linear model") oder glm (für "generalized linear model") genutzt werden. Diese verwenden für den obigen Ausdruck die folgende Formelnotation:

Y ~ Variable_X1 + Variable_X2 + ...

Die Funktion lm berechnet eine Reihe von Statistiken für dieses Modell, die allerdings in der für diese Funktion voreingestellten Ausgabemethode print.lm unterdrückt werden. Ausgegeben werden standardmäßig nur die Aufrufbedingungen ("Call:") und die Koeffizienten:

R> lm(bsp5$Gewicht~bsp5$Lebenstag)

Call:
lm(formula = bsp5$Gewicht ~ bsp5$Lebenstag)

Coefficients:
   (Intercept)  bsp5$Lebenstag
        2971.1            37.5

Eine sehr viel detailliertere Auswertung bekommt man zum Beispiel durch Verwendung der Funktion summary:

R> summary ( lm (bsp5$Gewicht ~ bsp5$Lebenstag) )
 
Call:
lm(formula = bsp5$Gewicht ~ bsp5$Lebenstag)

 Residuals:
   Min     1Q Median     3Q    Max
-167.0  -90.3   20.4   79.7  171.4                                                              

Coefficients:
               Estimate Std. Error t value Pr(>|t|)
(Intercept)     2971.13      43.69    68.0  < 2e-16 ***             
bsp5$Lebenstag    37.48       1.19    31.5  2.1e-14 ***           

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 104 on 14 degrees of freedom 
Multiple R-Squared: 0.986,      Adjusted R-squared: 0.985 
F-statistic:  991 on 1 and 14 DF,  p-value: 2.15e-14           

Residuals

  • Hier sind die Quartile der Residuen angegeben.

Coefficients

  • In der ersten Spalte werden die Konstante (Intercept) und die Regressionskoeffizienten des Modells ausgegeben. (Vorsicht beim Vergleich: Dabei handelt es sich nicht um Beta-Werte)

In den folgenden Spalte werden (für die Beispieldaten selbstverständlich sinnlose) inferenzstatistische Masse (Masse für die Verallgemeinerbarkeit der Stichprobe auf die Grundgesamtheit) angezeigt:

  • Für jeden der Koeffizienten wird neben der Berechnung Standardfehler (Std. Error) ein t-Test mit der Null-Hypothese durchgeführt, für den der entsprechende t-Wert und die Signifikanz Pr(>|t|) angegeben wird.

Größen, die das Gesamtmodell betreffen:

  • Der Standardfehler der Gesamtschätzung (Residual standard error).
  • Das Bestimmtheitsmass ( Multiple R-Square) und das um die Anzahl der Modellvariablen Korrigierte Bestimmtheitsmass (Adjusted R-squared) geben an wieviel Prozent der Varianz der Residuen von den realen Werten durch das Modell erklärt wird (in welchem Umfang also die Schätzung von von den realen Werten abweicht). Bei einem Wert von 1 liegen alle Punkte auf der Gerade bzw. Fläche. Je näher an 0 sich der Wert annähert, umso mehr streuen die Messwerte um den angenommenen Verlauf.
  • Die Ergebnisse des F-Test in der letzten Zeile prüfen die Verallgemeinerbarkeit des Gesamtmodells (F-Wert, Freiheitsgrade und Signifikanz).



Inhaltsverzeichnis[Bearbeiten]