polyfit - regression lineal python
RegresiĆ³n escalonada en Python (4)
Puede hacer una selección hacia adelante o hacia atrás según el modelo de statsmodels.api.OLS
, como se muestra en esta respuesta .
Sin embargo, esta respuesta describe por qué no debería usar la selección por pasos para los modelos econométricos en primer lugar.
¿Cómo realizar una regresión por pasos en python ? Hay métodos para OLS en SCIPY pero no puedo hacerlo paso a paso. Cualquier ayuda en este sentido sería de gran ayuda. Gracias.
Edit: estoy tratando de construir un modelo de regresión lineal. Tengo 5 variables independientes y, al utilizar la regresión paso a paso, mi objetivo es seleccionar variables de modo que mi modelo tenga el valor p más bajo. El siguiente enlace explica el objetivo:
Gracias de nuevo.
Statsmodels tiene métodos adicionales para la regresión: http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html . Creo que te ayudará a implementar la regresión por pasos.
Trevor Smith y yo escribimos una pequeña función de selección hacia adelante para regresión lineal con statsmodels: http://planspace.org/20150423-forward_selection_with_statsmodels/ Puede modificarla fácilmente para minimizar un valor p, o seleccionar en función de los valores p beta con solo Un poco más de trabajo.
"""Importing the api class from statsmodels"""
import statsmodels.formula.api as sm
"""X_opt variable has all the columns of independent variables of matrix X
in this case we have 5 independent variables"""
X_opt = X[:,[0,1,2,3,4]]
"""Running the OLS method on X_opt and storing results in regressor_OLS"""
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()
Usando el método de resumen, puede verificar en su núcleo los valores p de sus variables escritas como ''P> | t |''. A continuación, compruebe la variable con el valor p más alto. Supongamos que x3 tiene el valor más alto, por ejemplo, 0.956. Luego elimine esta columna de su matriz y repita todos los pasos.
X_opt = X[:,[0,1,3,4]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()
Repita estos métodos hasta que elimine todas las columnas que tengan un valor de p mayor que el valor de significación (por ejemplo, 0.05). Al final, su variable X_opt tendrá todas las variables óptimas con valores de p inferiores al nivel de significación.