Tenía muchas ganas de volver por aquí, pero lo cierto es que el último año ha sido complicado y me ha costado encontrar el momento de venir a contaros cosas. Hasta he publicado un libro del que quiero contaros más cosas pronto.
Espero que no vuelva a pasar tanto tiempo.
La cuestión es que, una vez decidida a volver, lo que más me ha costado es escoger algo que contaros y, estando un poco perdida, se me ha ocurrido que podía hablaros un poco sobre una de mis líneas de investigación. En particular quiero hablaros de selección de variables, el tema que trabajé en mi tesis y al que he dedicado la mayor parte de mi tiempo en investigación. Quizás me lleve varios posts porque es un tema complejo pero, empecemos por el principio
¿Qué quiero decir cuando hablo de seleccionar variables? ¿Me dejas que te cuente?
Hablemos de modelos
Sí sí, empecemos por hablar de modelos. Pero no de esos que nos enseñan la moda de la última temporada, tampoco de cervezas mejicanas ;-p. Hablemos de modelos estadísticos y matemáticos que nos ayudan a entender mejor el mundo en el que vivimos.
Los modelos de los que quiero hablarte tratan, básicamente, de usar una fórmula matemática para explicar algo que nos interesa y, sobre todo, para entender qué otras cosas están involucradas en el proceso. Por ejemplo, imagina que queremos estudiar la cantidad de energía que produce una placa fotovoltaica. Pues existen algunas fórmulas matemáticas que pueden relacionar la energía obtenida con la temperatura de la placa, la temperatura ambiente o la radiación del sol entre otras variables.
La cuestión es, ¿cómo hemos llegado a la conclusión de que son esas variables y no otras las que están relacionadas con la producción de energía?
Pues aquí viene lo complicado de todo este proceso y para poder describirlo, necesito que me dejéis simplificar mucho el problema acudiendo al modelo más sencillo que podemos encontrar: el modelo de regresión lineal.
El modelo lineal
Antes he distinguido entre modelos matemáticos y estadísticos. Dejadme que aclare que los primeros son modelos donde queda poco espacio para la incertidumbre. Están diseñados por personas que conocen muy bien el campo de estudio y las fórmulas resultantes son deterministas, es decir, cada combinación concreta de variables y parámetros produce siempre la misma solución. En cuanto a los segundos, se trata de modelos que no tienen un diseño elaborado, pero permiten incorporar incertidumbre teniendo en cuenta que lo que observamos siempre tiene margen para el error.
Entre los primeros encontramos, por ejemplo, los modelos meteorológicos mientras que entre los segundos estaría el hecho de pensar que una variable se comporta siguiendo una distribución normal.
Pues bien, un modelo lineal es un modelo de tipo estadístico donde suponemos que la variable de interés (la energía de la placa fotovoltaica en nuestro ejemplo) sigue una distribución normal cuya media cambia linealmente con las variables indicadas.
Y, ¿qué es eso de lineal? Pues quiere decir simplemente que lo hace de forma constante, es decir que al aumentar la temperatura en un grado la energía aumentará en un valor fijo, dando lo mismo si la temperatura ha pasado de 2 a 3 o de 30 a 31 grados. Que sí, que me vas a decir que se trata de un modelo muy simplista, que no es el más adecuado… y no, no lo es, pero, supongamos que lo fuese.
Matemáticamente, en este tipo de modelos, la media de la distribución normal se puede escribir como
Donde , y representan las variables que hemos dicho que podrían influir sobre la cantidad de energía producida que aquí está representada por , el valor en torno al cual se moverá con cierto margen de error. A los los llamamos coeficientes y son ese valor fijo que crece la energía (o la variable que sea) con cada aumento en la variable que acompaña.
Ahora, seleccionemos.
Bien, una vez hemos especificado el modelo, nos toca reflexionar sobre si esas variables deben estar todas, si se debe quitar alguna o si podría entrar alguna más (en el caso de haberla medido).
Para ello, de forma intuitiva, lo que podemos hacer es mirar el error que cometemos al suponer que nuestra variable se comporta siguiendo este modelo, comparando lo que dice el modelo con lo que realmente observamos. Lo ideal entonces es estudiar ese error en todos los posibles modelos…
- Chica ¿qué dices? Si solo hay un modelo
- ¿Sólo un modelo? ¿Seguro? Fíjate bien.
(Perdonadme el momento Rosalia) Si nos ponemos, combinando las tres variables podemos sacar 8 modelos diferentes. Uno sin variables que indicaría que la media no cambia si cambian esas variables, otro solo con la temperatura ambiente, otro con solo la temperatura de la placa, otro con ambas temperaturas… y así sucesivamente hasta 8 modelos o lo que es lo mismo, 2 elevado al número de variables consideradas.
Aquí la cosa es relativamente fácil. Podemos utilizar cada uno de los 8 modelos y ver cual se ajusta mejor. Cómo tomar esa decisión depende un poco de si estamos trabajando en frecuentista o en bayesiano y de cómo lo queramos enfocar, pero no entraré en eso hoy. La cuestión es que comparar 8 modelos es sencillo, el problema aparece cuando no tenemos solo 3 posibles variables si no muchas, muchísimas…
Generalizando mucho, en un problema relacionado con la salud el número de variables puede estar entre 5 y 20, en uno económico donde las variables se buscan en anuarios o se obtienen de entidades públicas, podemos estar hablando del orden de 20 o 30 variables fácilmente. Pero es que, si nos vamos al mundo de la biología y, sobre todo, del ADN, estamos perdidos, el número de variables (genes, proteínas, etc.) en ese caso, puede llegar a ser del orden de las decenas o centenas de mil y con eso, buscar todos los modelos posibles se complica.
Para que te hagas una idea, con 15 variables, el número de modelos ya es del orden de los 32 mil. Imagínate con 100 o con 1000 si por cada nueva variable duplico el número de modelos posibles.
Entonces ¿Cómo lo hacemos?
No mires a las estrellas
Antes de pasar a hablarte de algunas soluciones déjame hacer una advertencia sobre lo que NO se debe hacer.
Una práctica habitual pero inadecuada es utilizar un software como SPSS o R para ajustar y valorar el modelo completo, con todas las variables y después mirar el p-valor asociado individualmente a cada una de ellas y que suele venir representado por estrellitas (lo cual es una gran equivocación) como podéis ver en la figura. En ella se muestra la salida de un modelo lineal en R para una base de datos clásica que estudia la relación entre el crimen y algunas variables como el gasto en seguridad.
Esta práctica resulta especialmente peligrosa porque esas variables están siendo valoradas en un contexto donde todas las demás están presentes. Aquí entra en juego algo que llamamos colinealidad.
Cuando hablamos de colinealidad nos referimos a la relación existente no entre la variable de interés y las que utilizamos en el modelo, si no entre las segundas. La cuestión es que las variables utilizadas pueden estar relacionadas entre sí y eso nos lleva a que estén explicando lo mismo sobre la variable de interés.
En nuestro ejemplo, puede que la temperatura ambiente y la de la placa estén diciendo lo mismo sobre la cantidad de energía que se producirá. Así, al estudiarlas juntas en el modelo, podría parecer que ninguna está involucrada, o que solo lo está una…o vete tú a saber… pero al quitar una de ellas, la cosa cambia por completo y aquella que no parecía relevante pasa a serlo.
Entonces, si no podemos simplificarlo así, repetimos la pregunta ¿cómo lo hacemos?
Vayamos paso a paso
Una de las soluciones que suelen aplicarse en este caso es el uso de métodos por pasos donde las variables se van añadiendo y/o quitando una a una siguiendo algún criterio que mide lo bien que ajusta el modelo.
Este método no «visita» todos los modelos, pero hace un recorrido por ellos tratando de seguir un camino de modelos “buenos”. Por supuesto, este camino puede estar evitando el mejor modelo peeeroooo… a falta de pan, ya se sabe.
El método Step, que es como se conoce a esta forma de proceder, es muy habitual en contextos de análisis frecuentista aunque también se aplica de formas similares en el análisis bayesiano donde se recorre el espacio de modelos (el conjunto de todos ellos) tratando de avanzar a las zonas donde los modelos son más probables… porque recordemos que en el análisis bayesiano podemos poner probabilidad a cada modelo tratando de quedarnos con el mejor. Pero, dejadme que esto os lo cuente otro día con más calma.
Otros enfoques, otros nombres
No puedo terminar sin contarte que la complejidad de este problema, no se trata solo de si lo abordamos desde el punto de vista frecuentista o bayesiano.
En un mundo donde cada vez medimos más y más variables de forma más y más “barata” encontrar métodos sencillos que nos permitan discriminar entre aquellas que tienen más relación o menos con las enfermedades que sufrimos o con los procesos que determinan nuestra vida y la de nuestro medio ambiente es fundamental.
Así han ido surgiendo diferentes aproximaciones al problema de selección de variables que, en el ámbito del Big Data suelen conocerse como métodos de reducción de la dimensionalidad. Estos métodos no tratan de comparar modelos si no que trabajan desde el modelo más complejo (como en el caso de las estrellas) pero fuerzan que el valor de los parámetros que acompañan a las variables acabe siendo 0 si la variable no tiene demasiada relevancia.
Por supuesto, existen más métodos y enfoques y aquí solo me ha dado tiempo a contar las bases (y aun así me he extendido demasiado). Si os ha gustado, otro día hablamos con más cuidado de todos los métodos que, en definitiva, tratan de hacernos entender las relaciones existentes entre los procesos de interés y todo lo que observamos a su alrededor.
Gracias por llegar hasta aquí ¡Seguimos!
Un artículo muy bien explicado para no iniciados y que deja con ganas de más. Acabo de ver que te han anulado la cuenta de Twitter (vaya rabia), y «gracias a ello» he acabado en tu página. Me voy a ir racionando los artículos y buscando ya el libro :). Haces un magnífico trabajo de divulgación y seguro que es una maravilla tenerte de profesora. Un saludo de otra Ana 🙂
Buen post y gran tema de estudio el de la selección de variables. En mi caso, para no complicarme mucho, en modelos de ML en retos de páginas como Kaggle, suelo usar un árbol de decisión, ya que en R te devuelve la importancia de las variables en el árbol. Un saludo!
Muchas gracias Luis Miguel!
El árbol de decisión lo haces usando algún software o función concreta? Gracias de antemano
Un saludo!
Hola Anabel, primero quiero pedirte perdón porque puse «Buen post» cuando quería decir «Buen artículo», lo que tiene leer foros xD. Sobre el árbol de decisión, suelo usar el paquete «rpart» o «RandomForest» de R o directamente con el paquete «caret», donde puedes implementar un árbol de decisión o un bosque aleatorio y obtener un vector con la importancia de las variables. Un saludo y espero escucharte de nuevo en A Ciencia a Cierta.
Mil gracias!
Y sí, andamos tramando algo en A Ciencia Cierta, espero que no tardemos mucho ;-p