Hoe lineaire regressie werkt

Gemiddelde regressie met statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

De standaardplot voor simpele lineaire regressie

Een spreidingsdiagram met een lineaire regressietrendlijn.

Gemiddelde regressie met statsmodels in Python

Residuen visualiseren

Het spreidingsdiagram met de lineaire regressietrendlijn, plus lijnsegmenten van de punten naar de trendlijn, die residuen voorstellen.

Gemiddelde regressie met statsmodels in Python

Een metric voor de beste fit

Het simpelste idee (werkt niet)

  • Neem de som van alle residuen.
  • Sommige residuen zijn negatief.

Het volgende simpele idee (werkt wel)

  • Neem het kwadraat van elk residu en tel die op.
  • Dit heet de sum of squares.
Gemiddelde regressie met statsmodels in Python

Een omweg via numerieke optimalisatie

Een lijngrafiek van een kwadratische vergelijking

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)

Kwadratische functie y = x ** 2 - x + 10

Gemiddelde regressie met statsmodels in Python

De vergelijking oplossen met calculus

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

  • Niet alle vergelijkingen kun je zo oplossen.
  • Laat Python het uitzoeken.

Maak je geen zorgen als dit niet logisch is; je hebt het niet nodig voor de oefeningen.

De eerdere kwadratische functie, nu opgelost om het minimum te vinden

Gemiddelde regressie met 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])
Gemiddelde regressie met statsmodels in Python

Een lineair regressie-algoritme

Definieer een functie om de sum of squares te berekenen.

 

Roep minimize() aan om coëfficiënten te vinden die deze functie minimaliseren.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Gemiddelde regressie met statsmodels in Python

Laten we oefenen!

Gemiddelde regressie met statsmodels in Python

Preparing Video For Download...