Rosana Ferrero
Data Scientist
Juan L. López
Data Scientist
Generalmente los investigadores tenemos un conjunto de variables predictoras (o explicativas) candidatas y queremos identificar el modelo óptimo, seleccionar aquellas variables predicadoras que son más apropiadas para incluir en nuestro modelo.
El problema está cuando el número de variables predictoras candidatas es grande, porque entonces el número de posibles modelos de regresión también será grande.
En estos casos necesitamos especial alguna ayuda para seleccionar el modelo más adecuado para nuestros datos.
Existen algunas técnicas automáticas de selección de modelos pero en este artículo te invito a que tomes las riendas de tus análisis y consideres algunos aspectos claves que puedes pasar por alto si solo utilizas criterios de automatización.
Un modelo es una simplificación de la realidad destinada a promover la comprensión de los problemas que queremos abordar.
Por lo tanto, el «arte» de la construcción de modelos implica simplificar la realidad para ayudarnos a comprender el problema que queremos resolver.
Pero encontrar el punto medio donde la simplicidad es útil no siempre es una tarea sencilla.
Aquí te mostramos qué debes tener en cuenta a la hora de construir tu modelo para no sub-estimar ni sobre-estimar.
Máster de Estadística Aplicada con R Software 8ª edición 2019 (Reserva de plaza)
Podemos decir que existen 3 casos:
Si eliges muy pocas variables puedes obtener un modelo mal detallado y producir estimaciones sesgadas.
Cuando falta una o más variables predictoras importantes, los coeficientes de regresión serán sesgados y las predicciones de la respuesta también serán sesgadas.
Si eliges el número de variables justas tendrás un modelo sin problemas y con estimaciones precisas.
Si tu modelo contiene todos los predictores relevantes, incluyendo cualquier transformación necesaria y los términos de interacción, los coeficientes de regresión serán insesgados y las predicciones de la respuesta también serán insesgadas.
Si eliges un modelo con demasiadas variables tendrás un modelo excesivamente especificado y las estimaciones serán poco precisas.
Cuando la regresión contiene una o más variables predictoras redundantes se producen coeficientes de regresión sin sesgo y predicciones no sesgadas de la respuesta. Los predictores redundantes conducen a problemas como los errores estándar inflados para los coeficientes de regresión y están asociados con la multicolinearidad. Este modelo de regresión puede usarse con precaución para la predicción de la respuesta, pero no debe utilizarse para atribuir el efecto de un predictor en la respuesta. Recuerda además que el modelo se vuelve más complicado y difícil de entender de lo necesario.
Imagina que todos los días te pesas en una balanza. La balanza puede tener errores en su estimación del peso cada día pero lo que necesitamos es que nos de valores correctos en promedio – en ese caso, la balanza sería insesgada-.
Recuerda que los modelos buscan simplificar la realidad, no reproducirla.
Artículos que te pueden interesar:
Artículos que te pueden interesar:
El AIC (“Akaike’s Information Criterion”) sirve para comparar modelos.
Este criterio tiene en cuenta tanto el ajuste del modelo como su complejidad de acuerdo a la fórmula: -2*log-likelihood + k*npar donde el primer término mide el ajuste (es la devianza) y el segundo la complejidad (npar es el número de parámetros y k = 2). Es decir, el segundo término es de penalización y evita el sobreajuste (aumentando el número de parámetros del modelo suele mejorar la bondad del ajuste sin impli).
Dado un conjunto de modelos candidatos para los datos, el modelo preferido es el que tiene el valor mínimo en el AIC. De los AICs de un conjunto de modelos se puede derivar un índice de ‘peso’ relativo de los modelos (a través de las diferencias con el AIC más bajo, al que se le da el valor 0) y de las variables (como suma de los pesos de los modelos donde aparece una variable dada).
Existe también el AIC corregido (AICc) que es una variante del AIC para tamaños muestrales bajos (pocos datos).
AIC no equivale a significación (p-valor), se plantea dentro de una concepción de la estadística distinta y alternativa. El AIC no proporciona una prueba de un modelo en el sentido de probar una hipótesis nula , es decir AIC puede decir nada acerca de la calidad del modelo en un sentido absoluto. Si todos los modelos candidatos encajan mal, el AIC no dará ningún aviso de ello.
Hay amigos y enemigos de estos métodos. Principalmente los detractores critican problemas cuando nuestro objetivo es crear modelos descriptivos:
Si aún así optas por la selección automática es preferible utilizar backward o stepwise en lugar de forward debido a que ésta última tiene el inconveniente de que al añadir una nueva variable pude e hacer que una o más variables ya incluidas se vuelvan no significativas.
NOTA: hay métodos más actuales como LASSO o LAR.
Artículos que te pueden interesar:
Imaginemos un estudio donde se desea evaluar el efecto tóxico de un pesticida en una determinada especie de insecto. Los datos consisten en: tasa de dosis del pesticida (dose x1, desconocida), peso corporal del insecto (weight x2, en gramos) y tasa de acción tóxica (effect y, medida como tiempo de muerte en minutos).
Los datos del ejemplo son del Dr. Bret Larget, profesor de estadística y botánica de la University of Wisconsin (puedes descargarlos desde su web http://www.stat.wisc.edu/~larget/ o aquí http://www.stat.wisc.edu/~ane/st572/data/toxic.txt ).
> toxic = read.table ("toxic.txt", header = T) #adjunto los datos > toxic> str (toxic) > attach(toxic)
Posibles modelos que podemos ajustar:
yi~β0+ei
yi~β0+β2*xi2+ei
yi~β0+β1*xi1+ei
yi~β0+β1*xi1+β2*xi2+ei
donde ei corresponden a los errores, β0 al intercepto, β1 y β2 son los coeficientes de las dos variables explicativas consideradas, x1 y x2, respectivamente.
Construimos en R todos los modelos:
> toxic0.lm = lm(effect ~ 1) > toxic1.lm = lm(effect ~ dose) > toxic2.lm = lm(effect ~ weight) > toxic12.lm = lm(effect ~ dose + weight) > toxic21.lm = lm(effect ~ weight + dose)
La función summary indica las pruebas t que contrastan si un parámetro es cero en el modelo que incluye todos los demás coeficientes.
La función anova indica los resultados de la prueba F que contrasta si un parámetro es cero en el modelo incluyendo solo los parámetros indicados anteriormente en la tabla.
> summary(toxic12.lm) Call: lm(formula = effect ~ dose + weight) Residuals: Min 1Q Median 3Q Max -0.081512 -0.023945 -0.003421 0.022278 0.094310 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.22281 0.08364 2.664 0.01698 * dose 0.65139 0.17305 3.764 0.00170 ** weight -1.13321 0.18044 -6.280 1.10e-05 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.0466 on 16 degrees of freedom Multiple R-Squared: 0.7796, Adjusted R-squared: 0.752 F-statistic: 28.3 on 2 and 16 DF, p-value: 5.57e-06 > anova(toxic12.lm) Analysis of Variance Table Response: effect Df Sum Sq Mean Sq F value Pr(>F) dose 1 0.037239 0.037239 17.152 0.0007669 *** weight 1 0.085629 0.085629 39.440 1.097e-05 *** Residuals 16 0.034738 0.002171 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Lo que estamos evaluando son las siguientes hipótesis nulas:
H0:[β0 =0|β1,β2] p=0.01698
H0:[β1 =0|β0,β2] p=0.001697
H0:[β2 =0|β0,β1] p=1.097e-05
H0:[β1 =β2=0|β0] p=5.57e-06
H0:[β1 =0|β0] p=0.0007669
H0:[β2 =0|β0,β1] p=1.097e-05
NOTA: El contraste β1=0 (efecto dose) da diferente si weight está incluido en el modelo o no, luego explicaré el por qué.
Para contrastar la misma hipótesis la prueba F y la prueba t coinciden: (-2.293)^2=5.26:
> summary(toxic1.lm) ... Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.6049 0.1036 5.836 1.98e-05 *** dose -0.3206 0.1398 -2.293 0.0348 * Residual standard error: 0.08415 on 17 degrees of freedom Multiple R-squared: 0.2363, Adjusted R-squared: 0.1914 F-statistic: 5.259 on 1 and 17 DF, p-value: 0.03485 > anova(toxic0.lm, toxic1.lm) Analysis of Variance Table Model 1: toxicity ̃ 1 Model 2: toxicity ̃ dose Res.Df RSS Df Sum of Sq F Pr(>F) 1 18 0.1576 2 17 0.1204 1 0.0372 5.26 0.035 *
cada variable predictora se agrega de una en una (con suma de cuadrados SS de tipo I) por lo cual el orden en el que se ingresan dichas variables importa y produce resultados distintos.
> anova(toxic12.lm) Response: toxicity Df Sum Sq Mean Sq F value Pr(>F) dose 1 0.037239 0.037239 17.152 0.0007669 *** weight 1 0.085629 0.085629 39.440 1.097e-05 *** Residuals 16 0.034738 0.002171 > anova(toxic21.lm) Response: toxicity Df Sum Sq Mean Sq F value Pr(>F) weight 1 0.092107 0.092107 42.424 7.147e-06 *** dose 1 0.030761 0.030761 14.168 0.001697 ** Residuals 16 0.034738 0.002171
EJERCICIO: ¿Cuál sería la forma apropiada de contrastar el efecto del peso weight? ¿y para contrastar el efecto dosis dose?
Las siguientes comparaciones producen el mismo resultado porque en ambas estamos evaluando el efecto de dose:
> anova(toxic2.lm, toxic12.lm) #lm(effect ~ weight) vs lm(effect ~ dose + weight) > anova(toxic2.lm, toxic21.lm) # lm(effect ~ weight) vs lm(effect ~ weight + dose)
Sin embargo, las siguientes hipótesis son distintas y por ende los resultados también lo son:
> anova( toxic0.lm , toxic1.lm ) # H0:[β1 =0|β0] > anova( toxic2.lm , toxic21.lm ) # H0:[β1 =0|β0,β2]
EJERCICIO: Prueba ahora realizar los siguientes contrastes
Aquí se utiliza la prueba F para contrastar cada predictor luego de dar cuenta de los demás (con SS tipo III) por lo cual el orden de los predictores no importa.
> drop1(toxic12.lm, test="F") Single term deletions Model: toxicity ̃ dose + weight DfSumofSq RSS AIC F value Pr(F) <none> 0.034738 -113.783 dose 1 0.030761 0.065499 -103.733 14.168 0.001697 ** weight 1 0.085629 0.120367 -92.171 39.440 1.097e-05 *** > drop1(toxic21.lm, test="F") Single term deletions Model: toxicity ̃ weight + dose DfSumofSq RSS AIC F value Pr(F) 0.034738 -113.783 <none> weight 1 0.085629 0.120367 -92.171 39.440 1.097e-05 *** dose 1 0.030761 0.065499 -103.733 14.168 0.001697 **
1) Encontramos poca evidencia del efecto dose cuando ignoramos el efecto de weight.
Encontramos gran evidencia del efecto dose luego de ajustar el efecto de weight.
Aquí vemos que dose y weight están correlacionadas, por eso los resultados difieren.
2) El efecto dose es negativo si está solo en el modelo. Esto significaría que al aumentar la dosis la tasa de acción tóxica disminuye, lo cual es contraintuitivo… debería llamarnos la atención!
> summary(toxic1.lm)
…
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.6049 0.1036 5.836 1.98e-05 ***
dose -0.3206 0.1398 -2.293 0.0348 *
Residual standard error: 0.08415 on 17 degrees of freedom
Multiple R-squared: 0.2363, Adjusted R-squared: 0.1914
F-statistic: 5.259 on 1 and 17 DF, p-value: 0.03485
> summary(toxic12.lm)
…
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.22281 0.08364 2.664 0.01698 *
dose 0.65139 0.17305 3.764 0.00170 **
weight -1.13321 0.18044 -6.280 1.10e-05 ***
EJERCICIO: ahora analiza tú la correlación entre dose y weight, y cuéntanos qué ocurre.
Como última reflexión, no hay que olvidar que no hay necesariamente un único buen modelo para un conjunto dado de datos, sino que pueden existir varios modelos igualmente satisfactorios.
Algunas referencias que les pueden interesar
Gracias, una lectura muy amena.
Gracias por tu comentario Elena!
Muy bueno su artículo, bien concebido metodológicamente; muchas gracias
¡Muchas gracias Arley!
Gracias por su publicación, me fue de ayuda.
Que estes muy bien !
Excelente información
¡Muchas gracias! Saludos