Zum Inhalt springen

Mehrdimensionale lineare Regression/Implementation R

Aus Wikiversity

Einführung

[Bearbeiten]

Der Lerneinheit gliedert sich in die folgenden Schritte

Berechnung mit lm() im Vergleich zur iterativen Vorgehen

[Bearbeiten]

Das iterative Vorgehen beschreibt eine universielles Vorgehen, bei dem die schrittweise Verbesserung der Verbesserung der Fehlerfunktion sichtbar wird. Hier werden die Matrixkoeffizient der mehrdimensionalen linearen Regression in R über die Funktion lm() berechnet

Aufgabe - Mehrdimensionale lineare Regression in R

[Bearbeiten]

In dieser Lerneinheit lernen Sie, wie Sie eine mehrdimensionale lineare Regression in R und KnitR implementieren können und die hilfreichen Rahmenbedingungen, für die Unter.

Voraussetzungen

[Bearbeiten]
  • Grundkenntnisse in R
  • Verständnis von linearen Regressionen

Inhalte

[Bearbeiten]

1 Einführung in die mehrdimensionale lineare Regression

[Bearbeiten]
  • Definition und Beispiel
  • Vorteile der mehrdimensionalen linearen Regression

2 Implementierung in R

[Bearbeiten]
  • Installation der erforderlichen Bibliotheken
  • Erstellung eines Beispiel-Datensatzes
  • Implementierung der mehrdimensionalen linearen Regression.

3 Interpretation der Ergebnisse

[Bearbeiten]
  • Auswertung der Modellparameter
  • Interpretation der Kovarianzmatrix

4 Praktische Übung

[Bearbeiten]
  • Implementierung einer mehrdimensionalen linearen Regression anhand eines Beispiel-Datensatzes
  • Auswertung der Ergebnisse

Schritte

[Bearbeiten]

Zunächst betrachtet man die notwendigen Bibliotheken, die man für die Umsetzung in R bzw. KnitR für die Textgenerierung in Abhängigkeit von den Ergebnissen der mehrdimensionalen linearen Regression verwenden möchte.

Schritt 1 - Installation der erforderlichen Bibliotheken

[Bearbeiten]

Wenn Sie in KnitR oder in einem R-Skript die Installation eines bestimmten Pakets benötigen, so können Sie anderen Nutzerinnen und Nutzer das Leben vereinfachen, wenn Sie den Installationbefehl für die erforderlichen Pakete in den ersten Code-Chunk in KnitR oder zu Beginn des R-Skriptes ergänzen, damit im Sinne von Open Educational Resources die erforderlich Skript bei Bedarf einfach nachinstalliert werden, sofern dies noch nicht von den Nutzern installiert wurden. Für lineare Modelle ist es wesentlich, mehrdimensionales Plots verwenden zu können

library("rgl")

Bemerkung - 3D-Plots und Dimensionen

[Bearbeiten]

In dieser Lerneinheit geht es darum, die Prinzipien mehrdimensionalen funktionaler Zusammenhänge zu veranschaulichen. Aus der Schulmathematik kennen Sie das Plotten der Funktionen:

Der Graph der Funktion ist zweidimensional, weil Definitions- und Wertebereich jeweils eindimensional sind.

Funktionen mit 3D-Graph

[Bearbeiten]

Dies wird auf Plots von affinen Funktionen der folgende Form angewendet.

Dimensionen des Plots

[Bearbeiten]

Da der Definitionsbereich und Wertebereich mit ist, ist der Plot als Graph eine dreidimensionale Teilmenge vom .

Schritt 2 - Erstellung eines Beispiel-Datensatzes

[Bearbeiten]

Der folgende Beispieldatensatz erzeugt zunächst normalverteilte Daten für eine zweidimensionale Eingabeschicht.

# Beispiel-Datensatz für eine lineare Abbildung 
# Defintionsbereich (x1,x2) aus dem IR^2 
# Wertebereich y aus IR

### Anzahl der Datensätze festlegen
datenanzahl <- 100
x1 <- rnorm(datenanzahl, mean = 0, sd = 1)
x2 <- rnorm(datenanzahl, mean = 0, sd = 1)

### Unbekannte Abbildung 
###  f(x1,x2) = 2 + 3*x1 + 4*x2
### y-Vektor wird verwendet und mit einem normalverteilten Rauschen versehen
### Rauschen: Mittelwert 0 und Standardabweichung 1
y <- 2 + 3*x1 + 4*x2 + rnorm(datenanzahl, mean = 0, sd = 1)

# Datenframe erstellen mit den Datenspalten x1,x2 und y erstellen
df <- data.frame(x1, x2, y)

Schritt 3 - Implementierung der mehrdimensionalen linearen Regression

[Bearbeiten]
# Modell erstellen
model <- lm(y ~ x1 + x2, data = df)

# Ausgabe der Modellparameter
summary(model)

Schritt 4: Koeffizienten des Modells nutzen

[Bearbeiten]

In dem berechneten Modell model wurden u.a. die Koeffizienten der affinen Abbildung gespeichert. Diese können mit der folgenden Funktion extrahiert werden.

getCoeff4lm <- function(pModel) {
  # Modellkoeffizienten extrahieren
  ## Parameter: pModel (mit lm(...) erstellt  
  uCoeff <- pModel$coefficents
  ## Liste uCoeff als Vektor konvertieren
  ret <- as.vector(unlist(uCoeff))
  ##
  return(ret)
}

Nun kann man die Koeffizienten einer affinen Funktion extrahieren.

  coeff <- getCoeff4lm(model)
  b  <- coeff[1]
  a1 <- coeff[2]
  a2 <- coeff[3]
  ## Funktionswert von (3,7) aus IR^2 berechnen
  b + a1 * 3 + a2 * 7

Nun kann man die berechnete affine Funktion definieren:

  f_affin <- function(pCoeff,px) {
     ## pCoeff ist der Koeffizientenvektor der Länge n+1
     ## px ist der Parametervektor der affinen Funktion Länge n
 
     ## affinen Funktionswert berechnen 
     ## mit den Koeffizienten aus pCoeff
     x4affin <- c(1,px)
     ## px=(3,4)  x4affin=(1,3,4)
     ## x4affin hat die Länge n+1
     ## Funktionswert der affinen Funktion berechnen
     ret <- sum(pCoeff * x4affin)
     return(ret)
  }

Insgesamt erhält man die affine Funktion wie folgt aus dem Model:

x_test <- c(3,7)
f_affin(coeff,x_test)

Interpretation der Ergebnisse

[Bearbeiten]
  • Auswertung der Modellparameter:
    • Koeffizienten für und
    • Konstante
  • Interpretation der Kovarianzmatrix:
    • Kovarianz zwischen den Zufallsvariablen und für die Daten.
    • Kovarianz zwischen den Zufallsvariablen und bzw. .

Praktische Übung

[Bearbeiten]
  • Implementieren Sie eine mehrdimensionale lineare Regression anhand eines Beispiel-Datensatzes.
  • Auswerten Sie die Ergebnisse und interpretieren Sie die Modellparameter und die Kovarianzmatrix.

Ressourcen

[Bearbeiten]
  • R-Bibliothek: lm()
  • R-Bibliothek: `summary()`
  • R-Bibliothek: `data.frame()`

Iteratives Vorgehen der Matrixbestimmung

[Bearbeiten]

Man unterscheidet folgende Fehlerfunktionen bei der mehrdimensionalen linearen Regression

  • ist die Fehlerfunktion für die Komponentenfunktion und ein einzelnes Datum. Die Fehlerfunktion kann auch negative Werte besitzen und an dem Fehler ist ablesbar, ob der berechnete Funktionswert der linearen Funktion zu klein oder zu groß im Vergleich zum gemessenen Wert ist.
  • ist die aggregierte Fehlerfunktion für eine von Komponentenfunktionen und alle Daten aus . Die Fehlerfunktion ist nicht negative. Besitzt diese den Wert 0, so werden durch die lineare Funktion alle Daten korrekt vorhergesagt (fehlerfreie Darstellung der Daten).
  • ist die aggregierte Fehlerfunktion über aller Komponentenfunktion und alle Daten aus . Die Fehlerfunktion ist nicht negative. Besitzt diese den Wert 0, so werden durch die lineare Funktion alle Daten korrekt vorhergesagt (fehlerfreie Darstellung der Daten).

Definition - Fehlerfunktion der Komponentenfunktion

[Bearbeiten]

Nun kann man die Fehlerfunktion der linearen Regression mit eindimensionalen Wertebereich definieren:

Der Vektor ist ein Zeilvektor der gesuchten unbekannten Matrix .

Komponentenweisen Fehlerfunktion in R für ein Datenpaar (x,y)

[Bearbeiten]

In der folgenden Implementation bezeichnet p immer Variablen, die als Parameter der Funktion übergeben.

   e_LR <- function (pa,px,py) {
    ## pa : Vektor - n-dimensional a
    ## px : Vektor - n-dimensional x
    ## py : Zahl - Messwert y
    ret <-  sum(pa * px) - py 
    ## Rückgabewert: Fehler für (pa,px,py) 
    ret
  }

Fehlerfunktion der Linearen Regression in R

[Bearbeiten]
 E_LR <- function (pa,px_D,py_D) {
    ## pa : darstellender Vektor von f_a
    ## px_D : Dataframe - Liste von x-Vektoren   
    ## py_D : Dataframe - Liste von y-Werten
    
    ## Fehler pro Datenpunkt berechnen
    datenanzahl <- nrow(px_D) ## Anzahl Reihen px_D
    e_D <- rep(0,datenanzahl)
    ## Fehler für alle Datenpunkte berechnen 
    for (i in 1:datenanzahl) {
      ## quadratische Einfehler mit Funktion e 
      e_D[i] <- (sum(pa*px_D[i, ]) - py_D[i, ])^2
    } 
    ## Rückgabewert: aufsummierte Einzelfehler aus e_D
    ret <-  sum(e_D) 
    ## Rückgabewert: return  Gesamtfehler quadratisch
    ret
 }

Daten für Fehlerfunktion in R definieren

[Bearbeiten]
## Datenspalten festlegen
x1 <- c(1,2,7,7) # Datenspalte für x1
x2 <- c(2,3,0,6) # Datenspalte für x2
x3 <- c(3,1,4,5) # Datenspalte für x3
y1 <- c(16.1,22.1,25.9,56.6) # Datenspalte für y1
## Daten für x aus IR^3
x_D <- data.frame(x1,x2,x3)
## Daten für y aus IR^3
y_D <- data.frame(y1)

Fehlerfunktion in R aufrufen

[Bearbeiten]
## a für f_a(x)=<a,x> definieren
a <- c(2,3,2)
## Fehler für a berechnen
E_LR(a,x_D,y_D) 
 
## a verändern für f_a(x)=<a,x> 
a <- c(3,5,2)
## Fehler für a erneut berechnen
E_LR(a,x_D,y_D)

Iterative Umsetzung in R - Funktion

[Bearbeiten]

Die Details und die schrittweise Definition und Nutzung von Funktionen findet man unter der Lerneinheit zur iterativen Umsetzung der mehrdimensionalen linearen Regression in R.

Fazit

[Bearbeiten]

In dieser Lerneinheit haben Sie gelernt, wie Sie eine mehrdimensionale lineare Regression in R implementieren können. Sie haben gesehen, wie Sie einen Beispiel-Datensatz erstellen, ein Modell erstellen und die Ergebnisse interpretieren können. Mit dieser Kenntnis können Sie nun komplexe Datenanalysen durchführen und fundierte Entscheidungen treffen.

Siehe auch

[Bearbeiten]