Este es el primero de varios posts que más que contenido propio es simplemente comentar lo leído en el blog de Richard McElreath, y en particular los 3 posts que me abrieron la mente sobre la inferencia causal.
En el primero cuenta sobre lo que denomina “Causal Salad”, que no es más que la equivocada costumbre de meter en un modelo todas las variables que se te ocurren y el error de interpretar los coeficientes(en caso de que sea lineal) como efectos causales. Las revistas científicas están llenas de esta perjudicial ensalada.
En el segundo explica cómo si pensamos en el modelo causal, ya sea utilizando un DAG, o en otras formas se ha de razonar para a partir de ahí encontrar la forma de contestar a la pregunta de ¿Cuál es el efecto “causal” de X en Y?
En el tercero, explica como utilizando modelos bayesianos podemos ajustar un DAG completo, y utilizar ese modelo ajustado para responder diferentes cuestiones causales, haciendo simulaciones. En este último post es cuando utiliza el término “full luxury bayes”. También explica la diferencia entre tener un modelo para cada pregunta causal (a lo Pearl), y tener todo el DAG estimado , así como ambas perspectivas pueden combinarse. De hecho, se puede utilizar el enfoque de Pearl para detectar sobre qué variables no hay que “condicionar” y la perspectiva de full luxury para poder hacer cosas que el enfoque de Pearl no llega, tales como condicionar por un collider
Ensalada causal
En los posts parte de una muestra hipótetica de pares de madres e hijas, y se trata de estudiar si el número de hijos de la madre influye en el número de hijos de la hija. Y considera que hay variables de confusión no medidas, tales como entorno social común, cultura del país, etcétera. Otra variable que se cree que puede influir en el número de hijos tanto de la madre como de la hija es el orden de nacimiento ( si fueron primogénitas o no).
Para ilustrar la situación simula unos datos, pego su código Si no os gustan las asunciones, cambiad la simulación y los efectos y punto.
Show the code
set.seed(1908)N <-200# number of pairsU <-rnorm(N) # simulate confounds# birth order and family sizesB1 <-rbinom(N, size=1, prob=0.5) # 50% first bornsM <-rnorm( N , 2*B1 + U )B2 <-rbinom(N,size=1,prob=0.5)D <-rnorm( N , 2*B2 + U +0*M ) # change the 0 to turn on causal influence of mom
En estos datos simulados ha supuesto que hay una variable de confusión no observada, y que afecta por igual manera (coeficiente 1) tanto al número de hijos de la madre como de la hija. Ha simulado también que la mitad de las madres y de las hijas son primogénitas. Ha considerado que ser primogénita afecta de igual manera(coeficiente 2) al número de hijos de madres e hijas.
Y por último ha puesto que el efecto del número de hijos de la madre (M) sobre el número de hijos de la hija(D) es 0.
Es decir, al simular los datos sabemos cuál es el verdadero efecto causal , que en este caso es nulo. Esto va a permitir que podamos comparar si la técnica o técnicas propuestas son adecuadas.
Ojo
Ciencia antes que estadística. En este caso sabemos cuál es la verdad y la relación entre las variables. En la vida real tendremos que crear hipótesis y modelos “causales” de cómo se relacionan las variables, y podrían ser erróneos
Lo primero que se nos ocurre para estimar el efecto de M sobre D, sería tan sencillo como una regresión simple.
Show the code
mod_simple <-lm(D ~ M)summary(mod_simple)#> #> Call:#> lm(formula = D ~ M)#> #> Residuals:#> Min 1Q Median 3Q Max #> -3.9714 -0.9486 -0.0337 1.1119 4.0630 #> #> Coefficients:#> Estimate Std. Error t value Pr(>|t|) #> (Intercept) 0.7128 0.1244 5.729 3.71e-08 ***#> M 0.2596 0.0619 4.194 4.12e-05 ***#> ---#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1#> #> Residual standard error: 1.522 on 198 degrees of freedom#> Multiple R-squared: 0.08161, Adjusted R-squared: 0.07697 #> F-statistic: 17.59 on 1 and 198 DF, p-value: 4.124e-05
Y vemos que el coeficiente estimado está muy lejos de la verdad. En este caso se ha estimado como positivo y con un error estándard bastante pequeño.
¿Por qué se ha alejado tanto? Pues por la asociación que induce la variable U tanto en M como D, de hecho para poder estimar el efecto correcto habría que condicionar por U, es decir, en este caso incluir U en el modelo. Pero U es una variable que no tenemos medida y por tanto no podemos usarla.
En este momento es cuando alguien dice - ey, pues metamos todas las variables que tenemos medidas en el modelo, eso debería ayudar, ya sabéis, todo el rollo del ceteris paribus y demás- . Pues venga, vamos a hacer la ensalada causal
Y usamos todas las variables observadas en nuestro modelo de regresión lineal superchachi
Show the code
mod_salad <-lm(D ~ M + B1 + B2)summary(mod_salad)#> #> Call:#> lm(formula = D ~ M + B1 + B2)#> #> Residuals:#> Min 1Q Median 3Q Max #> -3.2102 -0.8440 0.1087 0.8454 2.9353 #> #> Coefficients:#> Estimate Std. Error t value Pr(>|t|) #> (Intercept) -0.03980 0.15280 -0.260 0.7948 #> M 0.39468 0.06326 6.239 2.67e-09 ***#> B1 -0.52544 0.22049 -2.383 0.0181 * #> B2 1.80475 0.17101 10.553 < 2e-16 ***#> ---#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1#> #> Residual standard error: 1.203 on 196 degrees of freedom#> Multiple R-squared: 0.4321, Adjusted R-squared: 0.4234 #> F-statistic: 49.71 on 3 and 196 DF, p-value: < 2.2e-16
Oh vaya, no sólo no nos acercamos al verdadero valor del coeficiente buscado, sino que ha habido una amplificación del sesgo.
Pero, ¿acaso al incluir más variables no hemos mejorado la forma en que modelamos D?. Pues en principio si, tanto viendo los Adjusted R-squared como los AIC , el modelo con más variables predice mejor D. Pero esto es lo que pasa, porque el añadir más variables se está teniendo en cuenta la asociación estadística entre las variables, pero la asociación estadística es muy diferente de la pregunta que nos estamos haciendo. Si nuestro objetivo es hacer buenas predicciones, la “ensalada causal” puede ser útil, pero si el objetivo es entender cómo afecta el número de hijos de la madre sobre el número de hijos de su hija, se está antes un problema muy distinto.
El problema de la aproximación como “ensalada causal” es que se ha usado y se sigue usando en muchos estudios, de econometría, de sociología, etcétera, dónde el objetivo no era predecir mejor una variable, sino entender como afecta el cambio de una variable sobre otra.
Para intentar (y ojo que digo intentar) estimar el efecto causal correctamente hay que pensar de otra manera, hay que hacer hipótesis, plantear modelos causales etcétera. Las técnicas estadísticas en muchos casos serán las mismas, pero hay que usarlas de forma correcta. De hecho, la parte técnica es la sencilla, lo díficil es plantear el modelo causal y que sea correcto, y hay que dar triples saltos mortales haciendo asunciones que pueden no ser comprobables. Pero es lo que hay, no nos podemos quedar en la frase de “asociación no implica causalidad”