Wie berechne ich die Regressionskoeffizienten einer multiplen Regression?


23.07.2020, 22:32

1) Ursprüngliche Tabelle:

2) Berechnung für bivariate Regression (Jahreseinkommen + Zufriedenheit):

3) Berechnung der multiplen Regression (Jahreseinkommen + Zufriedenheit + Gesundheitsniveau):


24.07.2020, 00:13

4) Darstellung in der Ebene

1 Antwort

Ich fürchte, dass da bei dir ein Verständnisproblem vorherrscht. Dein Professor macht keine lineare Regression für drei unabhängige Variable. Es sind nur zwei unabhängige Variablen, nämlich das Jahreseinkommen und das Gesundheitsniveau. Die vierte Spalte, also der Zufriedenheitsindex, ist das, was dein Modell vorhersagen soll, also dein y. In seiner Rechnung zeigt er ja auch explizit, wie die y-Werte geschätzt werden. Beachte, dass das b0 ein konstantes Glied ist, also ein Threshold. Dieser Term wird nicht verwendet, um eine der Variablen zu Gewichten, sondern gibt in dieser graphischen Darstellung eben nur an, wie "weit oben" die Ebene liegt, ab dem die Höhe der dargestellten Punkte gemessen wird.

Du kannst die Parameter b0, b1, b2 erhalten, indem du das Optimierungsproblem

Bild zum Beitrag

löst, wobei X eine Matrix ist, die für jede Zeile deiner Tabelle die beiden Werte für Jahreseinkommen und Gesundheitsniveau enthält. Außerdem wollen wir ja das konstante Glied berücksichtigen, d.h. wir fügen dieser Matrix noch eine Spalte hinzu, die nur Einsen enthält. Multipliziert man dann einen Spaltenvektor b mit drei Einträgen von rechts an die Matrix heran, wird der letzte Eintrag dieses Vektors einfach mit 1 multipliziert. Beachte, dass in dieser Darstellung der dritte Eintrag des Vektors b gerade dem b0, also dem Threshold von oben entspricht. Der Vektor y hat gerade so viele Einträge wie es Zeilen in deiner Tabelle gibt und jeder Eintrag entspricht dem Zufriedenheitsindex der jeweiligen Instanz.

Man mag sich fragen, wie man nun aus der Zielfunktion das optimale b herausbekommt. Naja, die Theorie konvexer Optimierungsprobleme legt nahe, dass wir den Gradienten bestimmen und dann schauen müssen, für welches b dieser verschwindet. Wenn ich das tu, erhalte ich die Bedingung

Bild zum Beitrag

Aber die Gleichung auf der rechten Seite entspricht einfach nur einem linearen Gleichungssystem. Und das können wir lösen! Da wir im 21. Jahrhundert leben, machen wir das aber nicht per Hand, sondern nutzen eine der zahlreichen Bibliotheken oder Programme, die unser Werkzeugkasten so hergibt. Wenn du das per Excel machen willst, ist das vollkommen in Ordnung. Du musst auch gar nicht den Weg gehen, erst dieses lineare Gleichungssystem aufzustellen - das machen die Programme intern natürlich automatisch, wenn du einfach eine Funktion wie linear_regression() nutzt und dann deine Werte einsetzt.

Ich habe das Ganze aber mal in Python implementiert, um dir zu zeigen, dass das auch tatsächlich funktioniert. Der Code ist recht überschaubar:

import pandas as pd
import numpy as np

def linear_regression(data):
	data = data.to_numpy()
	X, y = data[:, :-1], data[:, -1]
	X = np.concatenate((X, np.ones((X.shape[0], 1))), axis=1)
	b = np.linalg.solve(np.matmul(X.T, X), np.dot(X.T, y))
	return b

if __name__ == '__main__':
	cols = {'einkommen' : [43, 24, 17, 129, 65, 21, 35, 29, 72, 14],
			'gniveau': [90, 100, 50, 95, 70, 90, 100, 80, 95, 100],
			'zufriedenheit': [6.5, 6.9, 4.9, 7.2, 5.3, 4.3, 6.1, 5.5, 8.1, 5.4]}
	df = pd.DataFrame(cols)
	b = linear_regression(df)
	print(b)

Die Ausgabe lautet

[0.01740046 0.02964865 2.65928629]

Und wenn man jetzt berücksichtigt, dass der dritte Eintrag in b eben deinem b0 von oben entspricht, scheint das Ergebnis auch präzise mit dem übereinzustimmen, was dein Professor angegeben hat.

 - (Schule, Mathematik, Statistik)  - (Schule, Mathematik, Statistik)
Halbrecht  25.07.2020, 13:28

so ist es richtig , ich vermute aber , der FS möchte eine Formel so wie oben die "Schulformel" für b1 .

0