Multiple Lineare Regression (Teil 2)

Vorhersagemodell für die Waldbrandgefahr in Deutschland

Im zweiten Teil wird das Modell um weitere Eingabevariablen erweitert, darunter Niederschlagsmenge und Vegetationsindex. Anschließend wird die erweiterte Modellversion mit dem ursprünglichen Modell verglichen, um die Auswirkungen zusätzlicher Informationen auf die Vorhersagegenauigkeit zu untersuchen.

Autor:in
Zugehörigkeit

Sören Sparmann

Universität Paderborn

Veröffentlichungsdatum

14. September 2025

1 Multiple Lineare Regression

In Teil 1 haben wir festgestellt, dass die Oberflächentemperatur als alleinige Eingabevariable nicht ausreicht, um die Waldbrandgefahr zufriedenstellend genau vorherzusagen.

Deshalb erweitern wir das Modell – wie ursprünglich vorgesehen – um die zusätzlichen Variablen Vegetationsindex und Niederschlag.

2 Daten einlesen

Zunächst werden die historischen Daten erneut eingelesen, die als Grundlage für das Training des Vorhersagemodells dienen.

Daten einlesen
# Data Science Bibliothek importieren
import pandas as pd

# Daten einlesen
df = pd.read_csv(
'data/fire_prediction.csv',
index_col='time',
parse_dates=True
)

# Daten ausgeben
df
_pyodide_editor_2 = Object {code: null, options: Object, indicator: it}

3 Erweiterte Modellannahme

Nun erweitern wir das Modell wie ursprünglich geplant, sodass auch die Variablen Vegetationsindex und Niederschlag in die Vorhersage einbezogen werden.

Da nun mehr als eine unabhängige Variable verwendet wird, handelt es sich um eine Multiple Lineare Regression (MLR).

Jede Eingabevariable xi erhält dabei einen eigenen Koeffizienten ai, der den Einfluss dieser Variable auf die Vorhersage gewichtet. Das Modell besitzt somit insgesamt vier Parameter: a1, a2, a3 und b.

Mathematisch ausgedrückt sieht das Modell wie folgt aus:

active_fires=a1land_surface_temp+a2ndvi+a3precipitation+b

Abbildung 1: Lineares Modell
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model
_pyodide_editor_3 = Object {code: null, options: Object, indicator: it}

4 Abhängige und Unabhängige Variablen definieren

Aufgabe 1

  • Modifiziere den folgenden Programmcode gemäß der erweiterten Modellannahme!
  • Füge dazu die Namen der unabhängigen und abhängigen Variablen an den entsprechenden Stellen ein.

(5 Minuten)

Tipp

Du kannst mehrere Variablen eingeben, indem du diese durch ein Komma trennst 'variable 1', 'variable 2', ....

# Unabhängigen Variablen
X = df[[ ]].values

# Abhängige Variable
y = df[ ].values

# Erste 10 Werte von X anzeigen
print(X[:10])

# Erste 10 Werte von y anzeigen
print(y[:10])
_pyodide_editor_4 = Object {code: null, options: Object, indicator: it}
Lösung

Gemäß der Modellannahme umfasst X die Werte für die Oberflächentemperatur, den Vegetationsindex und des Niederschlags.

# Liste der unabhängigen Variablen
X = df[['land_surface_temp', 'ndvi', 'precipitation']].values

# Abhängige Variable
y = df['active_fires'].values

# Erste 10 Werte anzeigen
print(X[:10])

# Erste 10 Werte anzeigen
print(y[:10])
[[ 25.375011     0.73573464  53.923725  ]
 [ 20.20967      0.6830602  124.44053   ]
 [ 22.5569       0.6662941   75.61948   ]
 [ 18.529358     0.67035836  85.97774   ]
 [ 13.169103     0.6511683   65.44917   ]
 [  6.716287     0.62651026  61.45082   ]
 [  1.2282279    0.6008413   65.994225  ]
 [ -0.35104537   0.49899042  84.546036  ]
 [  2.5692344    0.5343365   79.08696   ]
 [  5.3737736    0.5435308  129.0916    ]]
[14.61731241  6.44957875  8.31981727  9.89743903  5.17949197  3.26112532
  3.50224441  3.64374019  4.56008876  3.88534059]

5 Trainings- und Validierungsdaten

Aufgabe 2

  • Teilen sie den Datensatz nun in Trainings- und Validierungsdaten auf.
  • Verwenden Sie die gleichen Parameter (random_state=42, test_size=0.25) wie zuvor, um die Vergleichbar sicher zu stellen.

(5 Minuten)

# Importiere Funktion für die Aufteilung des Datensatzes in Trainings- und Validierungsdaten
from sklearn.model_selection import train_test_split

# Daten in Trainings- und Validierungsdaten aufteilen
_pyodide_editor_5 = Object {code: null, options: Object, indicator: it}
Lösung
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

6 Modell trainieren

Aufgabe 3

  • Trainieren Sie das Modell mit den Trainingsdaten.

(5 Minuten)

# Hier Programmcode einfügen
_pyodide_editor_6 = Object {code: null, options: Object, indicator: it}
Lösung

Wie zuvor wird das Modell mit der Methode .fit(X, y) an die Daten angepasst.

model.fit(X_train, y_train)
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.

7 Vorhersage machen

Aufgabe 4

Stelle dir vor, du verwendest das Modell in der Zukunft, um die Waldbrandgefahr vorherzusagen.

  • Im August 2028 wird folgende Messungen gemacht
    • Oberflächentemperatur: 35 C°
    • Vegetationsindex: 0.7
    • Niederschlag: 25 mm
  • Bestimme die zu erwartende Anzahl an Waldbränden!

(10 Minuten)

# Hier Programmcode einfügen
_pyodide_editor_7 = Object {code: null, options: Object, indicator: it}
Lösung

Mit der Methode .predict() können wir die Anzahl der Waldbrände vorhersagen. Dabei ist darauf zu achten, dass die Reihenfolge der Werte mit der Definition von X übereinstimmen.

model.predict([
    [35, 0.7, 25]
])
array([23.55662869])

8 Modell evaluieren

Aufgabe 5

  • Evaluiere das Modell wie in Teil 1 gezeigt:
    • Erstelle ein Streudiagramm, das die vorhergesagten Werte den tatsächlichen gegenüberstellt.
    • Berechne den Score (R2) des neuen Modells.
  • Hat sich die Güte des Modells durch das Hinzufügen der Variablen verbessert? Begründe!

(10 Minuten)

# Hier Programmcode einfügen
_pyodide_editor_8 = Object {code: null, options: Object, indicator: it}
Lösung

Der Score hat sich von 0.57 auf 0.66 verbessert.

# Vorhersage erstellen
y_pred = model.predict(X_test)
from sklearn.metrics import PredictionErrorDisplay

ped = PredictionErrorDisplay(y_true=y_test, y_pred=y_pred)
ped.plot(kind="actual_vs_predicted")

model.score(X_test, y_test)
0.6609674788950238

9 Verbesserung des Modells

Aufgabe 6

  • Wie könnte die Genauigkeit der Vorhersagen des Modells noch weiter verbessert werden?
  • Notiere mindestens zwei Ideen!

(10 Minuten)

  • Raumbezug herstellen
  • Klassifikation statt Regression (Hohe, mittlere, niedrige Waldbrandgefahr)
  • Zusätzliche Variablen einbeziehen (Urlaubszeit, Wettervorhersage)
  • Höhere zeitliche Auflösung (Wochen- oder Tagesmittelwerte) um frühzeitig reagieren zu können.
  • Verwendung eines quadratischen Zusammenhangs für die Variable ndvi.

10 Zusammenfassung

In diesem Notebook hast du gelernt, wie du:

  • das bestehende Vorhersagemodell um weitere Variablen erweiterst, z. B. Vegetationsindex (ndvi) und Niederschlagsmenge (precipitation),
  • die unabhängigen Variablen als Matrix X und die Zielvariable als Vektor y vorbereitest,
  • ein multiples lineares Regressionsmodell mit LinearRegression() trainierst,
  • die Regressionskoeffizienten für jede Einflussvariable interpretierst,
  • die Vorhersagegenauigkeit des erweiterten Modells mit dem einfachen Modell vergleichst,
  • feststellst, dass zusätzliche Informationen (mehr Prädiktoren) oft zu besseren Vorhersagen führen,
  • wichtige Konzepte der Modellerweiterung, Vergleichbarkeit und Interpretation in der multivariaten Regression verstehst.
Downloading package: plotly

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@online{sparmann2025,
  author = {Sparmann, Sören},
  title = {Multiple Lineare Regression (Teil 2)},
  date = {2025-09-14},
  url = {https://material.cdec.io/modul_2/submodules/02_waldbrand/02_multiple_lineare_regression.html},
  langid = {de}
}
Bitte zitieren Sie diese Arbeit als:
Sparmann, Sören. 2025. “Multiple Lineare Regression (Teil 2).” September 14, 2025. https://material.cdec.io/modul_2/submodules/02_waldbrand/02_multiple_lineare_regression.html.
close all nutshells