Lineare Regression¶
"Bei der einfachen linearen Regression wird eine abhängige Variable durch eine lineare Funktion einer einzigen unabhängigen Variablen erklärt. Ziel ist die Schätzung von Achsenabschnitt und Steigung der Regressionsgeraden." - Wikipedia
Um die lineare Regression zu erklären soll diese exemplarisch angewand werden.
Dies soll anhand realer Daten geschehen.
Datenquelle: Die Budgets und WM-Punkte der Teams der Formel 1 Saison 2018, siehe folgende Tabelle.
Unabhänige Variable: Points
Abhängige Variable: Budget
import pandas as pd
data = pd.read_csv('f1data.csv')
print(data)
Herleitung der geschätzte Regressionskoeffizienten¶
Implementierung Variante 1¶
Der Algorithmus der linearen Regression in Python unter minimalem Einsatz von externen Paketen.
means = data.mean(axis = 0, skipna = True)
budgetMean = means[0]
pointsMean = means[1]
denominator = 0
numerator = 0
for index, row in data.iterrows():
denominator += (row['Budget'] - budgetMean) * (row['Points'] - pointsMean)
numerator += (row['Budget'] - budgetMean)**2
coefficients = denominator/numerator
intercept = pointsMean - coefficients * budgetMean
print("Coefficients: ", coefficients)
print("Intercept: ", intercept)
Implementierung Variante 2¶
Das Paket sklearn bietet bereits eine Funktion für die lineare Regression.
from sklearn.linear_model import LinearRegression
X = data.iloc[:, 0].values.reshape(-1, 1)
Y = data.iloc[:, 1].values.reshape(-1, 1)
linear_regressor = LinearRegression()
linear_regressor.fit(X, Y)
Y_pred = linear_regressor.predict(X)
print("Coefficients: ", linear_regressor.coef_)
print("Intercept: ", linear_regressor.intercept_)
Ergebnis¶
Die Regressionsgleichung lautet:
$$
Budget = 2.3253652 * Points - 241.31367803
$$
Visualisierung¶
Die blauen Punkte stehen für die Datenpunkte(Budget/Points) der Teams.
Die rote Line ist die ermittelte Regressionsgerade.
import matplotlib.pyplot as plt
plt.scatter(X, Y)
plt.plot(X, Y_pred, color='red')
plt.xlabel("Budget")
plt.ylabel("Points")
plt.show()