Einführung

Bearbeiten

Die lineare Regression (kurz: LR) wird in diesem GNU-R-Wikibook behandelt, um diesen Spezialfall der Regressionsanalyse in R mit der Funktion lm(...) implementieren zu können. Man lernt dadurch mit einem statistisches Verfahren konkrete Daten auszuwerten, für die linearer Zusammenhang zwischen einer beobachteten abhängige Variable und mehreren unabhängigen Variablen zu untersuchen. Bei der linearen Regression wird dabei ein lineares Modell (kurz: LM) angenommen.

Funktionsgerade als Approximation

Bearbeiten

Im einfachsten Fall entsteht als lineare Modell eine Gerade als Funktionsgraph.

 
Lineare Regression - eindimensionaler Definitions und Wertebereich

Die Funktionvorschrift von   hat dabei zwei Parameter   mit  .

  •   ist die Steigung der Gerade,
  •   ist die  -Achsenabschnitt, bei dem der Graph der Funktion   die  -Achse schneidet.


Bestimmung der Funktionsparameter

Bearbeiten

Man sieht in dem obigen Diagramm, dass die Funktiongerade zu den Datenpunkten laufen kann, weil die Datenpunkte nicht alle auf einer Geraden liegen. Die mit lm(y~x) berechnete Regressionsgerade gibt dabei die beste Näherung für die Funktionswerte an.

Einsatz der Funktion lm()

Bearbeiten

Als erstes Beispiel verwenden wir den Datensatz aus Beispiel 5, welcher das Gewicht eines Babys an verschiedenen Lebenstagen enthält.

Annahme eines linearen Zusammenhangs

Bearbeiten

Dabei wird angenommen, dass der Zusammenhang zwischen Alter und Gewicht linear ist.

Bemerkung - Annahme

Bearbeiten

Die Annahme eines linearen Zusammenhangs benötigt ein inhaltliches Verständnis für die die Daten, denn im fortgeschrittenen Alter als Erwachsener kann dieser mit lm(X~Y) nicht mehr angenommen werden.

Vektoren als Eingabedaten

Bearbeiten

Es werden Vektoren als Eingabedaten   und Ausgabedaten   definiert, die in einem linearen Zusammenhang stehen.

 x <- c(1, 3, 6, 11, 12, 15, 19, 23, 28, 33, 35, 39, 47, 60, 66, 73)
 y <- c(3180, 2960, 3220, 3270, 3350, 3410, 3700, 3830, 4090, 4310, 4360, 4520, 4650, 5310, 5490, 5540)

Datenpunkte plotten

Bearbeiten

Der Definitionsbereich des linearen Modells für   ist eindimensional und der Wertebereich des linearen Modells für   ist ebenfalls eindimensional. Damit ist der Graph zweidimensional und die Punktdaten können in einem zweidimensionalen Graphen geplottet werden.

 plot(x,y)

In höherdimensionalen linearen Modellen ist graphische Darstellung nicht mehr so einfach möglich. Wenn die Summe der Ein- und Ausgabedimensionen 3 ist kann man die Daten noch in einem 3D-Plot anzeigen.

Regressionsgerade plotten

Bearbeiten
 plot(x,y)
 abline(lm(y~x))

Anwendung der Linearen Regressionanalyse

Bearbeiten

Die Vektoren sollten die gleiche Länge haben. Dies kann man in R mit dem Befehl length(...) überprüfen.

  ## Ausgabe der Vektordimension von x
  length(x) 
  ## Ausgabe der Vektordimension von y
  length(y)  
  ## Lineares Modell berechnen
  lm(y~x)

Man erhält die folgende Ausgabe für lm(y~x):

Call:
lm(formula = y ~ x)

Coefficients:
      (Intercept)  x  
          2971.13              37.48  

Dabei ist Intercept der   und die Steigung der Geraden ist  .

Dataframe erzeugen

Bearbeiten

Aus den Ein-Ausgabedaten wird nun ein Dataframe erzeugt und dem Anwendungsbeispiel sinnvollen Spaltenüberschriften versehen (x Lebenstag, y Gewicht). Diese Benennung ist auch für die Lesbarkeit und Interpretierbarkeit der Daten wichtig. Das Ergebnis ist eine Wertetabelle mit den Spaltennamen "Lebenstag" und "Gewicht"


wertetabelle <- data.frame(x,y)
colnames(wertetabelle) <- c("Lebenstag", "Gewicht")

Regressionsanalyse mit lm() durchführen

Bearbeiten

Nun verwendet man die erste und zweite Spalte aus dem Dataframe für die Regressionsanalyse mit lm()

lm(wertetabelle[,2]~wertetabelle[,1])


Plotten der Daten mit Regressionsgerade

Bearbeiten

Beachten Sie, dass lm(...) als Eingaben y~x erhält, wobei die Vektoren in umgekehrter Reihenfolge angegeben werden und durch ein Tilde-Symbol getrennt sind. Dagegen erhält plot den x-Vektor aus dem Definitionsbereich und dann den y-Vektor aus dem Wertebereich als Funktionsparameter erhält (standardmäßig durch ein Komma getrennt).

plot(wertetabelle[,1]~wertetabelle[,2]))
abline(lm(wertetabelle[,2]~wertetabelle[,1]))

Definition einer eigenen Funktion

Bearbeiten
 
Plot der Linearen Regression - Daten und Regressionsgerade

Mit der Definition einer eigenen Funktion kann man mehrere Befehlschritte durch einen Funktionsaufruf ersetzen. Mit der Funktion plot4linreg(x,y,name4x,name4y) möchte man als Parameter einen Vektor   als unabhängige Variable übergeben und Vektor   als abhängig Variable und dann

  • (1) Steigung und y-Achsenabschnitt der linearen Regression mit lm(...) berechnet
  • (2) die Datenpunkte zusammen mit der Regressionsgerade zeichnen.

Grundlegende Befehlsfolge für Plot

Bearbeiten

In dem folgenden Beispiel wird die grundlegende Befehlsfolge für den Plot gezeigt:

 ## Datenvektor x - unabhängige Variable 
 x <- c(1, 3, 6, 11, 12, 15, 19, 23, 28, 33, 35, 39, 47, 60, 66, 73)
 ## Datenvektor y - abhängige Variable 
 y <- c(3180, 2960, 3220, 3270, 3350, 3410, 3700, 3830, 4090, 4310, 4360, 4520, 4650, 5310, 5490, 5540)

 ## Lineare Regression berechnen
 lm(y~x)
 ## Plot der Datenpunkte
 plot(x,y)
 ## Regressiongerade ergänzen
 abline(lm(y~x))


Achsenbezeichnung ergänzen

Bearbeiten

In der obigen Abbildung erkennt man dass die Bezeichnungen an den Achsen jeweils "x" und "y" sind. In Analogie zu dem Beispieldaten entspricht "x" der Anzahl der Tage nach der Geburt, an dem das Baby gewogen wurde. "y" als anhängige Variable bezeichnet das Gewicht des Kindes an dem Tag "x". Um andere Achsenbezeichnungen zu erhalten verwendet man "xlab" und "ylab".

 ## Datenvektor x - unabhängige Variable 
 x <- c(1, 3, 6, 11, 12, 15, 19, 23, 28, 33, 35, 39, 47, 60, 66, 73)
 ## Datenvektor y - abhängige Variable 
 y <- c(3180, 2960, 3220, 3270, 3350, 3410, 3700, 3830, 4090, 4310, 4360, 4520, 4650, 5310, 5490, 5540)

 ## Plot der Datenpunkte
 plot(x,y,xlab="Tage nach der Geburt",ylab="Gewicht in g")
 ## Regressiongerade ergänzen
 abline(lm(y~x))

Plot Sie diese Funktion in R.

Funktionsdefinition plot4linreg()

Bearbeiten

Nun können sind die Vorbereitungen getroffen den Plot für die lineare Regression als Funktion zu definieren.

plot4linreg <- function (x,y,name4x,name4y) {
  ## x : Vektor - unabhängige Variable 
  ## y : Vektor - abhängige Variable 
  ## xlab : String- Bezeichnung der x-Achse
  ## ylab : String- Bezeichnung der y-Achse
 
  ## Plot der Datenpunkte
  plot(x,y,xlab=name4x,ylab=name4y)
  ## Regressionsgerade zeichnen
  abline(y~x))
}

Die obige Funktionsdefinition beginnt 4 Kommentarzeilen, die die Bedeutung der erwarteten Parameter erläutert, Wenn man nach längerer Zeit wieder in die Funktionsdefinition schaut, helfen diese Kommentar dabei, den Code nachvollziehen. Dies hilft insbesondere, wenn man Code zwischen Lernenden austauscht.

Funktionsaufruf plot4linreg()

Bearbeiten

Die Definition der Funktion kann nur verwendet werden, um die Plots für unterschiedliche Eingabevektoren x1,x2,x3,... und unterschiedliche Ausgabevektoren y1,y2,y3,... zu berechnen.

plot4linreg(x1,y1,"Bezeichnung für x1","Bezeichnung für y1")
plot4linreg(x2,y4,"Bezeichnung für x2","Bezeichnung für y4")
plot4linreg(x3,y5,"Tage","Gewicht")
plot4linreg(x3,y6,"Tage","Größe")

Bemerkung - Daten - Dataframe

Bearbeiten

Die unterschiedliche Vektoren x1,x2,x3,... und y1,y2,y3,... sind in der Regel Spaltenvektoren, die aus einem Dataframe stammen bzw. aus eine Tabelle in ein Dataframe eingeladen wurden.

Siehe auch

Bearbeiten

Einzelnachweise

Bearbeiten


Seiten-Information

Bearbeiten

Wikipedia2Wikiversity

Bearbeiten

Diese Seite wurde auf Basis der folgenden [[w:de:Lineare Regression|Wikipedia-Quelle] erstellt: