Woche 9-10: Metrische Einflussgrößen

Ziel

Verwendung und Interpretation metrischer Einflussgrößen in Regressionsmodellen.

Inhalte

Umgang mit metrischen Variablen

Metrische Variablen sind quantitative Variablen, die auf einem Intervall- oder Verhältnisskalenniveau gemessen werden. Sie können beliebige numerische Werte annehmen und sind in der Regel kontinuierlich. In Regressionsmodellen werden metrische Variablen als unabhängige Variablen verwendet, um den Einfluss auf eine abhängige Variable zu untersuchen.

Beispiele für metrische Variablen

  • Alter
  • Einkommen
  • Temperatur
  • Entfernung

Lineare und nichtlineare Beziehungen

Lineare Beziehungen

Eine lineare Beziehung zwischen zwei Variablen wird durch eine Gerade dargestellt, die durch die Datenpunkte passt. In einem Regressionsmodell wird diese Beziehung durch die Gleichung einer Geraden beschrieben:

  • : abhängige Variable
  • : unabhängige Variable (metrisch)
  • : Achsenabschnitt
  • : Steigungskoeffizient
  • : Fehlerterm

Der Steigungskoeffizient gibt die durchschnittliche Änderung der abhängigen Variable für eine Einheit Änderung der unabhängigen Variablen an.

Nichtlineare Beziehungen

Nichtlineare Beziehungen zwischen Variablen können komplexer sein und erfordern erweiterte Modellierungstechniken. Diese Beziehungen können durch Transformationen der Variablen oder durch die Verwendung von polynomialen und spline-basierten Modellen dargestellt werden.

Polynomiale und spline-basierte Modelle

Polynomiale Regressionsmodelle

Polynomiale Regression ist eine Erweiterung des linearen Regressionsmodells, bei der die Beziehung zwischen der unabhängigen und der abhängigen Variablen durch ein Polynom höherer Ordnung beschrieben wird:

  • : Potenzen der unabhängigen Variablen
  • : Regressionskoeffizienten für die höheren Ordnungen

Polynomiale Modelle können verwendet werden, um nichtlineare Beziehungen zwischen den Variablen zu modellieren und besser an die Daten anzupassen.

Spline-basierte Modelle

Spline-basierte Modelle verwenden Stückweise-polynomiale Funktionen, um komplexe, nichtlineare Beziehungen zu modellieren. Diese Modelle teilen den Bereich der unabhängigen Variablen in Intervalle (Segmente) und passen innerhalb jedes Intervalls ein Polynom an. Splines bieten eine flexible Methode, um glatte Kurven durch die Daten zu zeichnen.

Ein gängiger Typ von Splines sind kubische Splines, die Polynomiale dritten Grades innerhalb der Segmente verwenden. Die Übergänge zwischen den Segmenten sind glatt, sodass die Funktion und ihre ersten beiden Ableitungen stetig sind.

Standardisierung und Zentrierung

Standardisierung

Die Standardisierung einer Variablen bedeutet, dass sie so transformiert wird, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 hat. Dies wird erreicht durch:

  • : Mittelwert der Variablen
  • : Standardabweichung der Variablen

Die Standardisierung wird oft verwendet, um Variablen auf eine vergleichbare Skala zu bringen, insbesondere wenn Variablen unterschiedliche Einheiten oder Größenordnungen haben.

Zentrierung

Die Zentrierung einer Variablen bedeutet, dass der Mittelwert der Variablen von jedem Wert subtrahiert wird:

Die Zentrierung kann helfen, Multikollinearität zu reduzieren, insbesondere bei polynomialen oder Interaktionstermen in Regressionsmodellen.

Übungen

Erstellung und Interpretation von Modellen mit metrischen Variablen

Beispiel in R

# Daten laden
data <- read.csv("data.csv")
 
# Lineares Regressionsmodell erstellen
model <- lm(Y ~ Alter + Einkommen, data = data)
summary(model)
 
# Interpretation der Ergebnisse
cat("Achsenabschnitt (β0):", coef(model)[1], "\n")
cat("Steigung für Alter (β1):", coef(model)[2], "\n")
cat("Steigung für Einkommen (β2):", coef(model)[3], "\n")
cat("R²:", summary(model)$r.squared, "\n")

Beispiel in Python

import pandas as pd
import statsmodels.api as sm
 
# Daten laden
data = pd.read_csv("data.csv")
 
# Lineares Regressionsmodell erstellen
X = data[['Alter', 'Einkommen']]
X = sm.add_constant(X)
model = sm.OLS(data['Y'], X).fit()
print(model.summary())
 
# Interpretation der Ergebnisse
params = model.params
print(f'Achsenabschnitt (β0): {params[0]}')
print(f'Steigung für Alter (β1): {params[1]}')
print(f'Steigung für Einkommen (β2): {params[2]}')
print(f'R²: {model.rsquared}')

Anwendung von polynomialen Regressionsmodellen

Beispiel in R

# Polynomiale Regressionsmodell erstellen
model_poly <- lm(Y ~ poly(Alter, 2) + Einkommen, data = data)
summary(model_poly)
 
# Interpretation der Ergebnisse
cat("Achsenabschnitt (β0):", coef(model_poly)[1], "\n")
cat("Koeffizient für Alter (β1):", coef(model_poly)[2], "\n")
cat("Koeffizient für Alter^2 (β2):", coef(model_poly)[3], "\n")
cat("Steigung für Einkommen (β3):", coef(model_poly)[4], "\n")
cat("R²:", summary(model_poly)$r.squared, "\n")

Beispiel in Python

import pandas as pd
import statsmodels.api as sm
import numpy as np
 
# Daten laden
data = pd.read_csv("data.csv")
 
# Polynomiale Terme hinzufügen
data['Alter_Quadrat'] = data['Alter'] ** 2
 
# Polynomiales Regressionsmodell erstellen
X_poly = data[['Alter', 'Alter_Quadrat', 'Einkommen']]
X_poly = sm.add_constant(X_poly)
model_poly = sm.OLS(data['Y'], X_poly).fit()
print(model_poly.summary())
 
# Interpretation der Ergebnisse
params_poly = model_poly.params
print(f'Achsenabschnitt (β0): {params_poly[0]}')
print(f'Koeffizient für Alter (β1): {params_poly[1]}')
print(f'Koeffizient für Alter^2 (β2): {params_poly[2]}')
print(f'Steigung für Einkommen (β3): {params_poly[3]}')
print(f'R²: {model_poly.rsquared}')

Ausführliches Beispiel und Interpretation

Um die Konzepte vollständig zu verstehen, betrachten wir ein detailliertes Beispiel mit einer schrittweisen Durchführung und Interpretation.

Datensatz: Hypothetische Studie über Einkommen und Alter

Angenommen, wir haben einen Datensatz mit folgenden Variablen:

  • Einkommen: Das Jahreseinkommen in Tausend Euro
  • Alter: Das Alter in Jahren
  • Bildungsjahre: Die Anzahl der Jahre formaler Bildung

Unser Ziel ist es, den Einfluss von Alter und Bildungsjahre auf das Einkommen zu untersuchen.

Datensatz erstellen (hypothetisch)

import pandas as pd
import numpy as np
 
np.random.seed(0)
 
# Hypothetische Daten generieren
data = pd.DataFrame({
    'Einkommen': np.random.normal(50, 10, 100),
    'Alter': np.random.randint(20, 60, 100),
    'Bildungsjahre': np.random.randint(10, 20, 100)
})
 
# Daten anzeigen
print(data.head())

Schritt 1: Lineares Regressionsmodell erstellen

Zunächst erstellen wir ein einfaches lineares Regressionsmodell, das Einkommen als abhängige Variable und Alter und Bildungsjahre als unabhängige Variablen verwendet.

Modell in R

# Daten laden
data <- read.csv("data.csv")
 
# Lineares Regressionsmodell erstellen
model <- lm(Einkommen ~ Alter + Bildungsjahre, data = data)
summary(model)
 
# Interpretation der Ergebnisse
cat("Achsenabschnitt (β0):", coef(model)[1], "\n")
cat("Steigung für Alter (β1):", coef(model)[2], "\n")
cat("Steigung für Bildungsjahre (β2):", coef(model)[3], "\n")
cat("R²:", summary(model)$r.squared, "\n")

Modell in Python

import pandas as pd
import statsmodels.api as
 
 sm
 
# Daten laden
data = pd.read_csv("data.csv")
 
# Lineares Regressionsmodell erstellen
X = data[['Alter', 'Bildungsjahre']]
X = sm.add_constant(X)
model = sm.OLS(data['Einkommen'], X).fit()
print(model.summary())
 
# Interpretation der Ergebnisse
params = model.params
print(f'Achsenabschnitt (β0): {params[0]}')
print(f'Steigung für Alter (β1): {params[1]}')
print(f'Steigung für Bildungsjahre (β2): {params[2]}')
print(f'R²: {model.rsquared}')

Interpretation der Ergebnisse

  1. Achsenabschnitt (): Der Achsenabschnitt stellt das erwartete Einkommen dar, wenn alle unabhängigen Variablen gleich null sind. Da ein Alter von 0 und Bildungsjahre von 0 in diesem Kontext keinen Sinn ergeben, ist der Achsenabschnitt weniger relevant.
  2. Steigung für Alter (): Die Steigung für Alter gibt die durchschnittliche Änderung des Einkommens pro Jahr der Zunahme des Alters an, während alle anderen Variablen konstant gehalten werden.
  3. Steigung für Bildungsjahre (): Die Steigung für Bildungsjahre gibt die durchschnittliche Änderung des Einkommens pro Jahr der Zunahme der formalen Bildung an, während alle anderen Variablen konstant gehalten werden.
  4. Bestimmtheitsmaß (): Das gibt den Anteil der Variation im Einkommen an, der durch die unabhängigen Variablen Alter und Bildungsjahre erklärt wird. Ein höherer Wert bedeutet, dass das Modell die Daten besser erklärt.

Schritt 2: Polynomiale Regression

Um zu untersuchen, ob eine nichtlineare Beziehung zwischen Alter und Einkommen besteht, erweitern wir das Modell um einen quadratischen Term für Alter.

Polynomiale Regression in R

# Polynomiale Regressionsmodell erstellen
model_poly <- lm(Einkommen ~ poly(Alter, 2) + Bildungsjahre, data = data)
summary(model_poly)
 
# Interpretation der Ergebnisse
cat("Achsenabschnitt (β0):", coef(model_poly)[1], "\n")
cat("Koeffizient für Alter (β1):", coef(model_poly)[2], "\n")
cat("Koeffizient für Alter^2 (β2):", coef(model_poly)[3], "\n")
cat("Steigung für Bildungsjahre (β3):", coef(model_poly)[4], "\n")
cat("R²:", summary(model_poly)$r.squared, "\n")

Polynomiale Regression in Python

import pandas as pd
import statsmodels.api as sm
 
# Polynomiale Terme hinzufügen
data['Alter_Quadrat'] = data['Alter'] ** 2
 
# Polynomiales Regressionsmodell erstellen
X_poly = data[['Alter', 'Alter_Quadrat', 'Bildungsjahre']]
X_poly = sm.add_constant(X_poly)
model_poly = sm.OLS(data['Einkommen'], X_poly).fit()
print(model_poly.summary())
 
# Interpretation der Ergebnisse
params_poly = model_poly.params
print(f'Achsenabschnitt (β0): {params_poly[0]}')
print(f'Koeffizient für Alter (β1): {params_poly[1]}')
print(f'Koeffizient für Alter^2 (β2): {params_poly[2]}')
print(f'Steigung für Bildungsjahre (β3): {params_poly[3]}')
print(f'R²: {model_poly.rsquared}')

Interpretation der Ergebnisse

  1. Achsenabschnitt (): Wie beim linearen Modell ist der Achsenabschnitt bei der Interpretation nicht relevant.

  2. Koeffizient für Alter (): Dieser Koeffizient gibt die lineare Komponente des Alters an. Ein positiver Wert zeigt eine steigende Beziehung zwischen Alter und Einkommen, während ein negativer Wert eine abnehmende Beziehung zeigt.

  3. Koeffizient für Alter^2 (): Dieser Koeffizient gibt die quadratische Komponente des Alters an. Ein positiver Wert zeigt eine konvexe (U-förmige) Beziehung, während ein negativer Wert eine konkave (umgekehrte U-förmige) Beziehung zeigt.

  4. Steigung für Bildungsjahre (): Die Interpretation bleibt die gleiche wie im linearen Modell.

  5. Bestimmtheitsmaß (): Das gibt an, wie gut das polynomiale Modell die Variation im Einkommen erklärt. Ein höherer Wert im Vergleich zum linearen Modell zeigt an, dass das polynomiale Modell besser geeignet ist.

Schritt 3: Spline-basierte Modelle

Für noch komplexere nichtlineare Beziehungen können spline-basierte Modelle verwendet werden.

Spline-basierte Modelle in R

library(splines)
 
# Spline-basiertes Modell erstellen
model_spline <- lm(Einkommen ~ bs(Alter, df = 4) + Bildungsjahre, data = data)
summary(model_spline)
 
# Interpretation der Ergebnisse
cat("Achsenabschnitt (β0):", coef(model_spline)[1], "\n")
cat("Koeffizienten für Spline-Terme:", coef(model_spline)[2:5], "\n")
cat("Steigung für Bildungsjahre (β4):", coef(model_spline)[6], "\n")
cat("R²:", summary(model_spline)$r.squared, "\n")

Spline-basierte Modelle in Python

import pandas as pd
import statsmodels.api as sm
from patsy import dmatrix
 
# Spline-basierte Terme hinzufügen
spline_basis = dmatrix("bs(data['Alter'], df=4)", return_type='dataframe')
X_spline = pd.concat([spline_basis, data[['Bildungsjahre']]], axis=1)
X_spline = sm.add_constant(X_spline)
model_spline = sm.OLS(data['Einkommen'], X_spline).fit()
print(model_spline.summary())
 
# Interpretation der Ergebnisse
params_spline = model_spline.params
print(f'Achsenabschnitt (β0): {params_spline[0]}')
print(f'Koeffizienten für Spline-Terme: {params_spline[1:5]}')
print(f'Steigung für Bildungsjahre (β4): {params_spline[5]}')
print(f'R²: {model_spline.rsquared}')

Interpretation der Ergebnisse

  1. Achsenabschnitt (): Ähnlich wie bei den vorherigen Modellen ist der Achsenabschnitt nicht von großem Interesse.

  2. Koeffizienten für Spline-Terme: Diese Koeffizienten repräsentieren die verschiedenen Segmente des Splines und zeigen, wie sich das Einkommen innerhalb jedes Segments des Altersbereichs ändert.

  3. Steigung für Bildungsjahre (): Bleibt wie in den vorherigen Modellen interpretiert.

  4. Bestimmtheitsmaß (): Ein hohes im Vergleich zu den anderen Modellen zeigt, dass das spline-basierte Modell die beste Anpassung an die Daten bietet und die meisten nichtlinearen Beziehungen erfasst.

Zusammenfassung

Wichtige Konzepte

  1. Lineare Regressionsmodelle: Einfache Modelle, die lineare Beziehungen zwischen unabhängigen und abhängigen Variablen darstellen.
  2. Polynomiale Regressionsmodelle: Erweiterte Modelle, die nichtlineare Beziehungen durch Hinzufügen von Potenztermen darstellen.
  3. Spline-basierte Modelle: Flexible Modelle, die komplexe nichtlineare Beziehungen durch Stückweise-polynomiale Funktionen erfassen.
  4. Standardisierung und Zentrierung: Techniken zur Transformation von Variablen, um Vergleichbarkeit und Interpretierbarkeit zu verbessern.

Praktische Anwendungen

  • Erstellung und Interpretation von Regressionsmodellen mit metrischen Variablen in R und Python.
  • Untersuchung von linearen und nichtlinearen Beziehungen.
  • Anwendung von polynomialen und spline-basierten Modellen zur Modellierung komplexer Beziehungen.

Weiterführende Übungen

  • Verwendung von realen Datensätzen zur Anwendung der gelernten Techniken.
  • Vergleich der Modellgüte zwischen linearen, polynomialen und spline-basierten Modellen.
  • Untersuchung und Interpretation von Interaktionseffekten zwischen metrischen und kategorialen Variablen.