Wie führt man eine Regressionsanalyse in MATLAB durch?
In diesem Beitrag
- Grundlagen: Was berechnet eine Regressionsanalyse?
- Die zentrale Funktion: fitlm in MATLAB
- Schritt-für-Schritt-Anleitung zur linearen Regression
- Den Modell-Output lesen und interpretieren
- Residuendiagnostik: Pflichtprogramm nach der Schätzung
- Multiple und erweiterte Regressionsmodelle
- Häufige Fehler und wie Sie sie vermeiden
Grundlagen: Was berechnet eine Regressionsanalyse?
Eine Regressionsanalyse modelliert den Zusammenhang zwischen einer abhängigen Variable (Response) und einer oder mehreren unabhängigen Variablen (Prädiktoren). Das Ziel ist es, die Beziehung zwischen diesen Variablen quantitativ zu beschreiben und Vorhersagen zu treffen.
Das einfachste Modell – die einfache lineare Regression – lässt sich so formulieren:
Einfaches lineares Regressionsmodell
Dabei ist der Achsenabschnitt (Intercept), der Steigungskoeffizient und der Fehlerterm. MATLAB schätzt diese Parameter über die Methode der kleinsten Quadrate (Ordinary Least Squares, OLS).
Wenn Sie mehr über den breiteren Einsatz von MATLAB im statistischen Kontext erfahren möchten, gibt der Artikel Wofür wird MATLAB in der Statistik verwendet? einen guten Überblick über typische Anwendungsfelder.
Die zentrale Funktion: fitlm in MATLAB
MATLAB stellt für lineare Regressionsmodelle die Funktion fitlm bereit. Sie ist der empfohlene Einstiegspunkt für die meisten Regressionsaufgaben – von der einfachen Regression bis hin zu komplexen Modellen mit Interaktionen und kategorialen Prädiktoren.
Die offizielle fitlm-Dokumentation beschreibt mehrere Möglichkeiten, das Modell aufzurufen:
- mdl = fitlm(tbl) – MATLAB nimmt automatisch die letzte Variable einer Tabelle als Zielvariable
- mdl = fitlm(tbl, ‚ResponseVarName‘) – Sie benennen die Zielvariable explizit
- mdl = fitlm(X, y) – Sie übergeben eine Prädiktormatrix X und einen Responsevektor y direkt
- mdl = fitlm(tbl, modelspec) – Sie definieren die Modellstruktur über eine Formelschreibweise
Das Ergebnis ist ein LinearModel-Objekt, das Koeffizienten, Standardfehler, t-Statistiken, p-Werte, R² und weitere Modellinformationen enthält – alles, was Sie für die Interpretation in einer Abschlussarbeit benötigen.
Schritt-für-Schritt-Anleitung zur linearen Regression
Schritt 1: Daten laden und vorbereiten
MATLAB enthält mehrere eingebaute Beispieldatensätze. Für dieses Tutorial verwenden wir den carsmall-Datensatz, der Fahrzeugdaten wie Gewicht, PS-Zahl und Kraftstoffverbrauch enthält.
% Beispieldatensatz laden
load carsmall
% Prädiktoren und Zielvariable definieren
X = [Weight, Horsepower, Acceleration];
y = MPG;
% Fehlende Werte entfernen
idx = any(isnan([X, y]), 2);
X(idx, :) = [];
y(idx) = [];
Schritt 2: Daten in eine MATLAB-Tabelle überführen
fitlm arbeitet besonders komfortabel mit MATLAB-Tabellen, weil Variablennamen direkt in den Output übernommen werden. Das erleichtert die Lesbarkeit des Ergebnisses erheblich.
% Tabelle erstellen
tbl = table(Weight, Horsepower, Acceleration, MPG);
% Zeilen mit fehlenden Werten entfernen
tbl = rmmissing(tbl);
Schritt 3: Regressionsmodell anpassen
Jetzt folgt der eigentliche Modell-Fit. Mit der Formelschreibweise geben Sie exakt an, welche Prädiktoren in das Modell eingehen sollen.
% Lineares Regressionsmodell mit fitlm schätzen
mdl = fitlm(tbl, 'MPG ~ Weight + Horsepower + Acceleration');
% Modell anzeigen
disp(mdl)
Der Befehl disp(mdl) gibt eine übersichtliche Koeffiziententabelle aus – vergleichbar mit dem Regressions-Output, den Sie aus SPSS oder R kennen.
Den Modell-Output lesen und interpretieren
Nach dem Aufruf von disp(mdl) sehen Sie eine Tabelle mit folgenden Spalten:
| Spalte | Bedeutung |
|---|---|
| Estimate | Geschätzter Regressionskoeffizient |
| SE | Standardfehler des Koeffizienten |
| tStat | t-Statistik: Estimate / SE |
| pValue | Zweiseitiger p-Wert für den Signifikanztest |
Zusätzlich liefert MATLAB direkt unterhalb der Koeffiziententabelle das Bestimmtheitsmaß R² sowie das adjustierte R², den Root Mean Squared Error (RMSE) und den F-Test für das Gesamtmodell.
Koeffizienten gezielt abrufen
Für die weitere Verarbeitung oder Berichterstellung können Sie einzelne Kennwerte direkt aus dem LinearModel-Objekt extrahieren:
% R² und adjustiertes R² ausgeben
r2 = mdl.Rsquared.Ordinary;
r2_adj = mdl.Rsquared.Adjusted;
fprintf('R² = %.4f\n', r2);
fprintf('Adj. R² = %.4f\n', r2_adj);
% Koeffiziententabelle als Tabelle speichern
koeff_tabelle = mdl.Coefficients;
disp(koeff_tabelle)
Das Bestimmtheitsmaß einordnen
Bestimmtheitsmaß R²
R² gibt an, welcher Anteil der Varianz in der Zielvariable durch das Modell erklärt wird. Ein Wert von 0,75 bedeutet: 75 % der Streuung in den Daten wird durch die Prädiktoren erklärt. Beachten Sie, dass R² mit jedem zusätzlichen Prädiktor steigt – das adjustierte R² korrigiert diesen Effekt und ist daher bei multiplen Regressionsmodellen die aussagekräftigere Kennzahl.
Residuendiagnostik: Pflichtprogramm nach der Schätzung
Eine Regressionsanalyse ist methodisch erst dann vollständig, wenn die Modellannahmen überprüft wurden. Das klingt zunächst aufwendig, ist in MATLAB aber mit wenigen Befehlen erledigt.
Residuen sind die Differenzen zwischen beobachteten und vorhergesagten Werten: . Sie helfen dabei, Ausreißer zu identifizieren und Verletzungen der Modellvoraussetzungen aufzudecken. Dabei gilt: Beobachtungen mit hohem Hebel können trotz kleiner Residuen die Modellschätzung stark beeinflussen – ein häufig übersehener Punkt in der Praxis.
Residuenplots erstellen
% Residuen gegen gefittete Werte plotten
figure;
plotResiduals(mdl, 'fitted');
title('Residuen vs. Fitted Values');
% Normalverteilung der Residuen prüfen (QQ-Plot)
figure;
plotResiduals(mdl, 'probability');
title('Normal Probability Plot der Residuen');
% Residuen als Histogram
figure;
plotResiduals(mdl, 'histogram');
title('Histogramm der Residuen');
Was Sie in den Plots suchen
- Residuen vs. Fitted: Kein erkennbares Muster (z. B. keine Trichterform) – sonst liegt Heteroskedastizität vor
- QQ-Plot: Punkte liegen möglichst nah an der Diagonalen – Abweichungen deuten auf nicht-normalverteilte Residuen hin
- Histogramm: Annähernd symmetrische, glockenförmige Verteilung
Einflussreiche Beobachtungen identifizieren
% Cook's Distance berechnen und visualisieren
figure;
plotDiagnostics(mdl, 'cookd');
title('Cook''s Distance');
% Leverage-Werte (Hebelwerte) ausgeben
leverage = mdl.Diagnostics.Leverage;
disp(leverage)
Multiple und erweiterte Regressionsmodelle
Multiple lineare Regression
Das Prinzip der einfachen linearen Regression lässt sich direkt auf mehrere Prädiktoren erweitern. In der Formelschreibweise von fitlm trennen Sie die Prädiktoren einfach durch +:
Multiples lineares Regressionsmodell
% Multiple Regression mit drei Prädiktoren
mdl_multi = fitlm(tbl, 'MPG ~ Weight + Horsepower + Acceleration');
disp(mdl_multi)
Polynomiale Regression
Wenn der Zusammenhang zwischen Prädiktor und Zielvariable nicht linear ist, können Sie ein quadratisches Modell verwenden. Für polynomiale Terme wird in der Designmatrix einfach eine zusätzliche Spalte mit dem quadrierten Prädiktor ergänzt – dabei ist die elementweise Potenzierung mit .^ entscheidend, nicht die Matrixpotenzierung mit ^.
% Quadratisches Modell über Formelschreibweise
mdl_poly = fitlm(tbl, 'MPG ~ Weight + Weight^2');
disp(mdl_poly)
% Alternativ: Designmatrix manuell aufbauen
x = tbl.Weight;
X_poly = [ones(size(x)), x, x.^2]; % .^ für elementweise Potenzierung!
b = X_poly \ tbl.MPG; % Least-Squares-Lösung
% Hinweis: b(1) = beta0, b(2) = beta1, b(3) = beta2
Ein wichtiger MATLAB-spezifischer Hinweis, der in der Praxis oft für Verwirrung sorgt: Da MATLAB bei der Indexierung mit 1 beginnt, ist b(1) der Schätzer für den Achsenabschnitt (β₀), nicht für den ersten Steigungskoeffizienten.
Robuste Regression
Wenn Ausreißer die OLS-Schätzung verzerren, bietet fitlm über das Name-Value-Argument RobustOpts eine robuste Regression an:
% Robuste Regression (Bisquare-Gewichtung)
mdl_robust = fitlm(tbl, 'MPG ~ Weight + Horsepower', ...
'RobustOpts', 'bisquare');
disp(mdl_robust)
Kategoriale Prädiktoren einbinden
Wenn Sie kategoriale Variablen (z. B. Studiengang, Gruppe, Geschlecht) als Prädiktoren aufnehmen möchten, kennzeichnen Sie die entsprechende Tabellenspalte als categorical. MATLAB kodiert Dummy-Variablen dann automatisch.
% Beispiel: Kategoriale Variable einbinden
tbl.Gruppe = categorical(tbl.Gruppe);
mdl_cat = fitlm(tbl, 'Ergebnis ~ Alter + Gruppe');
disp(mdl_cat)
Häufige Fehler und wie Sie sie vermeiden
Checkliste: Sauberer Regressions-Workflow in MATLAB
- Fehlende Werte vor der Analyse entfernen (rmmissing oder isnan)
- Variablen in einer MATLAB-Tabelle organisieren, nicht als lose Vektoren
- Elementweise Operatoren (.*, .^) statt Matrix-Operatoren (* , ^) bei manuellen Berechnungen
- b(1) ist der Intercept-Schätzer – nicht b(0), da MATLAB ab Index 1 zählt
- Residuendiagnostik immer durchführen: plotResiduals und plotDiagnostics
- Adjustiertes R² berichten, wenn mehrere Prädiktoren im Modell sind
- Einflussreiche Beobachtungen über Cook’s Distance und Hebelwerte prüfen
- Modellspezifikation per modelspec-Formel explizit benennen – nicht dem MATLAB-Standard überlassen
Ob MATLAB für Ihre spezifische Abschlussarbeit die richtige Wahl ist oder ob R oder Python besser zu Ihrem Studienkontext passen, diskutiert der Vergleichsartikel Wie unterscheidet sich MATLAB von R und Python für statistische Analysen? – gerade wenn Sie sich noch nicht festgelegt haben, lohnt sich dieser Blick.
Wenn Sie eine Regressionsanalyse im Rahmen einer Abschlussarbeit durchführen und dabei methodische Unterstützung benötigen – von der Modellspezifikation über die Interpretation bis zur Ergebnisdarstellung – finden Sie bei unserer statistischen Beratung für MATLAB erfahrene Ansprechpersonen, die MATLAB-Auswertungen für Abschlussarbeiten regelmäßig begleiten.
Abschließend ein Hinweis für alle, die ihre Abschlussarbeit mit MATLAB auswerten: Weitere Informationen dazu, ob MATLAB für diesen Zweck empfehlenswert ist, bietet der Beitrag Ist MATLAB für die statistische Auswertung einer Abschlussarbeit geeignet?