Wie lineare Regression funktioniert

Fortgeschrittene Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Das Standarddiagramm der einfachen linearen Regression

Ein Streudiagramm mit einer linearen Regressions-Trendlinie.

Fortgeschrittene Regression mit statsmodels in Python

Residuen visualisieren

Das Streudiagramm mit der linearen Trendlinie, plus Linien von den Punkten zur Trendlinie, die Residuen darstellen.

Fortgeschrittene Regression mit statsmodels in Python

Eine Kennzahl für die beste Anpassung

Die einfachste Idee (die nicht funktioniert)

  • Summiere alle Residuen.
  • Manche Residuen sind negativ.

Die nächst-einfache Idee (die funktioniert)

  • Quadriere jedes Residuum und addiere die Quadrate.
  • Das nennt man die Summe der Quadrate.
Fortgeschrittene Regression mit statsmodels in Python

Ein Abstecher in die numerische Optimierung

Ein Liniendiagramm einer quadratischen Gleichung

x = np.arange(-4, 5, 0.1)
y = x ** 2 - x + 10

xy_data = pd.DataFrame({"x": x,
                        "y": y})

sns.lineplot(x="x",
             y="y",
             data=xy_data)

Quadratische Funktion y = x ** 2 - x + 10

Fortgeschrittene Regression mit statsmodels in Python

Die Gleichung mit Analysis lösen

$y = x ^ 2 - x + 10$

$\frac{\partial y}{\partial x} = 2 x - 1$

$0 = 2 x - 1$

$x = 0.5$

$y = 0.5 ^ 2 - 0.5 + 10 = 9.75$

  • Nicht alle Gleichungen lassen sich so lösen.
  • Lass Python das herausfinden.

Mach dir keine Sorgen, wenn das nicht logisch erscheint – für die Übungen brauchst du es nicht.

Die vorherige quadratische Funktion, jetzt mit gefundenem Minimum

Fortgeschrittene Regression mit statsmodels in Python

minimize()

from scipy.optimize import minimize
def calc_quadratic(x):
  y = x ** 2 - x + 10
  return y
minimize(fun=calc_quadratic,
         x0=3)
      fun: 9.75
 hess_inv: array([[0.5]])
      jac: array([0.])
  message: 'Optimization terminated successfully.'
     nfev: 6
      nit: 2
     njev: 3
   status: 0
  success: True
        x: array([0.49999998])
Fortgeschrittene Regression mit statsmodels in Python

Ein Algorithmus für lineare Regression

Definiere eine Funktion, die die Kennzahl „Summe der Quadrate" berechnet.

 

Rufe minimize() auf, um Koeffizienten zu finden, die diese Funktion minimieren.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Fortgeschrittene Regression mit statsmodels in Python

Lass uns üben!

Fortgeschrittene Regression mit statsmodels in Python

Preparing Video For Download...