Regresión lineal en Python usando Statsmodels

En este artículo, discutiremos cómo usar statsmodels usando la regresión lineal en Python .

El análisis de regresión lineal es una técnica estadística para predecir el valor de una variable (variable dependiente) en función del valor de otra (variable independiente). La variable dependiente es la variable que queremos predecir o pronosticar. En la regresión lineal simple, se usa una variable independiente para predecir una única variable dependiente. En el caso de la regresión multilineal, hay más de una variable independiente. La variable independiente es la que estás usando para pronosticar el valor de la otra variable. El método statsmodels.regression.linear_model.OLS se utiliza para realizar la regresión lineal. Las ecuaciones lineales son de la forma:

y = mx+cm = slopec = constant

Sintaxis: statsmodels.regression.linear_model.OLS(endog, exog=Ninguno, faltante=’ninguno’, hasconst=Ninguno, **kwargs)

Parámetros: 

  • endog: array como objeto. 
  • exog: array como objeto. 
  • Falta: calle. Ninguna, disminuir y aumentar son las alternativas disponibles. Si el valor es ‘ninguno’, no se realiza ninguna prueba de nan. Cualquier observación con nans se elimina si se selecciona ‘drop’. Se genera un error si se utiliza ‘raise’. ‘ninguno’ es el valor predeterminado.
  • hasconst: Ninguno o Bool. Indica si una constante proporcionada por el usuario está incluida en el RHS. Si es Verdadero, la constante k se establece en 1 y todas las estadísticas de resultados se calculan como si hubiera una constante presente. Si es False, la constante k se establece en 0 y no se verifica ninguna constante.
  • **kwargs: cuando se utiliza la interfaz de fórmula, se utilizan argumentos adicionales para establecer las características del modelo.

Devolución: se devuelven los mínimos cuadrados ordinarios.

Instalación 

pip insatll numpy
pip install pandas
pip insatll statsmodels

Implementación paso a paso

Paso 1: Importar paquetes.

La importación de los paquetes necesarios es el primer paso del modelado. Se importan los paquetes de modelos pandas, NumPy y stats.

import numpy as np
import pandas as pd
import statsmodels.api as sm

Paso 2: Cargando datos.

Para acceder al archivo CSV haga clic aquí . El archivo CSV se lee con el método pandas.read_csv() . El encabezado o las primeras cinco filas del conjunto de datos se devuelve mediante el método head() . El tamaño de la cabeza y el peso del cerebro son las columnas.

Python3

df = pd.read_csv('headbrain1.csv')
df.head()

El encabezado del marco de datos se ve así:

 

Visualizando los datos:

Mediante el uso de los paquetes matplotlib y seaborn, visualizamos los datos. La función sns.regplot() nos ayuda a crear un gráfico de regresión.

Python3

# import packages
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
  
df = pd.read_csv('headbrain1.csv')
sns.regplot('Head Size(cm^3)', 'Brain Weight(grams)', data=df)
  
plt.show()

Producción:

Linear Regression in Python using Statsmodels

 

Paso 3: Establecer una hipótesis.

  • Hipótesis nula (H0): No existe relación entre el tamaño de la cabeza y el peso del cerebro.
  • Hipótesis alternativa (Ha): Existe una relación entre el tamaño de la cabeza y el peso del cerebro.

Paso 4: Ajuste del modelo

El método statsmodels.regression.linear_model.OLS() se usa para obtener mínimos cuadrados ordinarios, y el método fit() se usa para ajustar los datos en él. El método ols toma los datos y realiza una regresión lineal. proporcionamos las columnas dependientes e independientes en este formato:

columnas_independientes ~ columna_dependiente: 

el lado izquierdo del operador ~ contiene las variables independientes y el lado derecho del operador contiene el nombre de la variable dependiente o la columna pronosticada.

Python3

df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight', data=df).fit()

Paso 5: Resumen del modelo.

Todas las estadísticas de resumen del modelo de regresión lineal son devueltas por el método model.summary(). El valor p y muchos otros valores/estadísticas son conocidos por este método. Las predicciones sobre los datos se encuentran mediante el método model.summary().

Python3

print(model.summary())

Implementación de código:

Python3

# import packages
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
  
# loading the csv file
df = pd.read_csv('headbrain1.csv')
print(df.head())
  
# fitting the model
df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight', data=df).fit()
  
# model summary
print(model.summary())

Producción:

Linear Regression in Python using Statsmodels

 

Descripción de algunos de los términos de la tabla:

  •  Valor de R-cuadrado : El valor de R-cuadrado oscila entre 0 y 1. Un R-cuadrado de 100 por ciento indica que todos los cambios en la variable dependiente se explican completamente por cambios en la(s) variable(s) independiente(s). si obtenemos 1 como valor de r-cuadrado significa que hay un ajuste perfecto. En nuestro ejemplo, el valor de r-cuadrado es 0,638. 
  • Estadístico F: El estadístico F simplemente compara el efecto combinado de todas las variables. En términos más simples, rechace la hipótesis nula si su nivel alfa es mayor que su valor p. 
  • coef: los coeficientes de las variables independientes en la ecuación de regresión.

Nuestras predicciones:

Si tomamos nuestro nivel de significancia (alfa) como 0.05, rechazamos la hipótesis nula y aceptamos la hipótesis alternativa como p<0.05. entonces, podemos decir que existe una relación entre el tamaño de la cabeza y el peso del cerebro.

Publicación traducida automáticamente

Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *