Estos apuntes están pensados para desarrollar ciertas habilidades del futuro científico de datos. Contrariamente a lo que pensará, no es una profesión concebida únicamente para desarrollar nuevas metodologías de análisis de datos (lo cual no ocurre todos los días), ni en ser capaz de saberse más líneas de código de memoria o hacer scripts de [R] o Python sin despeinarse. Una primera misión del científico de datos consistirá en tener una filosofía de trabajo basada, fundamentalmente, en establecer un conjunto de preguntas de interés y, como consecuencia de ello, tener un conjunto de habilidades analíticas y técnicas para indagar en las posibles respuestas.
Desde ya, el científico de datos tendrá que asumir que:
- las preguntas que realice deberán formularse con la mayor precisión posible
- no siempre la respuesta está clara: esta profesión implica entender la incertidumbre asociada a un resultado que viene dada por los datos disponibles
- las respuestas, muchas veces, son compatibles con diversas hipótesis iniciales
- no hay una única técnica para abordar un proyecto (o una parte de un proyecto), ni consiste en hacer el trabajo tirando de recetas. En estadística, en general, no hay técnicas prohibidas, sino que es más conveniente ser capaz de entender las limitaciones de estas a la hora de aplicarlas a un conjunto de datos.
- sin embargo, esta profesión puede ser todo lo estimulante que uno quiera: los datos siempre son un reto y una buena excusa para pensar, discutir y, por qué no, sentir el placer de entender algo más este mundo.
La asignatura se llama “Fundamentos de Minería de Datos y Big Data”. No hay que ser muy hábil para detectar la palabra clave que se repite dos veces en el nombre de la asignatura:
DATOS: En esta asignatura trabajaremos con muchos y muy variados tipos de datos.
Hay muchos tipos de datos y de maneras de organizarlos, pero nosotros vamos a trabajar únicamente con datos “tabulados”. En general, las filas indicarán unidades (individuos, países, tiempo,…) y las columnas, variables. Es decir, en esencia trabajaremos con matrices.
\[\\[0.15in]\]
en general, diremos que tenemos \(N\) individuos y \(k\) variables. Con este tipo de información ya has trabajado en asignaturas como Estadistica y Estadística Predictiva.Bien, la primera pregunta que nos realizamos es:
¿A qué se llama Big Data?
Consideraremos que estamos ante un problema de big data si:
- La matriz de datos tiene \(N\) muy grande (muchos individuos)
- La matriz de datos tiene \(k\) muy grande (muchas variables)
- Los datos provienen de fuentes muy heterogéneas y algunos son estructurados, otros no (piense en Amazon)
- La base de datos se incrementa constantemente (piense en un banco que registra transacciones)
Cabe, entonces, preguntarse ¿Cuánto se considera “BIG” en los dos primeros aspectos? En realidad, dependerá de la potencia (memoria RAM) que tenga tu sistema informático. En general, los usuarios no trabajamos con “BIG” data, sino con “medium-sized” data. A no ser que acabe trabajando en Facebook o en Google. Una base de datos de Facebook puede tener trillones de filas y miles de columnas. Entonces ¿qué vamos a hacer de Big Data?
En realidad, hay una parte que ya ha estudiado en otras asignaturas: la gestión de base de datos es una de las claves del Big Data. Por otro lado, en esta asignatura vamos a aproximarnos a trabajar con volúmenes-cada vez- mayores de datos. Por ejemplo, verá:
- Lo útil que es tener una muestra grande para poder evaluar qué tal predice un modelo y para poder entrenarlo lo mejor posible
- Lo útil que es conocer técnicas de “reducción” de la dimensión para trabajar de una forma más eficiente. Por ejemplo, si usted está estudiando un tipo de cáncer puede tener 100 individuos (pocas filas) pero miles de variables (mediciones físicas, información celular, etc…) ¡Deberá reducir la dimensión del número de variables!
Por ejemplo, en este estudio https://www.science.org/doi/10.1126/science.ade7138, han trabajado con datos de 208 millones de usuarios de Facebook. Imagine la potencia de los sistemas informáticos para tratar esos datos y poder realizar los análisis posteriores. Eso sí, si accede a la ficha técnica del artículo verá que de esos iniciales millones de usuarios la muestra se redujo a una cantidad menor: unos 700 000.
Esta investigadora, Rosa Lillo, nos da una buena panorámica de lo que estamos hablando
https://www.becas-santander.com/es/blog/big-data.html
Primera idea Bienvenido/a a la era del Big Data. Pero no se agobie: primero empiece a aprender a trabajar con datos menos “big”. En la intranet hay documentación adicional preparada por la profesora Irene Marroquín por si le interesa más de este tema.
Ahora bien, seguramente, haya escuchado el concepto “machine learning”. Más aún, seguramente le sea más famoso “Data Science”. Efectivamente, todo está muy relacionado. Nosotros consideraremos que la minería y el “machine learning” tratan de diseñar y utilizar algoritmos que puedan aprender de los datos con una idea clave: predecir.
De hecho, uno de los grandes objetivos de la ciencia es la predicción. Decir lo que va a pasar para tomar una decisión lo más acertada posible. Y, nosotros, vamos a tratar de hacer Ciencia en esta asignatura. Por lo tanto, pese a todo esto, empezaremos por lo primero que hace un científico: una pregunta.
Vea la introducción del vídeo: minutos 0.00 a 1.50. Reflexione sobre cómo definiría la Ciencia de Datos con la información que tiene hasta ahora. Piense en si discrepa con las opiniones de los entrevistados.
Desde el minuto 2 al 10.50 se trabajan varios aspectos:
- Se plantea una pregunta inicial (¿existe un tamaño de clase óptimo?) que se va mejorando, según aprendemos de los expertos
- Vemos otros casos sobre cómo se accede a preguntas (¿Está en una empresa?¿Tiene una línea de investigación?¿Está interesado en una cuestión que le parece relevante?)
EJERCICIO 1
Trate de elaborar preguntas con interés en ciencia de datos a partir de las siguientes preguntas algo más vagas y generales. Utilice ideas e intuiciones teóricas para ello.
- Los determinantes del precio de la vivienda
- El ingreso en urgencias de pacientes COVID
- El turismo en España
- Número de jóvenes en paro en España
Preguntas concretas: Lo normal es empezar pensando: una pregunta puede ser ¿cómo afecta el gasto en publicidad en mis ventas?. El problema de esa pregunta es que, en general, es demasiado amplia y ya sabemos la respuesta “afecta mucho” (seguramente). Ante una pregunta vaga, una respuesta vaga. Debemos pensar en otras opciones. Si el cliente nos pregunta ¿cómo afecta el gasto en publicidad? Nosotros tenemos el deber de reformularla y, por supuesto, confirmar si son enfoques válidos. Es decir, no debemos tener miedo en repreguntar
Por ejemplo:
- ¿Cuántas semanas dura el impacto de un incremento en el gasto en publicidad sobre las ventas?
- ¿Tiene algún umbral mínimo y máximo el efecto del gasto en publicidad sobre las ventas?
- ¿Se producen efectos cruzados entre un incremento del gasto en publicidad y una estrategia en precio sobre las ventas?
Estas preguntas se diferencian de la primera en que tratan de enfocarse en un aspecto concreto de la posible relación entre el gasto en publicidad y las ventas. Dirigen a la persona a realizar un conjunto de anílisis acotados y, por supuesto, a poder tener más claro en qué tipo de datos y de experimentos deberá concentrarse.
Preguntas cuantificables, medibles: De nuevo, hay que enfocar la pregunta a forzar una respuesta cuantitativa. Los métodos con que se trabaja en este campo pretenden cuantificar efectos e indagar en la incertidumbre asociada a esas mediciones. Por tanto, hay que ir en esa línea.
- ¿Cómo de probable es que la elasticidad precio de mi producto sea mayor que la unidad?
- ¿En qué porcentaje se reducirán las ventas el año que viene con el cierre de dos centros de producción?
- ¿Cómo de rentable es la publicidad en la marca asociada al coste estacional de dicha inversión?
Evitar un clásico: análisis de los determinantes de… es muy común creer que, en general, con estas metodologías uno puede responder con claridad a la pregunta de cuáles son los determinantes de un hecho de interés (las ventas de un producto, el precio de la electricidad, etc…). Lamentablemente, esa pregunta no suele ser interesante porque, en general, se requiere un modelo teórico claro que testar-el cual, especificará de antemano dichos determinantes- y el analista, en todo caso, será quien cuantifique dichos impactos. Sin embargo, esta pregunta suele ser pretenciosa y difícil de abordar, si no imposible, con las técnicas existentes, en general.
¿Qué viene primero: el set de datos o la pregunta? En realidad, eso no es muy importante. Una pregunta puede venir estimulada por un análisis del conjunto de datos disponible y de ideas previas del analista. Lo contrario también es factible: una pregunta dada permitirá hacer acopio de los datos necesarios para tratar de responderla.
EJERCICIO 1
Queremos explicar una variable \(y\) en función de una variable \(x\) . La variable \(y\) presenta un coeficiente de variación de 1.10, y la variable \(x\) presenta uno de 0.25 ¿Qué podríamos esperar acerca de nuestra capacidad de explicar los cambios en la \(y\) ante cambios en la \(x\)?
Queremos explicar una variable \(y\) en función de una variable \(x\) . La variable \(y\) presenta un alto coeficiente de asimetría comparado con el de la variable \(x\) ¿Qué podríamos esperar acerca de nuestra capacidad de explicar los cambios en la \(y\) ante cambios en la \(x\)?
Vea de los minutos 2.00 al 10.00 del vídeo de esta sesión. En esencia, se discute sobre la necesidad de hacer un buen análisis descriptivo para poder entender nuestra pregunta nosotros mismos, hacerla evolucionar, proponer hipótesis razonables y- muy importante- conseguir que nos entiendan.
Como verá, hacia el minuto 10.00, después de haber estudiado los datos con calma, nuestra pregunta evoluciona: ya no tenemos tan claro que el efecto del tamaño de la clase sea muy importante y, además, podría confundirse con el tamaño de la ciudad.
EJERCICIO 2
Trate de mejorar las respuestas a las preguntas del EJERCICIO 1. Para ello, piense sobre este caso práctico:
Se dispone de una base de datos de precios, gastos en publicidad y ventas de un producto. Se presenta un análisis descriptivo en la tabla adjunta. Comente qué le llama la atención de estos resultados, indicando:
- Anomalías posibles en las variables.
- Características de las variables que pueden afectar al tratar de explicar las ventas con los gastos en publicidad y el precio.
- ¿Qué particularidad tiene la variable ventas que no tienen ni los gastos ni el precio? (compare la media y la mediana)
| Estadístico | Gastos | Precios | Ventas |
|---|---|---|---|
| Mediana | 10 100 | 1.40 | 50 000 |
| Media | 10 000 | 1.37 | 95 000 |
| D. Típica | 700 | 2 | 20 000 |
| Máx | 11 000 | 1.50 | 850 000 |
| Min | 9 500 | -0.75 | 7 560 |
| N | 1000 | 1000 | 1000 |
El siguiente ejercicio está pensado para que desarrolle habilidad para analizar distribuciones. No será la última vez que se “enfrente” a este conjunto de datos, puesto que en las clases siguientes seguiremos utilizándolos.
EJERCICIO 3
Observe los siguientes gráficos y los percentiles asociados. Se corresponden con las distribuciones de la respuesta de un conjunto de individuos a un tratamiento antidepresivo (cuanto mayor sea el valor de “value”, mejor se sienten). Los rojos han recibido el tratamiento, mientras que los verdes han recibido un placebo. Describe el efecto del tratamiento para cada uno de estos posibles gráficos.
| paciente | 10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | media | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| tratado | 4.02 | 4.69 | 5.22 | 5.61 | 5.97 | 6.35 | 6.82 | 7.34 | 8.00 | 6.00 | ||
| placebo | 3.93 | 4.63 | 5.08 | 5.47 | 5.87 | 6.26 | 6.66 | 7.18 | 7.84 | 5.87 |
| paciente | 10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | media | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| tratado | 1.23 | 2.83 | 4.04 | 4.99 | 5.95 | 6.90 | 7.90 | 9.06 | 10.83 | 5.98 | ||
| placebo | 0.81 | 1.59 | 2.42 | 3.29 | 4.41 | 5.69 | 7.30 | 9.39 | 11 | 6.00 |
| paciente | 10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | media | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| tratado | 4.85 | 5.26 | 5.57 | 5.82 | 6.04 | 6.26 | 6.49 | 6.77 | 7.14 | 6.02 | ||
| placebo | 2.95 | 3.33 | 3.61 | 3.87 | 4.12 | 4.33 | 4.57 | 4.86 | 5.25 | 4.10 |
En este vídeo puede reflexionar sobre la importancia del análisis descriptivo antes de cualquier otro enfoque:
Vea la introducción del vídeo: minutos 0.00 a 1.50. Reflexione sobre la importancia del análisis descriptivo para tratar de buscar respuestas, cualitativas, a las preguntas que se ha realizado. Piense, además, cómo esta pregunta puede (y debe) ir evolucionando según lee sobre el tema y analiza los datos.
EJERCICIO 1
En el curso hay varias bases de datos. Vamos a centrarnos en la de los Simpsons y la de la liga de fútbol. Abra las bases de datos, lea la descripción de las variables y trate de pensar en preguntas concretas que podrían estimular un estudio. Ambos datos son lo suficientemente generales como para no necesitar grandes conocimientos teóricos
Finalmente, vea del minuto 10.50 al final.
EJERCICIO 2
| Piense en esa pregunta corta y concreta que le gustaría analizar. Además, escriba en un párrafo, por qué es importante, cuáles son sus objetivos, qué tipo de datos necesitará, piense qué población va a tratar de analizar y qué espera encontrarse según su conocimiento o intuición. Puede inspirarse en algún artículo-científico o de prensa- que le interese o le haya interesado. |
Puede leer el texto de la intranet obtenido del libro “The art of Data Science”, donde se reflexiona sobre la formulación de preguntas iniciales.
Ejemplo: Nos interesa investigar si el efecto del tamaño del aula sobre las notas de los estudiantes puede fluctuar con la clase social del alumno. Esta idea surge de la lectura de un artículo (DENNY, Kevin; OPPEDISANO, Veruska. The surprising effect of larger class sizes: Evidence using two identification strategies. Labour economics, 2013, vol. 23, p. 57-65.) que sugiere que el efecto del tamaño de la clase tiene un efecto positivo sobre los resultados académicos. Utilizan datos de PISA, los cuales suelen presentar mucha heterogeneidad, ya que incluyen tipos distintos de colegios, países, etc… y resumen demasiado, a nuestro juicio, la información muestral. Pretendemos analizar, entonces, si ese efecto que miden puede variar atendiendo a una variable socioeconómica proporcionada por PISA: el estatus social.
EJERCICIO 3
En la base de datos “Paradox”, tiene la relación entre el tamaño del aula y las notas de un conjunto de alumnos para distintos grupos (de estatus socio-económico). Trate de analizar, gráficamente, el impacto del tamaño del aula sobre las calificaciones. Piese sobre lo que ha aprendido.
Ahora toca discutir sobre dos aspectos de interés:
- La selección de variables frente a la idea teórica (liga de fútbol)
- La existencia de confusores (datos de los Simpson)
EJERCICIO 5
Seleccione una pregunta de interés para la base de datos de los Simpson o de la Liga, elija las variables de interés y haga un primer análisis descriptivo donde vea:
Para ello, piense en elementos gráficos que le ayuden a ello.
En el vídeo se menciona la paradoja de Yule-Simpson. No es necesario que piense en términos de esa paradoja; es muy común que esto ocurra con las bases de datos con encuestas a individuos: hay mucha heterogeneidad y esta puede afectar a la medición del efecto que está buscando. Para ello, deberá tener en cuenta esto y establecer hipótesis de cuáles pueden ser las fuentes de heterogeneidad. De nuevo, aquí es importante su labor como analista: eso no lo puede pensar una máquina.
- Si le interesa leer más acerca de la paradoja de Simpson-Yule, tiene a su disposición:
Ejemplo: Pensamos que el estatus social o el tamaño de la ciudad pueden ser una fuente de heterogeneidad muestral importante, puesto que representan a distintas poblaciones estadísticas de estudio. Tras un análisis descriptivo, vemos que podríamos encontrar un efecto relevante del tamaño de la clase si dividimos la muestra entre ciudad grande versus ciudad pequeña y permitimos que el impacto el tamaño sobre el resultado académico esté influido por la clase social. ¿Será mayor la diferencia de pasar a tener 15 alumnos en un aula a tener 30 en una ciudad grande de clase social alta frente a una ciudad pequeña de clase baja?
Finalmente, vea del minuto 10.00 al final. Aquí se remarca lo importante que es dedicar tiempo a analizar los datos, puesto que de este análisis obtendremos las respuestas más importantes a nuestros planteamientos iniciales.
En Ciencia de Datos (y, generalmente, en ciencia) tenemos como objetivo “predecir”, esto es, utilizar la información disponible, organizarla y ser capaces de anticiparse a lo que va a ocurrir.
Predecir es un ejercicio complicado que, en nuestra área, requiere de una gran capacidad de formular las preguntas de interés (que, como verá a lo largo de la clase, sigue sin ser una tarea obvia) y, por otro lado, analizar los datos con el objetivo de entender qué se puede responder de esa pregunta y con qué capacidad, condicionado a los datos de que disponemos. Nuestro objetivo será -una vez se tenga esto claro- construir modelos que nos ayuden a cuantificar la previsión así como su incertidumbre.
Pero vayamos paso a paso.
Predicción Realizar un ejercicio de predicción requiere encontrar asociación entre la variable que se pretende predecir (objetivo/target) con las variables que se van a utilizar de predictoras. La mera existencia de relación (lineal,o no lineal) no implica que el modelo predictivo sea exitoso. ¿Qué entenderemos por un modelo predictivo exitoso?
- Somos capaces de adelantarnos con cierto tiempo al hecho que queremos predecir (de tal forma que sea rentable invertir tiempo y dinero en modelar la situación)
- Disponemos del valor aproximado de las variables predictoras.
- La utilización del modelo permite obtener un beneficio (Económico, Social, tecnológico, etc…)
Estos tres puntos son más importantes que cualquier criterio estadístico. Nunca utilice un criterio que no entiende (o del que desconoce sus debilidades, como un p-valor, por ejemplo, frente a razonamientos como los que vienen a continuación. Ningún científico bueno utiliza criterios opacos)
Para que nos entendamos, vamos a pensar en la base de datos de “la Liga”
en ella, se dispone de un conjunto de variables que clasifican el resultado de cada partido de fútbol.
\[\\[0.15in]\]
cada fila es un encuentro y cada columna son resultados numéricos de goles, tiros a puerta, etc…. a la mitad del partido y hacia el final.
Pensemos sobre ello
- ¿Hay asociación entre lo que ocurre en un partido y el resultado final? Sí. EL número de tiros a puerta incrementarán la probabilidad de gol del equipo que más tiros logre, por ejemplo.
- ¿Sirve para algo ese nivel de asociación? Lo dudamos. A no ser que su pregunta sea “¿Están relacionadas las variables cuantificables de un partido de fútbol con su resultado final?”. ¿Alguien le pagaría para que responda esa pregunta?
Lo lógico es que, si queremos construir un modelo predictivo, podamos responder a los tres puntos que dijimos anteriormente:
- Nos podemos adelantar en el tiempo (es decir, conociendo cierta información antes del encuentro, puedo predecir el resultado del partido).
- El resultado del ejercicio de modelar conlleva algún beneficio (de manera amplia). En este caso, usted querrá ganar en las casas de apuestas. Para ello, tendrá que pensar qué horizonte necesitaría para ganar de manera considerable habida cuenta de la inversión que tiene que hacer para poder construir el modelo (tiempo y pagarse un máster)).
En esta figura, está claro que la circunstancia [1] no es de gran utilidad: equivaldría a tratar de predecir el resultado del partido con la información que tiene hacia el primer tiempo de este (de verdad necesita un modelo?). La situación [2] es el ideal: tiene un cierto horizonte de tiempo para poder elaborar un escenario y, de esta forma, realizar las apuestas correspondientes. Sin embargo, eso es lo difícil. Lo fácil es buscar variables que estén relacionadas entre sí (puede encontrar auténticas absurdeces) que, en definitiva, no le ayudarán a construir un modelo predictivo utilizable.
\[\\[0.15in]\] Por ejemplo, en el caso de los datos de la LIGA de fútbol, seleccionamos algunas variables con fines ilustrativos
library(car)
library(corrplot)
LIGA <- read_csv("DATOS_PARTIDOS_FIN.csv")
futbol<-data.frame(LIGA["FTHG"],LIGA["FTAG"],LIGA["HTHG"],LIGA["HTAG"],LIGA["HS"],LIGA["AS"],LIGA["HC"],LIGA["AC"])
M<-cor(futbol)
corrplot(M)
cuyo significado es:
FTHG = Full Time Home Team Goals, FTAG = Full Time Away Team Goals, HTHG = Half Time Home Team Goals, HTAG = Half Time Away Team Goals, HS = Home Team Shots, AS = Away Team Shots, HC = Home Team Corners, AC = Away Team Corners.
La fuente de los datos es esta web: https://www.football-data.co.uk/data.php
Si hacemos un primer análisis de correlación, algo muy habitual cuando se quiere buscar “relaciones sorprendentes” en variables, encontramos-curiosamente, una correlación alta entre HTAG y FTAG y entre FTHG y HTHG..¿sorprendente? Una correlación negativa entre AS y HS…¿sorprendente?
Nada de ello es sorprendente, puesto que parece predecible que un equipo que va bien hacia la mitad de un partido acabe yéndole bien. Y si el equipo contrario tiene más oportunidades de tirar a puerta, tú tengas menos.
Sin embargo, el haber encontrado esta asociación no nos asegura que tengamos un modelo “predictivo” de interés. Habrá que analizar qué beneficio-rentabilidad-interés reporta al usuario invertir tiempo y dinero en tener un algoritmo que prediga el resultado de un partido con la información del propio partido.
\[\\[0.15in]\]
Por otro lado, cuestión técnica, hay que tener cuidado con el uso indiscriminado del coeficiente de correlación. Este está diseñado para medir el grado de relación LINEAL entre VARIABLES CUANTITATIVAS CONTINUAS. Si la relación no es lineal (es decir, aspecto de una recta), o las variables son CUANTITATIVAS DISCRETAS (por ejemplo, el número de goles) la utilidad de la correlación como medida de asociación puede no ser la más adecuada. De hecho, haciendo un gráfico de nube de puntos:
scatterplot(futbol$HTHG,futbol$FTHG)
scatterplot(futbol$HS,futbol$AS) # Hace el gráfico de nube de puntos
podemos ver que las relaciones no son lineales y que, además, al ser variables discretas no está tan claro el grado de asociación. Lo que sí parece es que cuando el número de goles hacia la mitad del partido (HTHG) es bajo, puede pasar cualquier cosa (la dispersión en torno a HTHG=0 es muy alta)
\[\\[0.15in]\]
En el caso de la relación entre HS y AS, las variables -pese a ser discretas- toman un alto rango de posibles valores y-por tanto- es posible analizar mejor la relación entre ambas. En este caso, es ligeramente negativa y muy dispersa.
\[\\[0.15in]\]
Pregunta abierta
Habrá que seguir pensando ¿Cómo podemos formular un modelo predictivo en el que puedan cumplirse mejor las ideas formuladas sobre qué es un modelo predictivo sensato?
Otro conjunto de datos que podemos utilizar es el de enfermedades cardiovasculares. En este caso, la variable TARGET toma valor 1 si el individuo es diagnosticado con una enfermedad cardiovascular y 0 en caso contrario. Estos son los posibles predictores:
Una pregunta de interés, de cara a que el modelo predictivo tenga sentido es si podemos predecir- con suficiente precisión- la probabilidad de que un individuo tenga un problema coronario ante pruebas diagnósticas baratas. O, lo que es lo mismo, ¿hacerle a un individuo una prueba cara de diagnóstico es rentable?
Esta es la fuente de los datos: https://archive.ics.uci.edu/dataset/45/heart+disease
Vamos a empezar “despacito”. Lo primero que tenemos que analizar es cómo está compuesta la muestra. En datos clínicos que no proceden de un experimento controlado (hablaremos de ello en la siguiente sesión), uno debería sospechar que los datos no representarán una población general, sino una muy concreta (gente que ya está predispuesta a enfermar). Lo que deberá hacer es acudir a informes (lo más rigurosos y verosímiles) que indiquen el grado de prevalencia de ciertas enfermedades (por ejemplo, glucosa en sangre) o los niveles promedio de la población en otros (colesterol).
heart<-read_csv("heart_FINAL.csv")
age_q<- as.factor(ifelse(heart$age<40, '40',
ifelse(heart$age>=40 &heart$age<50, '40-50',
ifelse(heart$age>=50 & heart$age<65,'50-65', '65 and more')))) #creo una nueva variable que "discretiza" por edades
heart<-data.frame(heart,age_q) #la añado a la base de datos
library(doBy)
#creo diferentes tablas-resumen con las variables de interés
tab1<-summaryBy(target ~ age_q, data = heart,
FUN = list(mean, median, sd))
tab2<-summaryBy(chol ~ age_q, data = heart,
FUN = list(mean,max,min, median, sd))
tab3<-summaryBy(trestbps ~ age_q, data = heart,
FUN = list(mean, max, min, median, sd))
tab4<-summaryBy(fbs ~ age_q, data = heart,
FUN = list(mean, sd))
TABLA<-data.frame(tab1,tab2,tab3,tab4)
La tabla siguiente nos permite ver:
- En los individuos menores de 40 años, el 73% tiene afección cardiaca. Esto no concuerda con cualquier lógica. Pero es que, además, el nivel mínimo de colesterol de estos individuos es el mayor de toda la muestra, lo cual tampoco concuerda. En resumen: los individuos jóvenes de esta muestra están más enfermos que los mayores. Esto es importante de cara a los siguientes pasos que demos
- El colesterol medio va siendo mayor por tramos de edad, como cabría esperar pero el mínimo no evoluciona de la misma forma, indicando que hay individuos jóvenes con colesteroles mínimos más altos que individuos mayores.
- La desviación típica del colesterol de los mayores es el doble que en los jóvenes, indicando de nuevo más variabilidad en los individuos mayores (más casos diversos) que en los jóvenes (que todo apunta a que están sobrerrepresentando a los individuos más enfermos)
TABLA
age_q target.mean target.median target.sd age_q.1 chol.mean
1 40 0.7368421 1 0.4442617 40 213.4211
2 40-50 0.6624473 1 0.4738759 40-50 235.0549
3 50-65 0.4384486 0 0.4966159 50-65 250.5278
4 65 and more 0.4855072 0 0.5016107 65 and more 258.7971
chol.min chol.median chol.sd age_q.2 trestbps.mean trestbps.max
1 175 204 36.99853 40 126.0702 140
2 141 235 44.78595 40-50 123.9536 152
3 126 244 49.37121 50-65 133.7926 200
4 149 251 66.67222 65 and more 137.6812 180
trestbps.min trestbps.median trestbps.sd age_q.3 fbs.mean fbs.sd
1 94 126 11.31980 40 0.00000000 0.0000000
2 101 122 12.42307 40-50 0.08438819 0.2785574
3 94 130 17.94029 50-65 0.17875211 0.3834681
4 100 140 20.30964 65 and more 0.19565217 0.3981471
esto nos pone en alerta para poder asegurar:
- Quizás el modelo para los individuos jóvenes no sea muy exitoso y no pueda utilizarse
- Este modelo parece apuntar que no puede utilzarse para estimar el riesgo de enfermedad cardiaca de la población general, sino de una población que ya es diagnosticada como propensa a enfermedad cardiaca.
Estos dos puntos son diagnósticos importantes que cualquier científico de datos debe realizar para poder hacer un trabajo riguroso. No sólo consiste en ejecutar código, sino en hacerle entender a nuestros clientes las circunstancias en las que se puede utilizar el modelo.
Por otro lado, deberemos sospechar de un conjunto de variables que van a hacernos la vida imposible: las confusoras
\[\\[0.15in]\]
En general, estas variables están relacionadas con la variable TARGET (es decir, son predictoras) pero también están relacionadas con la variable predictora. De esta forma, podrían alterar la relación que tratamos de estimar entre la predictora y la variable target si se omiten. Ahora bien, incluirlas tampoco te asegura que resuelvas el problema puesto que podrían afectar de diferente forma (por ejemplo, a través de la paradoja de Simpson). Esto dará para mucha discusión a lo largo de la asignatura, no te agobies. Empecemos por un gráfico muy sencillo. Vamos a ver la distribución del colesterol para los individuos que están enfermos frente a los que están sanos
library(ggplot2)
dat <- data.frame(cholesterol = heart$chol,disease = heart$target,age=heart$age)
ggplot(dat, aes(x = cholesterol, fill = as.factor(disease))) + # Draw overlaying histogram
geom_histogram(position = "identity", alpha = 0.2, bins = 50)
\[\\[0.15in]\] ¿qué concluímos aquí?
- El colesterol no parece un factor relevante
- Parece que, incluso, el colesterol ligeramente alto es bueno para tener, con menor probabilidad, un problema cardiaco.
Uhm, no suena muy convincente. En este caso, sospechamos que hay un confusor que está detrás de todo esto y que ya hemos podido ver en el análisis inicial: la edad. Ahora bien,
PREGUNTA ABIERTA!
¿Cómo estudiamos la manera en que la edad actúa como confusora?
Esta base de datos nos permite analizar otro tipo de cuestiones de mucho interés, pero complicadas de abordar. Preguntas donde hay un interés en cuantificar relaciones causales.
De manera informal, diremos que estaremos en disposición de cuantificar una relación causal si el usuario tiene un control sobre las posibles variables que causan a la variable target. Por ejemplo, en el caso del fútbol eso es imposible: no podemos decidir nosotros el número de tiros a puerta que va a hacer el Real Madrid en ningún partido. En el caso de los datos clínicos, tampoco: no podemos decidir el nivel de colesterol que puede tener un individuo. Ahora bien, en el caso de los Simpson parece que sí podemos tomar decisiones. Esta base de datos cuenta con la audiencia de cada episodio en USA, la nota media que recibió cada episodio en imbd y, finalmente, las líneas de guión (como medida de la importancia) de cada personaje en cada episodio.
Sobre las líneas de guión sí se puede actuar, ya que los guionistas tienen el poder de decidir -incluso- si matar a un personaje.
\[\\[0.15in]\]
Entonces, en este caso, tiene sentido tratar de plantearse qué efecto cabría esperar ante un cambio en la política de importancia de personajes en Los Simpson. Ahora bien, iremos viendo que medir relaciones causa-efecto no es algo obvio ni inmediato.
Empecemos por lo más sencillo, que es un análisis descriptivo… ¿lo más sencillo? Veamos:
library(readxl)
FINAL_SIMPSON <- read_excel("datos_SIMPSON.xlsx")
#1) Visualizo los datos de audiencia y calidad
par(mfrow=c(2,2))
plot(FINAL_SIMPSON$id,FINAL_SIMPSON$us_viewers_in_millions)
plot(FINAL_SIMPSON$id,FINAL_SIMPSON$imdb_rating)
plot(FINAL_SIMPSON$id,FINAL_SIMPSON$sumH)
#2) Analizo los descriptivos univariantes de las variables de interés
par(mfrow=c(2,2))
hist(FINAL_SIMPSON$us_viewers_in_millions)
hist(FINAL_SIMPSON$imdb_rating)
hist(FINAL_SIMPSON$sumH)
DF<-data.frame(FINAL_SIMPSON$us_viewers_in_millions,FINAL_SIMPSON$imdb_rating,FINAL_SIMPSON$sumH)
#3) Crear una variable (changes) que recoja la caída general de audiencia en torno al episodio 200. A1 significará Audiencia primera parte y A2, lo contrario
FINAL_SIMPSON$changes<-ifelse(FINAL_SIMPSON$id<250,"A1","A2")
#4) Analizo el impacto de Homer (sumH) en la variable "imdc_rating" teniendo en cuenta los dos regímenes de audiencia
plot(FINAL_SIMPSON$sumH,FINAL_SIMPSON$us_viewers_in_million)
if (require("ggplot2")) {
ggplot(FINAL_SIMPSON, aes(x = sumH, y = us_viewers_in_millions)) +
geom_point(aes(color = changes)) +
geom_smooth(aes(color = changes), method = "lm") +
geom_smooth(method = "lm")+xlab("Homer Lineas")+ylab("Audience")
}
#5) Analizo el impacto de "imdb_rating" sobre la audiencia "us_viewers_in_millions", de nuevo, teniendo en cuenta los dos regímenes de audiencia
if (require("ggplot2")) {
ggplot(FINAL_SIMPSON, aes(x = imdb_rating, y = us_viewers_in_millions)) +
geom_point(aes(color = changes)) +
geom_smooth(aes(color = changes), method = "lm") +
geom_smooth(method = "lm")+xlab("Quality")+ylab("Audience")
}
ggplot(FINAL_SIMPSON, aes(x=sumH)) + geom_histogram()+
geom_vline(xintercept = median(SIMPSON$sumH), colour="green", linetype = "longdash")+
geom_vline(xintercept = quantile(SIMPSON$sumH)[2], colour="green", linetype = "longdash")+
geom_vline(xintercept = quantile(SIMPSON$sumH)[4], colour="green", linetype = "longdash")
Lo primero que observamos es una caída gradual de la audiencia con una ruptura en torno al episodio 250 y una caída abrupta de la calidad también en torno a ese episodio
\[\\[0.15in]\]
Ahora bien, parece que hay que tener en cuenta que los episodios “pre” caída y “post” caída se comporten de forma distinta al tratar de medir la relación entre la importancia de un personaje (Homer, por ejemplo) y la audiencia. Pero…hay algo que nos escama:
PREGUNTA ABIERTA!
¿No te parece que no es comparable, tal cual está, lo que ocurrió en la primera temporada con la última? ¿Cómo podrías analizarlo de forma sencilla?
Paquetes necesarios para trabajar:
library(haven)
library(ggplot2)
library(hrbrthemes)
library(viridis)
library(quantreg)
library(data.table)
library(corrplot)
library(pastecs)
library(gmodels)
library(pheatmap)
Pretendemos analizar el impacto del tamaño del aula sobre la nota. ¿Cómo llegar a la pregunta que nos interesa?
Konrad Körding/ UPenn
PEOPLE ALWAYS THINK DATA SCIENTIST IS ABOUT STATISTICS LIKE THEY’RE BAD LIKE IT’S MATH AND STATISTICS AND LIKE NO IT’S NOT IT’S ABOUT LOGICAL THINKING. GOOD DATA SCIENCE IS ABOUT HAVING GOOD QUESTIONS. QUESTIONS THAT YOU ARE VERY CLEAR ABOUT.
y, por otro lado, ¿de dónde puede surgir la pregunta?
Alfonso Novales UCM
ES CONVENIENTE QUE SURJA SIMPLEMENTE DE PLANTEAR ALGO QUE ES MARGINAL, LIGERAMENTE DIFERENTE, DE LO QUE SE HA ANALIZADO EN UN ARTÍCULO CONCRETO. O EN UN SEMINARIO AL CUAL HEMOS ASISTIDO
En el artículo (https://www.sciencedirect.com/science/article/abs/pii/S0927537113000468) discuten sobre su hallazgo: el efecto sorprendente (sobre los resultados académicos) de las aulas grandes. A nosotros nos llama la atención porque:
Intuitivamente, pensamos que las clases pequeñas funcionan mejor
Pero no siempre es así: los alumnos también aprenden tejiendo redes de entre ellos y, en grupos reducidos, no parece tan probable que eso ocurra.
¿Podemos encontrar el tamaño óptimo del aula? Parece una pregunta demasiado ambiciosa. Deberemos pensar en una pregunta que, en la línea de lo que nos interesa, no respondan en el artículo que nos ha llamado la atención. Y sale enseguida, con leeer un poco la prensa ¿podrá ser distinto el efecto del tamaño del aula sobre la nota de los alumnos atendiendo a las diferentes clases sociales? (https://www.apa.org/pi/ses/resources/publications/education)
¿Seremos capaces de medir una relación causa-efecto?
En principio, no lo deberíamos tener tan claro. Por un lado, el tamaño del aula es una decisión de política educativa que puede depender de diferentes factores (es decir, no es una decisión arbitraria). Por otro lado, los alumnos con buenos resultados puedan permitirse elegir qué tipo de colegio quieren y ese factor tan difícil de medir (ser un estudiante hábil) podría afectar tanto al tamaño de la clase elegido y a su resultado académico, confundiéndonos y haciéndonos creer que estamos midiendo el impacto causal de una variable sobre otra.
Alfonso Novales UCM
¿podemos pronunciarnos los economistas sobre causalidad? Sí, siempre que lo hagamos en consonancia con una creencia inicial acerca de que un determinado factor puede ser causal frente a determinado fenómeno.
En este caso, analizaremos- con toda la cautela posible- la relación entre el tamaño del aula y la nota tratando de pensar en segmentos (como el status social) que podría alterar la relación entre ambas variables. Ese es el modelo en el que trabajaremos y lo que encontremos, pese a no ser un efecto “causal”, podría ayudarnos a realizar predicciones entendiendo cómo se comporta nuestra muestra.
K. Körding U.Penn/ Jesús Gonzalo UC3M
is basically the difference between predicting and understanding…there are a lot of things in the world that we don’t understand perfectly well: a helicopter. Most people believe that they don’t know why a helicopter flies: you can’t answer that, is entirely unclear. But you can predict that the helicopter will fly.
Pero tampoco me fiaría de un modelo predictivo que predice bien si no está basado en teorías causales ¿por qué? mañana cambia la situación, y viene un viento muy fuerte y el helicóptero que hemos predicho que volará se pega una leche…la teoría causal nos sirve para tunear esos modelos predictivos.
Cargue los “microdatos” asociados a las encuestas de PISA 2003 (están en https://www.oecd.org/pisa/pisaproducts/database-pisa2003.htm). Accederá a dos ficheros con datos: 1. Student Questionarie data file 2. School Questionarie data file
Necesitará descargarlos (tardan un poco, puesto que son archivos con mucha información) y fusionarlos. Deberá fusionar la información del colegio en el fichero de los estudiantes, de tal forma que para cada estudiante tenga información cuantitativa y cualitativa sobre el colegio. Por otro lado, analizaremos aquellas aulas que tengan más de 10 alumnos y menos de 80, puesto que las situaciones complementarias son poco probables en la muestra y se refieren a casos muy concretos
Class sizes in mainland China are generally large: the national norm is 50 students. However, in rural areas where good schools are sparse, it is not unusual to see classes of over 80 or in the extreme case, over 100
PISA_STUDENTS <- read_sav("INT_stui_2003.sav")
PISA_SCHOOLS <- read_sav("INT_schi_2003.sav")
PISA_STUDENTS<-data.frame(PISA_STUDENTS)
PISA_SCHOOLS<-data.frame(PISA_SCHOOLS)
############################################## We merge both data sets and give
##simpler names to some of the most important variables.
FINAL_DB1<-merge(PISA_SCHOOLS,PISA_STUDENTS, by=c("SCHOOLID","CNT"))
names(FINAL_DB1)[names(FINAL_DB1) == "PV1MATH"] <- "grade"
names(FINAL_DB1)[names(FINAL_DB1) == "ESCS"] <- "status"
names(FINAL_DB1)[names(FINAL_DB1) == "ST36Q01"] <- "size"
FINAL_DB1<-FINAL_DB1[!is.na(FINAL_DB1$status),]
FINAL_DB1<-FINAL_DB1[!is.na(FINAL_DB1$grade),]
FINAL_DB1<-FINAL_DB1[!is.na(FINAL_DB1$size),]
FINAL_DB1<- subset(FINAL_DB1, FINAL_DB1$size <59 & FINAL_DB1$size>10)
Genere un set de datos con la nota, el tamaño del aula y el status socieconómico y analice la información que obtiene
datos1<-data.frame(FINAL_DB1$grade,FINAL_DB1$size,FINAL_DB1$status)
options(scipen=999)
stat.desc(datos1)
La variable grade, que es la que pretendemos explicar presenta un valor promedio de unos 492 puntos, con una desviación típica de 103. Es de esperar que el 95% de los estudiantes se encuentren entre 300 puntos y 700, aproximadamente (nótese que la media y la mediana son similares, por lo que la distribución es razonablemente simétrica). Al observar el máximo y el mínimo, hay que notar que puede haber atípicos por la cola izquierda de la distribución, puesto que el mínimo es de, aproximadamente, 64 puntos. Habrá que ver si alumnos con resultados sorprendentes pueden explicarse mediante alguno de los factores que proponemos. La variable status es un índice creado, de manera sintética, por PISA utilizando un conjunto de variables socieconómicas declaradas por el alumno. De esta forma, los valores nominales del índice no quieren decir nada, pero sí la posición relativa del individuo. Como vemos, fluctúa de -4.56 (estrato social muy bajo) a 2.96 (que es el status más alto). Respecto al tamaño de la clase, este fluctúa entre el valor de 11 y el de 58, con un valor promedio de 26 alumnos.
Fijémonos en los coeficientes de variación: el de la variable nota es de 0.21 y el del tamaño del aula 0.36, indicando que no hay una gran discrepancia entre las variaciones de las variables que nos interesan. El status tiene un coeficiente de variación especialmente alto, pero este no deberíamos tenerlo en cuenta puesto que el promedio de la variable que representa es prácticamente 0. Sin embargo, la desviación típica de la variable es razonable, indicando que el 95% de las observaciones estarán entre -2 y 2, de tal manera que tenemos una variabilidad aceptable en la variable que mide el status social.
Analize la relación de la nota del individuo con el tamaño del aula. Piense en posibles “fuentes de heterogeneidad” en la relación entre ambas variables
ggplot(FINAL_DB1, aes(x=size, y=grade)) +
geom_point(size=1) +
theme_ipsum(axis_title_size=15)+
geom_smooth(method='lm', formula= y~x)
Lo primero que uno aprecia es una relación débil y decreciente entre el tamaño del aula y la nota. Pero vayamos más lejos. Miremos con atención el gráfico
Jesús Gonzalo, UC3M
Hay diferentes dispersiones: cuando el tamaño del grupo es menor, hay menor dispersión: los cuantiles inferiores en la nota son más altos , pero “matamos” a la gente que va sacando mejor nota.
Sitúese en torno a 10 alumnos por aula. Si se fija, la nota más baja de esos alumnos se sitúa más cerca de los 250 puntos que en el caso en el que el tamaño vaya aumentando. Es decir, parece que las aulas pequeñas podrían beneficiar a los alumnos más desaventajados. Sin embargo, pasa lo contrario en los alumnos con notas más altas. De ahí el “matamos a la gente que va sacando mejor nota”. Esto es interesante, nos empieza a indicar comportamientos heterogéneos que cualquier posible modelo lineal no va a poder capturar. Como nos dicen en el vídeo 2, en los grupos “muy grandes” ocurre algo parecido. ¿Cómo podemos explicar esto? Como ves trasciende a decir, simplemente, hay una relación negativa entre el tamaño del aula y la nota.
Alfonso Novales, UCM
Si tienes 10000 observaciones, tú como investigador, ya estás sospechando que esa pregunta tan concreta que ha motivado tu investigación, puede tener respuestas diferentes en función de determinadas características de las observaciones muestrales.
y, por otro lado,
Pablo Simón, UC3M
Pero cuando coges y dices ¿si a ti te toca la lotería te vuelves independentista en Cataluña? No parece que ese sea el mecanismo. Hay que pensar en términos teóricos qué puede haber detrás: a lo mejor es el estatus económico…
Esto implica que debemos tener un modelo sensato, sencillo en sus inicios, que nos permita ir indagando en los datos. Por ahora, pensaremos que es una cuestión de estatus social, que es lo que nos sugiere la intuición. Utilice siempre su intuición y las ideas teóricas que ha estudiado en su grado. Si no, piense sobre un artículo que haya leído que pueda estimular esas ideas. No haga las cosas al azar. Porque si trabaja al azar, encontrará cosas que no es capaz de explicar.
Por ejemplo, sospechamos que el status social podría ser una primera fuente de heterogeneidad en la muestra. Para poder analizar este extremo, y dado que el status social es una variable continua, vamos a “discretizarla”, generando distintos intervalos de status social. Para ello, decida cuántos grupos sociales quiere utilizar (nosotros hemos elegido 5) y, a continuación, elija los puntos de corte de cada status. Puede utilizar, por ejemplo, los quintiles de la distribución (si no tiene a mano otra idea)
ssq<-quantile(na.omit(FINAL_DB1$status),probs=seq(0,1,0.20))
De esta forma, generaremos una nueva variable de status social discreta que nos permita entender el comportamiento de la relación entre el tamaño del aula y la nota para los distintos status.
new_status<- as.factor(ifelse(FINAL_DB1$status < ssq[2], 'Very Low',
ifelse(FINAL_DB1$status>= ssq[2] & FINAL_DB1$status < ssq[3] , 'Low',
ifelse(FINAL_DB1$status >= ssq[3] & FINAL_DB1$status < ssq[4], 'Medium',
ifelse(FINAL_DB1$status >= ssq[4] & FINAL_DB1$status < ssq[5], 'High','Very High')))))
FINAL_DB2<-data.frame(FINAL_DB1,new_status) #generamos una nueva base donde incluímos la nueva variable de status sin "cargarnos" la otra
Ahora, puede tratar de cruzar estas tres variables.
ggplot(FINAL_DB2, aes(x=size, y=grade,color=new_status)) +
geom_point(size=2) +
theme_ipsum(axis_title_size=15)
Donde podemos apreciar que, en términos promedio, el status más alto (azul) se concentra en clases relativamente pequeñas y notas por encima del promedio. El estatus más bajo (rosa) está mayoritariamente presente en calificaciones por debajo de la media y, sin embargo, está presente tanto en las aulas grandes como en las pequeñas. Por lo que parece, por ahora:
1.- El status alto predice, en promedio, notas más altas
2.- El status alto está relacionado con clases más pequeñas
Quizás haya otro factor que pueda ser interesante analizar ¿dónde se sitúan las clases grandes y las pequeñas? Para ello, deberemos cruzar la información del tamaño del aula con la variable “localización”. Como el tamaño del aula es una variable continua, también la vamos a discretizar. Para ello, nos hemos fijado en otros estudios de PISA ya que, en años posteriores, decidieron tratar el tamaño del aula como una variable discreta. Tomamos esos valores como umbrales para crear nuestros intervalos. También generamos la variable del tamaño de la ciudad.
new_size<- as.factor(ifelse(FINAL_DB2$size <18, 'Very Small',
ifelse(FINAL_DB2$size>=18 & FINAL_DB2$size <22 , 'Small',
ifelse(FINAL_DB2$size >=22 & FINAL_DB2$size < 27, 'Medium',
ifelse(FINAL_DB2$size >=27 & FINAL_DB2$size < 32, 'Big','Very Big')))))
FINAL_DB3<-data.frame(FINAL_DB2,new_size)
where<- as.factor(ifelse(FINAL_DB3$SC01Q01 ==1, 'Very Small Village',
ifelse(FINAL_DB3$SC01Q01 ==2, 'Small Town',
ifelse(FINAL_DB3$SC01Q01 ==3, 'Town',
ifelse(FINAL_DB3$SC01Q01 ==4, 'City',
ifelse(FINAL_DB3$SC01Q01 ==5, 'Big City','Other'))))))
FINAL_DB4<-data.frame(FINAL_DB3,where)
CrossTable(FINAL_DB4$where, FINAL_DB4$new_size,prop.r=TRUE, prop.c=FALSE,
prop.t=FALSE, prop.chisq=FALSE)
Como vemos, en las grandes ciudades, más del 50% de las aulas son grandes o muy grandes mientras que en los pueblos pequeños pasa lo contrario. Esto nos ayuda a tomar, de nuevo, una determinación (nuevo camino del laberinto): circunscribir nuestro estudio a analizar el impacto del tamaño del aula en los resultados en las ciudades grandes y en las pequeñas, clasificando, a su vez, por status social.
Ciudades Grandes
Tomamos una submuestra donde sólo incluimos los datos de “Gran Ciudad” y “Ciudad” y hacemos gráficos de nubes de puntos asociados a cada status social
Big_City <- subset(FINAL_DB4, where =="Big City"| where=="City")
ratio.values <- (max(Big_City$size)-min(Big_City$size))/(max(Big_City$grade)-min(Big_City$grade))
ratio.display <- 70/15
plot_BIG<-ggplot(Big_City, aes(x=size, y=grade,color=new_status)) +
geom_point(size=1) +facet_grid(new_status ~ .)+ geom_smooth(method='lm', formula= y~x,color='black')+theme_ipsum(axis_title_size=9)+ggtitle("Big City")
plot_BIG+ coord_fixed(ratio.values / ratio.display)
Podemos ver que en las ciudades grandes, da igual el status social, no parece haber una relación relevante entre el tamaño del aula y la nota obtenida. Dado, además, que las relaciones podrían ser razonablemente lineales, analicemos el coeficiente de correlación lineal para cada nivel de status social
dt <- data.table(Big_City)
dtCor <- dt[, .(mCor = cor(size,grade)), by=new_status]
dtCor
Las correlaciones son, como vemos, muy modestas. La más alta es la que resulta, en las clases más bajas entre el tamaño del aula y la nota, en torno a -0.11.
Ciudades pequeñas
Repetimos el mismo ejercicio con ciudades pequeñas
small_Town <- subset(FINAL_DB4, where == "Small Town"| where=="Very Small Village")
ratio.values <- (max(small_Town$size)-min(small_Town$size))/(max(small_Town$grade)-min(small_Town$grade))
ratio.display <- 70/15
plot_SMALL<-ggplot(small_Town, aes(x=size, y=grade,color=new_status)) +
geom_point(size=1) +facet_grid(new_status ~ .)+ geom_smooth(method='lm', formula= y~x,color='black')+theme_ipsum(axis_title_size=9)+ggtitle("Small Town")
plot_SMALL+ coord_fixed(ratio.values / ratio.display)
En las ciudades pequeñas y pueblos parece que los individuos con status social bajo y muy bajo sí que sufren cierto efecto del tamaño del aula (son, quizás, las pendientes más negativas que encontramos). De acuerdo con las correlaciones
dt <- data.table(small_Town)
dtCor_small <- dt[, .(mCor = cor(size,grade)), by=new_status]
dtCor_small
Las correlaciones más destacadas ocurren en “very low” y “low” status, cerca del -0.30. Esto traza ya conclusiones de interés: el tamaño del aula podría ser ligeramente relevante en las ciudades y pueblos pequeños y en estatus socioeconómicos bajos. En el resto no encontramos una evidencia clara y remarcable.
Hay que seguir hablando de este tema porque es complicado y está lleno de sutilezas. Es muy común que se abuse, en el lenguaje, de maneras erróneas de hablar. Muchas veces parece que el uso de una metodología estadística sofisticada permite ser más tajante y dogmático en las conclusiones que pueden extraerse. No hay que olvidar que la ciencia siempre ha de estar acompañada de las dudas razonables que surgen al tratar de modelizar una cuestión de interés y que, además, hay que elegir correctamente los términos con los que se expresan los resultados obtenidos, puesto que un uso inadecuado de estoss podría llevar a muchos errores.
Para empezar, puede ver este vídeo
Lo cierto es que se puede relacionar cualquiera de las ideas que nos cuentan en el vídeo con muchas de las fuentes de información que nos impactan a diario. Por ejemplo, esta cuestión:
\[\\[0.15in]\]
Esta pregunta tiene mucho de lo que sacar. El periodista, Daniel Mediavilla, ha observado que cuando salen en los medios individuos que sobrepasan los 100 años, en general, confiesan que mantienen algún vicio (fumar puros, beber whisy, comer en el McDonalds). Ahora bien ¿deberíamos aconsejar a la población que no lleve una vida sana porque se observa que la gente longeva no la lleva?
Veamos cómo debería analizarse, idealmente, esto. Elija a un montón de individuos (cuántos son un montón? 1000? 10000? Los que quiera) que tengan una dieta sana y saludable. Exíjales por contrato que no cambien esa dieta. Espere a que pasen los años y cuente cuántos sobrepasan la centena. Llamaremos a esto el “Factual”, esto es, los individuos con dieta sana que sobrepasan los 100 años. Ahora, utilice su máquina de viajar en el tiempo (sí, aquella que inventó su amigo Doc Brown) y lleve en ella a todos sus individuos. Ahora, por contrato, les obliga a llevar una dieta llena de malos hábitos y caprichos. Vuelve a dejar pasar el tiempo y anote cuántos llegan a la centena. A esto, lo llamaremos ” contrafactual”. Como ve, está analizando a la vez a los mismos individuos con dos “intervenciones” o “políticas” diferentes. De esta manera puede estudiar el efecto que tiene la dieta sobre la longevidad.
Aquí puede ver cómo se organiza un experimento en la realidad con gemelos idénticos.
Esto, como entenderá, es imposible de realizar porque Doc Brown es un personaje de ficción. Una manera que tienen los científicos de estudiar estas cuestiones es a través de experimentos controlados. Buscan individuos que cumplan ciertas características de interés y los asignan aleatoriamente un tipo de dieta. Lo lógico es que si hemos diseñado bien el experimento, la asignación aleatoria haga algo parecido al factual vs. contrafactual: en cada grupo (que se suelen llamar “tratamiento”-por ejemplo, dieta sana- y “control”- por ejemplo, dieta arbitraria-) habrá individuos comparables de tal forma que la única caracteristica que los diferencia es el tipo de dieta.
De nuevo, en este caso no parece muy ético hacer esto con humanos (ni muy barato). Lo cierto es que no es muy habitual disponer de datos de laboratorio o experimentales (al menos, en ciencias sociales y en algunas ramas de las ciencias de la salud).
\[\\[0.15in]\]
Entonces, lo más común es que tengamos datos “no experimentales”, esto es, una base de datos con registros sobre lo que un conjunto de individuos (la muestra) ha realizado, almacenado en forma de variables. Los datos no experimentales se caracterizan por:
- La selección de los individuos no se hace de manera aleatoria. Por ejemplo, hay bases de datos donde individuos con mucho tiempo libre (jubilados, etc…) están sobrerrepresentados, puesto que tienen tiempo de facilitar su información o participar en un cuestionario.
- La selección de quién recibe el tratamiento no es aleatoria: piense en el vídeo. ¿Por qué se puede concluir que los enfermos de asma es probable que no tengan complicaciones por neumonía?
- Al no hacerse una selección aleatoria, podría primar alguna característica no observable de los individuos que sesgue los resultados (por ejemplo, que en un estudio sobre el impacto del consumo de vitaminas sobre la cantidad de virus en sangre sólo se apunten individuos inmunodeprimidos).
Por lo tanto, se abre una nueva brecha que dificultará cualquier análisis causa-efecto que pretendamos realizar. ¿Cómo se resuelve? La clave es esta:
PENSANDO, PENSANDO, PENSANDO
\[\\[1in]\]
\[\\[0.15in]\]
Justo lo más complicado. Como ya vimos en la clase anterior, debemos tener en cuenta que si estamos interesados en aproximar el efecto causal que tiene una variable sobre otra, lo primero que debemos pensar es que si la variable “causa” es una variable- en cierto modo- controlable por nosotros (ejemplo de variables controlables: el precio de nuestro producto, el grado de protagonismo que tendrá Krusty el Payaso en un episodio de los Simpson, el tamaño que tendrán las aulas de nuestro colegio). Si eso no es así, parece que no tiene mucho sentido tratar de estudiar el efecto que tiene una variable sobre otra si nunca la causa podrá controlarse. Eso no quita, sin embargo, que podamos tener un buen modelo que estime o prediga una variable de interés. Vamos a desgranar estas ideas paso a paso. Para ello, primero mire este Ivídeo
El propio periodista se pregunta: ¿es cierto que la inmigración causa el incremento del precio de la vivienda de alquiler?
\[\\[0.15in]\]
Lo cierto es que se puede caer en la tentación de afirmar que una variable “causa” a la otra. Sin embargo, los expertos inmobiliarios de Leicester (donde la población ha aumentado en 40000 individuos los últimos 2 años y el precio de alquiler en un 20%) dicen que:
- La inmigración ha aumentado la demanda de vivienda de alquiler, pero…
- El efecto de leyes introducidas en los últimos años que han expulsado oferta del mercado
- la subida de los tipos de interés (tras la escalada de precios provocada por los conflictos bélicos) [provocando que los propietarios sufran subidas en sus hipotecas]
- Problemas con la capacidad del propio país para construir nueva vivienda. Pese a que no dudan de que el incremento de población pueda suponer una tensión en el mercado, apuntan a que esta será mínima comparada al impacto que tienen las políticas de vivienda y de tipos de interés.
Entonces, no parece sensato tratar de establecer una relación “causa-efecto” entre las variaciones de la población inmigrante y los tipos de interés. Pero, como vimos anteriormente, para tratar de predecir no es necesario disponer de un modelo causal. Si bien es cierto que en el vídeo nos dan dos versiones:
- Un modelo predictivo no es necesario que responda a relaciones causa-efecto, sino a asociación/correlación entre las variables predictoras y la variable objetivo (saber que el helicóptero vuela pero no sabemos por qué)
- Es conveniente que un modelo predictivo se base en alguna idea causal (débil) o teórica. Si no, un modelo que deja de “predecir bien” será difícil de argumentar por qué.
Galit Shmueli en “to explain or to predict” resume de una manera muy clara qué condiciones necesitamos para plantearnos un modelo con orientación causal o puramente predictivo:
\[\\[0.15in]\]
En los modelos predictivos, debemos ser muy cuidadosos con la selección de “predictoras”. Uno de los criterios más importantes no es ni la correlación ni ninguna de esas medidas estadísticas que se manejan habitualmente para relacionar variables. Un criterio más sensato es:
- Que la variable predictora anteceda en el tiempo a la variable target
- Que la variable predictora esté disponible en el momento en que tenemos que hacer la predicción.
En el caso que nos ocupa, de nada nos sirve que la correlación entre la variable de inmigración y de precio de la vivienda estén altamente correlacionadas en el trimestre en curso. Cuando queramos predecir el precio de la vivienda, deberemos predecir el valor que va a tomar la inmigración. Entonces, de nada nos sirve, porque pretendemos realizar una predicción con la predicción de otra variable (¿no le parece poco sensato?). Otra cosa es que la inmigración del trimestre anterior afecte a los precios de la vivienda de este trimestre. Entonces, cuando queramos predecir los precios de la vivienda del trimestre siguiente, necesitaremos la inmigración de hoy, que es un dato disponible.
\[\\[0.15in]\]
En el caso [1], la inmigración de un trimestre está relacionada con el precio del alquiler del mismo trimestre. Entonces, cuando queramos predecir el precio de la vivienda del cuarto trimestre de 2023 con toda la información previa que tenemos, necesitaremos también predecir la población inmigrante de dicho trimestre, ya que no está disponible. No parece muy sensato ese camino. En cambio, en el caso [2], la inmigración del trimestre anterior está relacionada con el precio del alquiler del trimestre siguiente (mire las flechas). Entonces, al predecir tratar de predecir el precio del alquiler para el 4T de 2023, necesitaremos conocer el nivel de inmigración en el 3T de 2023 que, como ve, está disponible.
En el vídeo, también nos dicen que entre la causa y el efecto debe pasar tiempo (aunque no se nos exige, como en el caso del modelo predictivo, que esté disponible la variable, porque la podemos controlar nosotros). El paso del tiempo debe asegurarse para acercarnos, lo más posible, a medir el efecto que tiene una acción o política concreta. La causa no puede ocurrir después que el efecto en el tiempo. De la misma manera que en la búsqueda de variables adicionales (generalmente lo que llamamos confusores) hay que seguir el mismo criterio.
En el libro “Mastering Metrics” (de recomendada lectura,al menos los capítulos iniciales), el premio Nobel J. Angrist reflexiona sobre esto. Ellos denominan “controles” a lo que nosotros denominamos “confusores”.
\[\\[0.15in]\]
El objetivo de estas notas es “conceptual”. Apenas si contarán con expresiones matemáticas porque, aquí, relevante es aprender ciertos conceptos relacionados con lo visto en las sesiones anteriores.
A continuación, utilice los datos del fichero “paradoja”. Son unos datos simulados (inventados) que nos ayudarán a ilustrar varias ideas de un modelo de regresión.
library(readxl)
Paradoja <- read_excel("Paradoja.xlsx")
plot(Paradoja$Tamaño,Paradoja$Nota)
\[\\[0.15in]\]
En este caso, pretendemos analizar el impacto-posiblemente causal- entre la nota de los alumnos y el tamaño del aula. Para ello:
- La variable “tamaño del aula” es una variable que podemos controlar y tomar decisiones sobre ella
- Asumimos que la variable “tamaño del aula” se ha fijado previamente (las aulas no se modifican de manera sustancial en cortos periodos de tiempo) a la evaluación de los estudiantes.
Sin tener en cuenta más factores, observamos que la relación es positiva y razonablemente lineal. El modelo “lm” estimado es el siguiente
mod1<-lm(Nota~Tamaño, data=Paradoja)
summary(mod1)
Call:
lm(formula = Nota ~ Tamaño, data = Paradoja)
Residuals:
Min 1Q Median 3Q Max
-4.3521 -1.0479 0.0462 1.0450 4.9072
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.107071 0.153209 33.33 <2e-16 ***
Tamaño 0.064993 0.006228 10.44 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.578 on 483 degrees of freedom
Multiple R-squared: 0.184, Adjusted R-squared: 0.1823
F-statistic: 108.9 on 1 and 483 DF, p-value: < 2.2e-16
Vamos a ir desgranando cada una de las piezas más importantes que nos proporciona esta tabla. Aunque, primeramente, recordemos la idea conceptual de un modelo de regresión lineal.
Este es un modelo de regresión lineal simple poblacional:
\[ y=\alpha+\beta x+u \]
\[\\[0.15in]\]
Tenemos que hacer un ejercicio de “imaginación estadística” para entender el marco conceptual que supone un modelo de regresión como el presentado en la ecuación. De hecho, a esta ecuación, le hemos puesto el nombre “poblacional” por lo siguiente:
- Supone que conoce todos los valores \((y,x)\) de todos los individuos de la población (recuerde que los tamaños de las poblaciones suelen tender a infinito).
- Los parámetros \(\alpha,\beta\) son fijos. ¿Qué significa que sean fijos? Pues que no provienen de una variable aleatoria, sino que son dos valores (dos números)
- Sin embargo, los parámetros \(\alpha,\beta\) son desconocidos. Ese desconocimiento hará que elaboremos un aparato estadístico para tratar de hacer inferencia sobre sus valores.
- La variable \(u\) es el error que se comete, en la población, al relacionar las dos variables \(x\) e \(y\) mediante el modelo lineal. Esta variable no se puede observar en la población (lo errores no van por la calle de paseo) pero, sin embargo, es una variable aleatoria. Esto quiere decir que cada individuo de la población tendrá un error asociado que será una extracción de un posible valor de la distribución de este. En este caso, se asume que esta es normal con media cero y varianza constante:
\[\\[0.15in]\]
es una hipótesis, a la luz de la FIG2, razonable. Decimos que \(E(u)=0\), porque- en promedio- el error esperable es 0. Y, como se explica en la FIG2, la distribución normal parece una propuesta sensata puesto que no cabría pensar en que va a haber un desequilibrio entre errores positivos o negativos (asimetrías): ¿por qué pensar que nos vamos a equivocar más por exceso que por defecto?. Además, la normalidad implica que cuanto más se aleje uno de la media, menos probable es obtener dichos valores inferiores o superiores.
¿Qué hacer ahora para obtener información?
Debemos utilizar la estadística para poder trabajar de forma razonable:
1.Estimación
Para estimar los valores de los parámetros, nos dirigimos a la población, y extraemos una muestra (de tamaño finito, digamos que \(n\)). Como en la FIG3
\[\\[0.15in]\]
gracias a esa muestra, podremos obtener la siguiente ecuación:
\[ y_{i}=\hat{\alpha}+\hat{\beta}x_{i}+\hat{u}_{i}\;\;i=1,...,n \]
Ahora, versus el modelo poblacional, observará lo siguiente:
- Dispone de un valor estimado para los parámetros desconocidos \(\alpha\) y de \(\beta\). Por eso, al ser valores “estimados” se les pone el gorrito: \(\hat{\alpha},\hat{\beta}.\)
- Una estimación posible de \(u\): a esto se le llama “residuo” y también va con gorrito \(\hat{u}\), puesto que es el error obtenido con esa muestra.
Sin embargo, esta es “una estimación posible” de otras muchas que podría haber obtenido. ¿Cómo? En la FIG4 se esboza la idea: usted puede acudir a su población y realizar un muestreo aleatorio, de nuevo, bajo las mismas condiciones que hizo el primero y obtendrá otra estimación de parámetros y otros residuos.
\[\\[0.15in]\]
De tal forma que si lo hiciera con muchas, muchas muestras, tendría otras tantas estimaciones de los parámetros de interés. Entonces, las estimaciones- al depender de la muestra- diremos que son variables aleatorias. De hecho, se dice que, si el muestreo es aleatorio y la variable \(x\) es exógena ( a continuación desarrollamos mejor esa idea), entonces
PROPIEDAD 1
\[ \hat{\alpha}\sim N\left(\alpha,var(\hat{\alpha})\right) \]
\[ \hat{\beta}\sim N\left(\beta,var(\hat{\beta})\right) \]
Esto quiere decir que “si todo va bien”, los estimadores se distribuirán como una normal cuya esperanza (media) será el verdadero valor desconocido y su varianza, la varianza muestral. ¡ Y eso es una buena noticia! Puesto que ya sabe que su estimación se encontrará dentro de “lo esperado”. Ahora bien ¿qué significa “si todo va bien”? Veamos dos ejemplos antagónicos
Ejemplo 1: estamos en un laboratorio. En este caso, usted puede fijar el valor de \(x\) que desee. Elige bien a los individuos (aleatoriamente, etc…) y observa el valor de la variable \(y\) en cada muestra para cada valor de \(x\). Aquí se dice que:
- \(x\) es determinista o exógena (usted elige los valores para cada individuo)
- \(y\) es aleatoria (depende del individuo)
Si \(x\) es determinista o exógena, entonces la PROPIEDAD 1 se cumple. Esto es equivalente a decir que tenemos estimadores insesgados
\[\\[0.15in]\]
IDEA
Esto es de lo que hablan en el vídeo 3 tanto Könrad Kording (U. Pennsylvania) como Yannete Interian (Google) de cuando se pueden hacer experimentos aleatorizados en la población
Ejemplo 2: tomamos datos de encuestas. Imaginemos que podemos hacer tantos muestreos como queramos. Mire aténtamente los datos de la FIG6.
\[\\[0.15in]\]
De lejos, se parecen a los del Ejemplo 1. Pero no. Aquí, los individuos responden a varias cuestiones simultáneamente, esto es, usted no fija el valor de \(x\) y mira cómo se comporta el individuo midiendo su \(y\). Entonces, es normal pensar que podría haber algún factor difícil de observar que condicione las respuestas a ambas variables (piense en lo que vio en el vídeo 3)
\[\\[0.15in]\]
Por ejemplo, en el caso del vídeo 3, la habilidad del individuo podría estar condicionando tanto el valor de la \(x\) (el tamaño del aula) y de la \(y\) (la nota obtenida).
Pero más aún, en este caso, tendremos que asumir que la variable \(x\) también es aleatoria. De hecho, si hiciéramos varias encuestas, en igualdad de condiciones, obtendríamos lo que se ve en la FIG 6: usted no controla ningún factor.
Aquí, entonces, es más difícil que se satisfaga la PROPIEDAD 1, puesto que para que el estimador sea insesgado, no debería haber factores “ocultos” que condicionen las estimaciones. Y este es un tema controvertido:
- En general, sólo dispondremos de una muestra por lo que la PROPIEDAD 1 no debería agobiarnos. En la vida real las muestras son caras y, por tanto, no se pueden hacer-en general-promedios de resultados obtenidos mediante distintos muestreos en igualdad de condiciones.
- Lo primero que deberá pensar, entonces, es en la Ley de los Grandes Números (cuanto mayor sea mi tamaño muestral, más me acercaré al verdadero valor poblacional)
- Pero eso no es cierto en presencia de factores “confusores”.
- Sin embargo, debería tener esto en cuenta para no ser dogmático con su proceso de modelización y realizar análisis más cuidadosos, como los que hemos visto. Use distintas metodologías y compare resultados, puesto que con estos problemas (denominados sesgo e inconsistencia) se convive habitualmente en estadística.
Hay una cita de un conocido estadístico que dice: “todos los modelos están mal, pero algunos sirven para algo”.
Lo primero que deberíamos mirar es, justo, una de las columnas que más suelen pasar desaparecidas.
\[\\[0.15in]\]
Si tuviéramos que escribir en una ecuación el modelo estimado, esta sería
\[ Nota_i=5.10+0.065Tamaño_i+\hat{u}_i \]
y se interpreta como: ante un incremento del tamaño en una unidad (es decir, un alumno adicional en el aula), la nota de cualquier alumno se incrementará, aproximadamente, en 0.065 puntos. Ese es el efecto que provoca el tamaño del aula sobre la nota. Note que:
- Al ser un modelo lineal, da igual el tamaño que haya hoy en el aula (20 alumnos o 48) si aumentamos un alumno adicionalmente, la nota se incrementará en la misma cifra. Los modelos lineales, a veces, son poco realistas :)
- De nuevo, al ser un modelo lineal, no tenemos tope. Sin embargo, si mira a los datos, verá que sería aventurado decir algo con aulas que son mayores a 50 alumnos, puesto que la muestra disponible no soporta esa información.
Pero cabe preguntarse: ¿tenemos evidencias para pensar que aumentar un alumno el tamaño del aula es “mucho” o “poco”? Como vemos, si aumentamos un alumno, la nota aumenta en 0.065 puntos. No hay que ser muy avispados para darse cuenta de que eso es nada. Sin embargo, parece sensato pensar que-de cara a hacer una obra- un colegio no aumentará las aulas en un alumno de capacidad, ¿no? Para tener una medida de qué significa “aumentar” en promedio la cantidad de alumnos, podemos acudir a alguno de los estadísticos descriptivos que hacer referencia a variación/dispersión.
Por ejemplo, la desviación típica de la variable tamaño indica, en promedio, cuánto varía el tamaño de las clases en la muestra y es una idea de cuánto cambia-cuando se altera- dicha variable. Otra medida es el rango intercuantílico. Por ejemplo:
sd(Paradoja$Tamaño)
[1] 11.51405
IQR(Paradoja$Tamaño)
[1] 17.6047
aquí tenemos dos medidas de dispersión de la variable “Tamaño”. La desviación típica nos dice que “un movimiento típico de la variable tamaño es de 11.5 alumnos en promedio”. Por otro lado, el rango intercuartílico dice que son 17.60 alumnos.
Podemos, entonces, calcular, cuánto supondría el incremento de la nota al aumentar “tamaños” típicos. En el primer caso:
\[ \Delta Nota=0.065\times 11.5=0.75, \]
y en el segundo
\[ \Delta Nota=0.065\times 17.6=1.14, \]
Parece que, aproximadamente, aumentaría un punto la nota media. El analista no debe pronunciarse de manera categórica sobre la “relevancia” del efecto. Nuestro trabajo es cuantificarlos y dejar que, quien tenga que decirdir, tome las decisiones basado en estas medidas.
IDEA
En este caso, nuestro cliente tendrá que pensar si le es rentable hacer la obra correspondiente para aumentar la capacidad de sus aulas dado el incremento promedio esperado en la nota de los alumnos.
Cada estimación que proporcionamos viene acompañada de cómo de precisa es esta. Es decir, no sólo vale argumentar que por cada alumno adicional, esperamos que la nota se incremente en 0.065 puntos, debemos también dar un rango posible de valores. Esto se hace obteniendo “cuánto fluctúa la estimación realizada” y, como ya sabe, una medida de fluctuación es la desviación típica. En este caso, la desviación típica de un efecto promedio (un parámetro estimado) se denomina, traducido del inglés, ERROR ESTÁNDAR. Es la siguiente columna que aparece:
\[\\[0.15in]\] ¿Cómo se obtiene este resultado? Vamos a desgranarlo. No es importante saberse la expresión (¿de qué sirve saberse fórmulas de memoria?), pero sí es conveniente haber leído alguna vez qué factores influyen en que el “error estándard” sea más o menos grande. Pensemos que, en este caso, cuanto más grande sea, más imprecisos seremos al medir el impacto del tamaño sobre la nota.
- Que \(\hat{\sigma}^{2}\) sea pequeña (es decir, la varianza del error del modelo sea lo menor posible). Esto tiene que ver, directamente con la nube de puntos. Cuanto más dispersa sea-en torno- a la recta imaginaria de regresión, mayor será esta cantidad.
- Que \(var(x)\) sea grande (lo que ya hablamos en la primera clase: cuando más varíe la variable explicativa, mayor precisión tendremos capturando su efecto sobre la variable dependiente). Es decir, si la variable tamaño “se mueve mucho”, esto es- no tenemos sólo mediciones para aulas entre 20 y 25 alumnos- tendremos más posibilidades de analizar cómo impacta sobre la nota. En otro caso, quizás impacte pero nuestra muestra no nos permite medirlo con precisión.
- Que \(n\) sea grande (como hemos dicho, con muestras grandes, más precisión). Este es el gran factor que nos permite “manipular” un resultado. Hoy en día, los tamaños muestrales que manejamos suelen ser lo suficientemente grandes para estimar efectos con “excesiva precisión”. Y esto va a tener consecuencias, como verá, en lo que viene después: el tan (mal)utilizado p-valor.
Por cierto, Joshua Angrist, nuestro premio Nobel, lo destaca en Mastering Metrics, uno de sus libros más leídos
\[\\[0.15in]\]
Vale, la pregunta que surge ahora es ¿dónde utilizamos esta medida de precisión que, parece, tanto daño puede hacer? A continuación:
Veamos la siguiente columna de la tabla
\[\\[0.15in]\]
Como veremos, este valor consiste en la división entre el coeficiente estimado y el error estándar ( \(0.065/0.006228=10.44\)): ahora veremos de dónde sale.
Recuerde que, en un modelo de regresión, el test de hipótesis general para un sólo parámetro se especifica como \[ H_{0}:\beta=\beta^{*} \]
\[ H_{1}:\beta\neq\beta^{*} \]
Y esto quiere decir que planteamos una hipótesis de interés sobre el valor que el parámetro poblacional (observe que las hipótesis se realizan siempre sobre parámetros poblacionales) puede tener. Usamos nuestra muestra para “contrastar” esta hipótesis, decidiendo si la rechazamos o no. Por ejemplo, una hipótesis podría ser:
\[ H_{0}:\beta=0.5 \]
\[ H_{1}:\beta\neq 0.5, \]
pretendiendo decir que estamos indagando si-en la población- el incremento de un idnividuo adicional en el aula aumenta la nota en 0.5 puntos. El contraste se resuelve así.
- Primero calculamos el estadístico de contraste: esta es una cantidad que obtenemos a través de la muestra imponiendo la hipótesis nula. En esencia, queremos cuantificar cómo de lejos está la hipótesis nula del parámetro estimado.
\[ T=\frac{\hat{\beta}-\beta^{*}}{dt\left(\hat{\beta}\right)} \]
- Necesitamos saber cómo se distribuye \(T\). Eso es necesario para poder decir si es grande (raro/extremo) o pequeño (normal)
\[ \frac{\hat{\beta}-\beta^{*}}{dt\left(\hat{\beta}\right)}\sim t_{\alpha/2,n-2} \]
esto es, como una t de student, donde \(\alpha\) es el nivel de significación del contraste y \(n\) es el tamaño muestral. Si la muestra es grande (más de 100 elementos), entonces podemos aproximar el resultado utilizando la normal.
\[ \frac{\hat{\beta}-\beta^{*}}{dt\left(\hat{\beta}\right)}\sim N(0,1), \]
donde \(N(0,1)\) es el valor crítico de la normal (0,1). Por ejemplo, en el caso que nos ocupa, las tablas de la regresión incluyen- por defecto- la información de este constraste que se llama “significatividad”
\[ H_{0}:\beta=0 \]
\[ H_{1}:\beta\neq0 \]
donde viene a decir que si un parámetro es “cero” en la población, entonces no es significativo.
utilizando la información anterior, \[ T=\frac{0.065-0}{0.0062}=10.44 \]
que, como ve, es el valor que aparece en la pantalla de R en el lugar de t-value. Este valor lo tiene que comparar con el punto crítico de la distribución (al nivel de significación elegido que, para seguir la tradición, elegiremos 5%) y que, en este caso, resulta ser -1.96,1.96.
y se dice:
“al 5% de significación, rechazamos la nula de que el parámetro es cero en la población’’.
Esto es equivalente a decir: “al 5% de significación, las medias poblacionales son distintas’’.
Que, en el fondo, es lo mismo que decir que “el tratamiento tiene efecto en la población”.
Puede ver este vídeo para aclarar ideas:
Como ya sabrá, la elección del 5% de significación es arbitraria y uno podría preguntarse a qué niveles de significación rechazaría y a cuáles no, la hipótesis nula. Para eso, se puede utilizar el p-valor. ¿Qué es el p-valor? Habrá visto en el vídeo varias cosas:
- Tiene una definción rigurosa, que no es fácil explicar con palabras llanas: es la probabilidad de encontrar una muestra con las mismas características que la que tengo pero que, asumiendo cierta la hipótesis nula, obtenga un resultado más extremo al que he obtenido. En nuestro caso \[ P\left(\hat{\beta}<-0.065|\beta=0\right)\cup P\left(\hat{\beta}>0.065|\beta=0\right) \] dese cuenta de que estamos trabajando con una hipótesis alternativa bilateral, por lo que tenemos que mirar las dos colas de la distribución.
- ¿ Cómo calculo esta probabilidad? Sabemos que \[ \frac{\hat{\beta}-\beta^{*}}{dt\left(\hat{\beta}\right)}\sim N(0,1) \] e imponemos que \(\beta^{*}=0\), entonces, dada la simetría de la distribución, calculo una de ellas y luego la multiplico por 2: \[ P\left(\frac{\hat{\beta}-0}{dt\left(\hat{\beta}\right)}>\frac{0.065-0}{0.0062}\right)=P\left(N(0,1)>10.4\right)\approx 0 \] Por lo que el p-valor de este contraste será:
\[ p-valor=2\times 0=0 \] puedes verificar que es el mismo resultado que tenemos en la tabla de R.
\[\\[0.15in]\]
- Se suele comparar este resultado (el p-valor) con los niveles de significación (generalmente, sin tener muy claro por qué, el 5%) y se decide si se rechaza o no la hipótesis.
Ahora bien, ahora que ya sabes de dónde se obtiene y, por tanto, de qué depende, puedes criticarlo. El primer mensaje importante:
OJO:
Con un tamaño muestral suficientemente grande, será muy fácil decir que “el efecto de una variable es muy significativo”. Esto es pseudociencia. Y lo vamos a razonar a continuación.
Trabajando con los datos de “Paradoja”, pensamos lo siguiente:
“la base de datos incluye la variable grupo social, ¿cómo puede afectar a mis mediciones?”
No hay una respuesta obvia y única. Aunque debemos pensar sobre ello de una manera lógica.
PENSANDO:
Estamos interesados en medir el impacto del tamaño del aula sobre la nota. Es una pregunta de relación causal, puesto que el tamaño del aula es una variable que puede controlar el centro educativo. Ahora bien, parece sensato pensar que “en clases sociales altas, será más probable encontrar aulas más pequeñas y, quizás, mejores resultados porque los alumnos tengan acceso a clases particulares y mejores recursos (puede ver este vídeo, aunque no se lo tome muy”en serio” ). También es probable que la clase social sea un factor que ayude a explicar la nota de los alumnos. Cuando, recuerde, una variable potencialmente puede afectar a la causa y al efecto, se denomina “confusora”.
Es conveniente, entonces, que una vez haya identifado los potenciales confusores (lo cual lleva tiempo y razonamiento, no se hace de manera automática), deberá analizar visualmente si tiene motivos para sospechar. En este caso, haciendo un gráfico por grupo social, se puede observar:
if (require("ggplot2")) {
ggplot(Paradoja, aes(x = Tamaño, y = Nota)) +
geom_point(aes(color =Paradoja$Grupo)) +
geom_smooth(aes(color = Paradoja$Grupo), method = "lm") +
geom_smooth(method = "lm")+xlab("class size")+ylab("grade")
}
¿Qué podemos hacer? Veremos las diferentes opciones
- Si consideramos que la pendiente asociada a la variable “class size” sobre grade es igual para cada grupo, deberemos entonces introducir la variable “Grupo Social”, de tal forma que- al permitir que la constante varíe- estime de manera adecuada el signo de esta (que es negativo, no positivo como se vio en la clase anterior)
modelo_malo<-lm(Nota~Tamaño, data=Paradoja)
Residuals:
Min 1Q Median 3Q Max
-4.3521 -1.0479 0.0462 1.0450 4.9072
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.107071 0.153209 33.33 <2e-16 ***
Tamaño 0.064993 0.006228 10.44 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.578 on 483 degrees of freedom
Multiple R-squared: 0.184, Adjusted R-squared: 0.1823
F-statistic: 108.9 on 1 and 483 DF, p-value: < 2.2e-16
modelo_menos_malo<-lm(Nota~Tamaño+Grupo, data=Paradoja)
Residuals:
Min 1Q Median 3Q Max
-1.87819 -0.42285 -0.01418 0.40712 2.19503
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.223364 0.080742 64.69 <2e-16 ***
Tamaño -0.105777 0.004431 -23.88 <2e-16 ***
GrupoG_2 1.749241 0.100341 17.43 <2e-16 ***
GrupoG_3 3.497962 0.111456 31.38 <2e-16 ***
GrupoG_4 5.238404 0.129563 40.43 <2e-16 ***
GrupoG_5 6.978846 0.151903 45.94 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6597 on 479 degrees of freedom
Multiple R-squared: 0.8585, Adjusted R-squared: 0.857
F-statistic: 581.1 on 5 and 479 DF, p-value: < 2.2e-16
Como ve, en el modelo “malo”, el efecto estimado es positivo. La ecuación de regresión la escribiría así
\[ Nota_i=5.10+0.065\times Tamaño_i+\hat{u}_i \]
que indica que, por cada alumno adicional en un aula, la nota se incrementa en 0.065 puntos.
El modelo “menos malo” nos proporciona un efecto en dirección contraria:
\[ Nota_i=5.22-0.106\times Tamaño_i+1.75\times Grupo2_i+3.5\times Grupo3_i+5.23\times Grupo4_i+7\times Grupo5_i+\hat{u}_i \]
Nos detenemos en lo que hemos obtenido, porque tiene que ser capaz de interpretarlo adecuadamente
- El efecto del tamaño del aula sobre la nota ahora es negativo. Por cada aulumno adicional-independientemente del grupo social- la nota se reduce en 0.10 puntos.
- La clase social modifica la constante (“intercepto”) del modelo, que es la “nota base”, esto es, de dónde parte la recta cuando el tamaño del aula es 0 (recuuerde, esto es un concepto “geométrico”: por ahí podría pasar la recta, pero puede que no tenga datos en la muestra que avalen que por ahí tenga que pasar). Entonces,
Como verá, se omite uno de los grupos sociales (da igual cuál, [R] omite el primero) ya que la información del grupo omitido está contenida en la constante.
Podría ocurrir-aunque este no parece el caso- que la pendiente fuera distinta por grupo. Entonces, tiene dos maneras de afrontar el problema de estimación
FORMA 1
Estime modelos para cada grupo social por separado. Para ello, puede hacer “submuestras”
#Creo las diferentes submuestras y separo por cada grupo social
subGRUPO1<-subset(Paradoja, Grupo=="G_1")
subGRUPO2<-subset(Paradoja, Grupo=="G_2")
subGRUPO3<-subset(Paradoja, Grupo=="G_3")
subGRUPO4<-subset(Paradoja, Grupo=="G_4")
subGRUPO5<-subset(Paradoja, Grupo=="G_5")
modelo_1<-lm(Nota~Tamaño, data=subGRUPO1)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.19541 0.12247 42.423 < 2e-16 ***
Tamaño -0.10253 0.01162 -8.821 1.36e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6532 on 84 degrees of freedom
Multiple R-squared: 0.4809, Adjusted R-squared: 0.4747
F-statistic: 77.82 on 1 and 84 DF, p-value: 1.359e-13
modelo_2<-lm(Nota~Tamaño, data=subGRUPO2)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.941968 0.155857 44.54 <2e-16 ***
Tamaño -0.103620 0.009924 -10.44 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6629 on 97 degrees of freedom
Multiple R-squared: 0.5292, Adjusted R-squared: 0.5243
F-statistic: 109 on 1 and 97 DF, p-value: < 2.2e-16
modelo_3<-lm(Nota~Tamaño, data=subGRUPO3)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.750000 0.211183 41.43 <2e-16 ***
Tamaño -0.107143 0.009545 -11.22 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6648 on 98 degrees of freedom
Multiple R-squared: 0.5625, Adjusted R-squared: 0.558
F-statistic: 126 on 1 and 98 DF, p-value: < 2.2e-16
modelo_4<-lm(Nota~Tamaño, data=subGRUPO4)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 10.500000 0.275406 38.13 <2e-16 ***
Tamaño -0.107143 0.009545 -11.22 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6648 on 98 degrees of freedom
Multiple R-squared: 0.5625, Adjusted R-squared: 0.558
F-statistic: 126 on 1 and 98 DF, p-value: < 2.2e-16
modelo_5<-lm(Nota~Tamaño, data=subGRUPO5)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.250000 0.340627 35.96 <2e-16 ***
Tamaño -0.107143 0.009545 -11.22 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6648 on 98 degrees of freedom
Multiple R-squared: 0.5625, Adjusted R-squared: 0.558
F-statistic: 126 on 1 and 98 DF, p-value: < 2.2e-16
Como verá, se parecen mucho las estimaciones a las obtenidas previamente. Aquí ya podríamos convencernos de que la pendiente es muy parecida por cada grupo (aproximadamente, -0.10) y que la constante cambia bastante por grupo.
FORMA 2
Otra manera es mediante la inclusión de “interacciones”. Las interacciones están muy presentes en los modelos e iremos acostumbrándonos a ellas. En un modeolo de regresión, una interacción se indica con un “producto”. Por ejemplo:
\[ Nota_i=\beta_0 +\beta_1\times Tamaño_i+\beta_2\times Grupo2_i+\beta_3\times Grupo2_i\times Tamaño_i+\hat{u}_i \]
En esta simplificación de nuestro modelo, \(\beta_1\) indica el efecto del tamaño del aula sobre la nota en el Grupo 1. Por otro lado, \(\beta_1+\beta_3\) indica el efecto del tamaño del aula sobre la jnota en el Grupo 2. Es decir, \(\beta_3\) es la diferencia en las pendientes entre el Grupo 1 y el Grupo 2. En [R] la interacción se estima incluyendo un asterico:
Modelo_interact<-lm(Nota~Tamaño*Grupo,data=Paradoja)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.195407 0.124186 41.836 <2e-16 ***
Tamaño -0.102534 0.011787 -8.699 <2e-16 ***
GrupoG_2 1.746561 0.199191 8.768 <2e-16 ***
GrupoG_3 3.554593 0.244326 14.549 <2e-16 ***
GrupoG_4 5.304593 0.301193 17.612 <2e-16 ***
GrupoG_5 7.054593 0.361389 19.521 <2e-16 ***
Tamaño:GrupoG_2 -0.001086 0.015403 -0.070 0.944
Tamaño:GrupoG_3 -0.004609 0.015145 -0.304 0.761
Tamaño:GrupoG_4 -0.004609 0.015145 -0.304 0.761
Tamaño:GrupoG_5 -0.004609 0.015145 -0.304 0.761
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6624 on 475 degrees of freedom
Multiple R-squared: 0.8585, Adjusted R-squared: 0.8558
F-statistic: 320.3 on 9 and 475 DF, p-value: < 2.2e-16
Donde “Tamaño:Grupoi” indica la diferencia en el efecto del tamaño sobre la nota para cada grupo con respecto al grupo 1. En este caso, esas diferencias son prácticamente 0, por lo que no tiene sentido incluir una interacción.
Muchas veces, la variable que estamos intentando explicar o predecir (el target) es cualitativa y toma dos posibles valores (0,1). Por ejemplo,
- Ser admitido/a en un máster (1=admisión, 0=no admisión)
- Tener una enfermedad o no (1=tener la enfermedad, 0=no tener la enfermedad)
- Conseguir unas prácticas o no, etc…
Además, podemos tener un conjunto de variables explicativas. La nota en el grado, el nivel de azúcar en sangre, la clase social, etc…
Vamos a imaginarnos una base de datos “ficticia”
Como vemos, en la FIG1, al ser la variable “dependiente” o “target” dicotómica, los datos no recorrerán todo el eje de ordenadas, sino que colapsarán en el valor “0” o en el “1”. Entonces, no tiene mucho sentido el utilizar las técnicas de regresión vistas hasta ahora. De hecho, si tratamos de ajustar una recta que pase por los puntos, nos encontraremos que esa recta, si \(x<2\) proporciona valores negativos para el eje \(y\) y, al contrario, si \(x>13\) proporciona valores mayores que 1 en el eje \(y\), lo cual es ilógico.
Una primera idea sería “truncar” la recta.
Esto ya cumple lo que buscamos. Sin embargo, esto no se puede hacer a mano (¿se imagina hacerlo para un modelo con muchas variables?) Hay que buscar alguna función matemática que tenga buenas propiedades y que se comporte de manera análoga a la FIG2. Esa función existe y se llama “logística”. Pertenece a la familia de las “sigmoideas” porque es una función que tiene forma de “s”. ¿Qué pinta tiene? Lo primero que haremos será escribir la función:
\[ y=\frac{1}{1+e^{-x}} \]
Hagamos la cuenta para diferentes valores de \(x\):
Esta función tiene algo interesante:
- Como su imagen (la \(y\)) está acotada entre 0 y 1 el resultado puede interpretarse como una probabilidad
- Vamos a ver que la función tiene un comportamiento “no lineal”, que implica que el cambio en la probabilidad se hace más fuerte hacia el valor central de la variabl \(x\).
Para ello, usaremos [R]
Vamos a dibujar la función logística
\[ y=\frac{1}{1+e^{-(1+0.25x)}} \]
x<-seq(-15,15,0.1)
y<-1/(1+exp(-(1+0.25*x)))
plot(x,y)
Bien, ahora vamos a aterrizarlo a un modelo: se le suele llamar “modelo logit”
Como ves, ahora el modelo nos va a devolver la probabilidad de que la variable \(y\) tome valor 1 (por ejemplo, conseguir un trabajo, ponerse enfermo, aprobar, etc…) condicionada por el valor de distintas variables explicativas consideradas (renta, edad, etc…) que pueden ser continuas o discretas (cualitativas). Importante:
- Ahora, los parámetros del modelo \(\beta_0,\beta_1,...\) no se pueden interpretar como los de una regresión lineal. Esto no es una regresión lineal, es no lineal
- La única interpretación que puedes darle es “peso sobre la probabilidad de que la \(y\) tome valor 1”
- No por tener un coeficiente mayor, el peso será mayor, pues dependerá de las unidades de medida de cada variable \(x\) considerada.
Veamos un caso práctico. Queremos predecir la probabilidad de que un individuo no pague un crédito y utilizaremos como predictoras el saldo en la cuenta corriente y si es estudiante o no. Antes de nada, recuerde: ANÁLISIS DESCRIPTIVO
library(ISLR2)
p1 <- Default %>%
ggplot(aes(balance, default, fill = student)) +
geom_boxplot(alpha = 0.8) +
scale_fill_brewer(palette = "Dark2") +
labs(title = "Distribution de impago",
subtitle = "por cuenta corriente y estado académico",
caption = "Datos del paquete ISLR")
p1
Como vemos, en estos datos:
- los individuos con mayor gasto en la tarjeta son los que tienen más impagos…
- … pero dentro, a su vez, dentro de los que no pagan tienen menor gasto los “no estudiantes”. Dentro de los que pagan, también.
Entonces, podría tener sentido analizar el impacto de ser estudiante o no, sobre pagar el crédito y -posiblemente- entender que los estudiantes de esta muestra suelen gastar más en la tarjeta (posible confusor)
Así se indica en [R]:
de tal forma
que se obtiene
logit1<- glm(default ~student+balance, data = Default, family = binomial)
Call:
glm(formula = default ~ student + balance, family = binomial, data = Default)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.075e+01 3.692e-01 -29.116 < 2e-16 ***
studentYes -7.149e-01 1.475e-01 -4.846 1.26e-06 ***
balance 5.738e-03 2.318e-04 24.750 < 2e-16 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Como vemos, se estudiante reduce la probabilidad de default (peso negativo) y el saldo aumenta la probabilidad (peso positivo) como ve, no interpretamos numéricamente el peso de ninguna manera.
Este modelo no vamos a discutirlo más allá de lo que aquí aparece, puesto que no es nuestro objetivo: es ilustrativo, nada más. Aunque podría ser interesante ver si aquí hay alguna variable confusora: ¿Por qué la gente que gasta más en la tarjeta presenta más impagos? ¿Clase social, por ejemplo, educación financiera?
Finalmente, si queremos hacer una predicción, por ejemplo, de la probabilidad de que un estudiante con 1000 euros de saldo sea impago, podemos usar la función “predict”
newData<-data.frame(student="Yes",balance=1000) #creamos los datos del individuo que nos interesa
prediccion<-predict(logit1,newData,type="response") #usamos la función predict
Donde “prediccion” es prácticamente 0.
Nota con Pablo veréis más sobre la logística y sobre otra técnica para este tipo de variables “target” o para variables “target” con más de dos clases: los árboles de clasificación.
Pregunta abierta ¿utilizaría el p-valor para decidir qué variables quedarse? ¡¡¡NOOOOO!!!!
Quizás quiera ver estos dos vídeos:
De hecho, la idea que se propone aquí, podemos utilzarla nosotros.
El siguiente modelo explora la relación entre la nota y el tamaño del aula y el estatus social. En este caso, las variables interactúan, es decir, tenemos este modelo
\[ Nota_i=\beta_0+\beta_1\times Tamaño_i+\beta_2\times Status_i+\beta_3\times Tamaño_i\times Status_i +u_i \]
La interpretación de los modelos con iteracción se puede complicar. Es por ello, que podemos hacer una tabla. De manera arbitraria decidimos hacer escenarios para aulas entre 10 y 30 alumnos de cinco en cinco. Además, elegimos 5 valores (quintiles) para el status social. Usamos la función predict para obtener el valor esperado de la nota para un alumno que cumple esas condiciones
mod_lm3<-(lm(grade~size*status,data=SPAIN))
status_very_low<-data.frame(size=seq(10,30,5),status=-2.2)
status_low<-data.frame(size=seq(10,30,5),status=-1.5)
status_med<-data.frame(size=seq(10,30,5),status=0)
status_high<-data.frame(size=seq(10,30,5),status=1.5)
status_very_high<-data.frame(size=seq(10,30,5),status=2)
pVL<-predict(mod_lm3,status_very_low)
pL<-predict(mod_lm3,status_low)
pM<-predict(mod_lm3,status_med)
pH<-predict(mod_lm3,status_high)
pVH<-predict(mod_lm3,status_very_high)
data_frame_predict<-data.frame(pVL,pL,pM,pH,pVH)
DM<-data.matrix(data_frame_predict)
class_size<-data.frame(rbind(10,15,20,25,30))
install.packages('pheatmap') # if not installed already
library(pheatmap)
# Then run your pheatmap function
pheatmap(DM, display_numbers = TRUE, cluster_rows = 0, cluster_columns = 0, fontsize_number = 25, fontsize_col = 20, fontsize_row = 20, labels_row = c("15", "20", "25", "30", "35"), labels_col = c("vL", "L","M", "H", "vH"), legend = FALSE)
Usaremos el p-valor? Mira de nuevo los vídeos. Esto es mucho más interesante. Para empezar, parece que la OCDE dice que una diferencia de 30 puntos en PISA es lo equivalente a llevar un curso de retraso. Y eso es una medida interesante de “relevancia”. Eso es lo relevante para tu cliente, no un p-valor.
En este caso, si muramos por grupos sociales (columna) ¿hay algún grupo en el que pasar de un tamaño a otro implique 30 puntos? PUES NO. Por lo que el tamaño del aula no parece relevante bajo este modelo. Sin embargo, fíjese: una clase pequeña de un status social “verylow” frente a una clase grande de un status social “High” se llevan más de 140 puntos de diferencia.¿ Es el status social un factor relevante? En este modelo, sí lo parece.
Pero hay más formas de indagar sobre la relevancia de variables. Lo vemos en la clase siguiente
Un paso importante en el proceso de análisis de datos es buscar alguna manera imparcial de analizar el desempeño de un modelo (tanto sobre qué variables tienen mayor contenido informativo, como qué posible modelo predice mejor). En general, no es sensato utilizar magnitudes que analizan el grado de ajuste de un modelo (\(R^2\), ECM, etc…) ya que cuanto mayor sea el conjunto de variables utilizado en un modelo, mayor será el grado de ajuste (y menor su ECM): es decir, podemos estar cayendo en sobreajustar un modelo: asumiendo error como si fuera señal, que suele decirse. Sin embargo, ello no quiere decir que el modelo sea más útil para realizar una predicción.
Una técnica sencilla para analizar cómo se desenvuelve un modelo es la partición entre entrenamiento y test. Generalmente, se elige una proporción alta para el entrenamiento (en torno al 70%) y el resto se dedica a test:
Esta elección se realiza de manera aleatoria de tal forma que la partición realizada nos permita analizar, de manera adecuada, la población de estudio tanto en el entrenamiento de modelos como en su testado. El modo de trabajo es sencillo:
- Esta técnica podría utilizarla como un complemento a la inferencia estadística tradicional. Si considera que una variable es significativa (o relevante), entonces mediante este análisis, debería proporcionarle un error predictivo menor, al incluirla en el modelo, que en el caso en que esta variable no esté.
- Esta técnica le puede ayudar a elegir modelos (si tiene varios modelos candidatos y quiere quedarse con uno de ellos, puede elegir el que menor error le proporcione en la validación)
- Sin embargo, esta técnica está muy condicionada por la elección del entrenamiento y la validación.
Una manera de mejorar el último aspecto de la técnica anterior, consistirá en tener más información sobre el error de predicción. Para ello, se puede hacer un muestreo tanto de los datos que se destinarán a entrenamiento como aquellos que se utilizarán para validación. La idea de la validación cruzada es hacer “un montón de veces” la partición entre entrenamiento y validación utilizando para ello extracciones aleatorias (sin reemplazamiento) de las muestras. Visualmente, consiste en el esquema de la FIG2:
Como se puede ver, consiste en replicar la estructura anterior pero ahora se hará \(K\) veces, particionando la muestra entre entrenamiento y validación. Ello nos permitirá tener \(K\) observaciones de la medida de error que le interese y, por tanto, tener una distribución dicha medida del error de predicción. Esto es ventajoso, pues nos permite comparar entre modelos de una manera más objetiva, puesto que las particiones aleatorias permiten ver cómo funciona el modelo en submuestras distintas. Para entender el algoritmo de validación cruzada, tiene aquí un ejemplo en el que se quiere discutir qué modelo es mejor en el caso de PISA aplicado a España.
Primera idea Analicemos si el tamaño del aula es relevante en este modelo sencillo. Para ello, entrenaremos los siguientes modelos
- M1. Regresión de la nota frente al status
- M2. Regresión de la nota frente al tamaño del aula y el status
- M3. Regresión de la nota frente al tamaño del aula y el status interactuando
N<-1000 #elijo el número de particiones training-test que haré
error1<-0 #creo las variables que almacenarán el error
error2<-0
error3<-0
for(i in 1:N){ #Inicio el bucle
sample <- sample.int(n = nrow(SPAIN),size = floor(.7*nrow(SPAIN)), replace = F) #me da el sorteo de filas aleatorias
train <- SPAIN[sample, ] #Obtengo la muestra de entrenamiento
test <- SPAIN[-sample, ] #y la muestra de validación
#entreno los modelos con las mismas muestras train
M1<-lm(grade ~ status, data=train)
M2<-lm(grade ~size+ status, data=train)
M3<-lm(grade ~size* status, data=train)
#Hago las predicciones con las mismas muestras test
predict1<-predict(M1,test)
predict2<-predict(M2,test)
predict3<-predict(M3,test)
#almaceno las predicciones
DF<-data.frame(predict1,predict2,predict3,test$grade)
DF<-na.omit(DF)
error1[i]<-mean(abs(DF$predict1-DF$test.grade)/DF$test.grade) #Creo un vector para almacenar errores para el modelo 1
error2[i]<-mean(abs(DF$predict2-DF$test.grade)/DF$test.grade) #Creo un vector para almacenar errores para el modelo 1
error3[i]<-mean(abs(DF$predict3-DF$test.grade)/DF$test.grade) #Creo un vector para almacenar errores para el modelo 1
}
ERRORES<-data.frame(error1, error2,error3)
hist(ERRORES$error1, xlim = c(0.12, 0.15), col = rgb(0, 0, 1, alpha = 0.5), border = FALSE, main = "Errores modelo")
hist(ERRORES$error2, add = TRUE, col = rgb(1, 0, 0, alpha = 0.5), border = FALSE)
hist(ERRORES$error3, add = TRUE, col = rgb(1, 0.647, 0, alpha = 0.25), border = FALSE)
legend("topright", legend = c("Estatus", "Estatus+Size", "Estatus*Size"), fill = c(rgb(0, 0, 1, alpha = 0.5), rgb(1, 0, 0, alpha = 0.5), rgb(1, 0.647, 0, alpha = 0.5)))
Ejercicio Analice los errores cometidos
¿Cree que el tamaño del aula es relevante para predecir la nota pese al p-valor obtenido en la regresión?
MIRE EL P-VALOR
summary(lm(grade ~size* status, data=SPAIN))
Call:
lm(formula = grade ~ size * status, data = SPAIN)
Residuals:
Min 1Q Median 3Q Max
-321.59 -52.32 1.65 54.02 298.89
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 484.2966 2.5473 190.123 < 2e-16 ***
size 0.9144 0.1120 8.163 3.66e-16 ***
status 27.2475 2.4900 10.943 < 2e-16 ***
size:status 0.1298 0.1111 1.169 0.242
A lo largo de esta práctica, vamos a ir puliendo los detalles más importantes que hemos ido aprendido durante estas sesiones.
Este ejercicio está basado en el artículo “To explain or to predict?” de Galit Shmueli. Lo tienes en el apartado “Lecturas Cool” de la Intranet. Es aconsejable leerlo con atención. Pero, en este caso, debes leer con atención la Sección 3 para poder comentarla en clase.
Nota En este link, puedes acceder a los datos del concurso de Netflix https://www.kaggle.com/datasets/netflix-inc/netflix-prize-data?resource=download
En los datos de PISA de tu país, analiza la relación entre la nota en matemáticas, la nota en lectura y la nota en ciencias. ¿Se podría tratar de analizar el impacto que tiene la nota en Lectura y en Ciencias respecto a la nota en Matemáticas?
Construye una nueva variable que tome valor 1 si el individuo ha obtenido una nota inferior al primer cuartil de su país. Estamos interesados en analizar el impacto que tiene la clase social, la ciudad de origen, la titularidad del centro (público/privado), la estructura familiar, y el género del invididuo sobre la probabilidad de que obtenga una nota inferior al primer cuartil de su país. Indique, antes de realiar el estudio con sumo detalle:
Los resultados de este modelo se van a utilizar para tomar decisiones sobre ubicar un nuevo centro escolar en una ciudad pequeña en un barrio de clase baja. El coste del fracaso escolar es alto. Las autoridades estiman que, por cada alumno que no son capaces de detectar con anticipación su riesgo de bajo rendimiento escolar, el gasto que supone derivarlo a otro centro es de 5000€. ¿Cómo seleccionaría el modelo que permita tener costes menores?
A veces es más arriesgado cometer un falso negativo, es decir, predecir que alguien tiene un bajo riesgo cuando en realidad tienen un alto riesgo, ya que esto impedirá que reciban atención/cuidado/citas. Pero en otros casos, los falsos positivos presentan un riesgo más alto. Por ejemplo, en enfermedades de la próstata, los falsos positivos en una prueba de detección significan que el paciente recibirá una prueba más invasiva y arriesgada (y costosa) que luego mostrará que son verdaderos negativos. Sin embargo, la enfermedad de la próstata suele progresar muy lentamente, por lo que en realidad sería más seguro para los pacientes en general tener más falsos negativos (es decir, dejar pasar a algunos pacientes que en realidad tienen la enfermedad de la próstata) que someter a pruebas invasivas (y costosas) a más pacientes. Cuando algo avanza muy lentamente, hay oportunidades para detectarlo más tarde cuando esté un poco peor y sea más fácil de detectar. Sin embargo, el cáncer de ovario avanza muy, muy rápido; si obtienes un falso negativo en una prueba de detección, existe una alta probabilidad de que el paciente muera porque se propaga tan rápidamente que es probable que no se realice otra prueba de ningún tipo antes de que sea demasiado tarde para detenerlo, por lo que es mucho mejor tener pruebas de detección con más falsos positivos.
En otras palabras, a veces la reducción global del riesgo favorece las pruebas/predicciones con más falsos negativos, y otras veces favorece las pruebas/predicciones con más falsos positivos. Pero en general, en el ámbito de la atención médica, más del 90 por ciento del tiempo es más seguro sobreestimar el riesgo para que el paciente tenga más probabilidades de recibir atención/cuidado que subestimar el riesgo, por lo que los profesionales de la salud a menudo ajustan los modelos para aumentar el riesgo en lugar de reducirlo.
Esto se puede aplicar a cualquier contexto (pero da la impresión de que en términos de salud lo entendemos enseguida). Piense, por ejemplo, en una campaña de Marketing de la conocida “venta cruzada”. Usted está en su compañía telefónica y quieren ofrecerle otro servicio. ¿Qué será peor, un falso positivo o un falso negativo?
Piense en términos de: coste de publicidad, coste de centralita para ofrecer el producto, etc…