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

30. Mai 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.

# Pandas Bibliothek unter dem Namen pd importieren
import pandas as pd

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

# Daten ausgeben
df
land_surface_temp ndvi precipitation active_fires
time
2000-06-01 25.375011 0.735735 53.923725 14.617312
2000-07-01 20.209670 0.683060 124.440530 6.449579
2000-08-01 22.556900 0.666294 75.619480 8.319817
2000-09-01 18.529358 0.670358 85.977740 9.897439
2000-10-01 13.169103 0.651168 65.449170 5.179492
... ... ... ... ...
2023-02-01 2.926635 0.588160 23.885208 7.762980
2023-03-01 6.234475 0.593562 106.197395 3.853576
2023-04-01 12.250342 0.651034 39.400890 11.083784
2023-05-01 19.863577 0.702562 39.259007 21.962063
2023-06-01 26.107157 0.692752 76.053820 19.537877

277 rows × 4 columns

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
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.

4 Abhängige und Unabhängige Variablen definieren

Aufgabe 6

  • Kopiere und 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 anzeigen
print(X[:10])

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

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 7

  • 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)

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 8

  • Trainieren Sie das Modell mit den Trainingsdaten.

(5 Minuten)

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 9

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

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

(10 Minuten)

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 10

  • 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)

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.6609674788950239

9 Verbesserung des Modells

Aufgabe 11

  • Wie könnte man die Genauigkeit der Vorhersagen des Modells noch weiter verbessern?
  • 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.

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@online{sparmann2025,
  author = {Sparmann, Sören},
  title = {Multiple Lineare Regression (Teil 2)},
  date = {2025-05-30},
  url = {https://climate-data-entrepreneurial-club.netlify.app/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).” May 30, 2025. https://climate-data-entrepreneurial-club.netlify.app/modul_2/submodules/02_waldbrand/02_multiple_lineare_regression.html.
close all nutshells