Cómo realizar una regresión polinomial en Python

El análisis de regresión se utiliza para cuantificar la relación entre una o más variables explicativas y una variable de respuesta.

El tipo más común de análisis de regresión es la regresión lineal simple , que se usa cuando una variable predictora y una variable de respuesta tienen una relación lineal.

Sin embargo, a veces la relación entre una variable predictora y una variable de respuesta no es lineal.

Por ejemplo, la verdadera relación puede ser cuadrática:

O puede ser cúbico:

En estos casos, tiene sentido utilizar la regresión polinomial , que puede explicar la relación no lineal entre las variables.

Este tutorial explica cómo realizar una regresión polinomial en Python.

Ejemplo: regresión polinomial en Python

Supongamos que tenemos la siguiente variable predictora (x) y variable de respuesta (y) en Python:

x = [2, 3, 4, 5, 6, 7, 7, 8, 9, 11, 12]
y = [18, 16, 15, 17, 20, 23, 25, 28, 31, 30, 29]

Si creamos una gráfica de dispersión simple de estos datos, podemos ver que la relación entre xey claramente no es lineal:

importar matplotlib.pyplot como plt

#create scatterplot 
dispersión plt (x, y)

Por lo tanto, no tendría sentido ajustar un modelo de regresión lineal a estos datos. En su lugar, podemos intentar ajustar un modelo de regresión polinomial con un grado de 3 usando la función numpy.polyfit () :

importar numpy como np

# ajuste polinomial con grado = 3
 modelo = np.poly1d (np.polyfit (x, y, 3))

#add línea polinomial ajustada al diagrama de dispersión
 polilínea = np.linspace (1, 12, 50)
dispersión plt (x, y)
plt.plot (polilínea, modelo (polilínea))
plt.show ()

Línea de regresión polinomial en Python

Podemos obtener la ecuación de regresión polinomial ajustada imprimiendo los coeficientes del modelo:

imprimir (modelo)

poly1d ([-0.10889554, 2.25592957, -11.83877127, 33.62640038])

La ecuación de regresión polinomial ajustada es:

y = -0,109x 3 + 2,256x 2 – 11,839x + 33,626

Esta ecuación se puede utilizar para encontrar el valor esperado para la variable de respuesta con base en un valor dado para la variable explicativa. Por ejemplo, suponga que x = 4. El valor esperado para la variable de respuesta, y, sería:

y = -0,109 (4) 3 + 2,256 (4) 2 – 11,839 (4) + 33,626 = 15,39 .

También podemos escribir una función corta para obtener el R cuadrado del modelo, que es la proporción de la varianza en la variable de respuesta que se puede explicar por las variables predictoras.

#define función para calcular r-cuadrado 
def polyfit (x, y, grado):
    resultados = {}
    coeffs = numpy.polyfit (x, y, grado)
    p = numpy.poly1d (coeff)
    #calcular r-cuadrado
    yhat = p (x)
    ybar = numpy.sum (y) / len (y)
    ssreg = numpy.sum ((yhat-ybar) ** 2)
    sstot = numpy.sum ((y - ybar) ** 2)
    resultados ['r_squared'] = ssreg / sstot

    devolver resultados

# encontrar r-cuadrado del modelo polinomial con grado = 3
 polyfit (x, y, 3)

{'r_squared': 0.9841113454245183}

En este ejemplo, el R-cuadrado del modelo es 0.9841 . Esto significa que el 98,41% de la variación en la variable de respuesta puede explicarse por las variables predictoras.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

La regresión lineal múltiple es un método que podemos utilizar para comprender la relación entre varias variables explicativas y una…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!