Cum funcționează regresia liniară

Regresie intermediară cu statsmodels în Python

Maarten Van den Broeck

Content Developer at DataCamp

Graficul standard al regresiei liniare simple

Diagramă de dispersie cu dreapta de tendință a regresiei liniare.

Regresie intermediară cu statsmodels în Python

Vizualizarea reziduurilor

Diagrama de dispersie cu dreapta de tendință și segmente de dreaptă de la puncte la dreapta, reprezentând reziduurile.

Regresie intermediară cu statsmodels în Python

O metrică pentru cel mai bun ajustaj

Cea mai simplă idee (care nu funcționează)

  • Se calculează suma tuturor reziduurilor.
  • Unele reziduuri sunt negative.

Următoarea idee simplă (care funcționează)

  • Se ridică fiecare reziduu la pătrat și se adună pătratele.
  • Aceasta se numește suma pătratelor.
Regresie intermediară cu statsmodels în Python

O incursiune în optimizarea numerică

Graficul liniar al unei funcții pătratice

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)

Funcție pătratică y = x ** 2 - x + 10

Regresie intermediară cu statsmodels în Python

Rezolvarea ecuației cu calcul diferențial

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

  • Nu toate ecuațiile pot fi rezolvate astfel.
  • Python poate calcula automat soluția.

Nu vă faceți griji dacă acest lucru nu este clar — nu veți avea nevoie de el pentru exerciții.

Funcția pătratică anterioară, rezolvată pentru a găsi minimul

Regresie intermediară cu statsmodels în 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])
Regresie intermediară cu statsmodels în Python

Un algoritm de regresie liniară

Definiți o funcție pentru calculul metricii sumei pătratelor.

 

Apelați minimize() pentru a găsi coeficienții care minimizează această funcție.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Regresie intermediară cu statsmodels în Python

Să exersăm!

Regresie intermediară cu statsmodels în Python

Preparing Video For Download...