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