Continuando con la serie sobre cosas de inferencia causal y full luxury bayes, antes de que empiece mi amigo Carlos Gil, y dónde seguramente se aprenderá más.
Este ejemplo viene motivado precisamente por una charla que tuve el otro día con él.
Sea el siguiente diagrama causal
library(tidyverse) library(dagitty) library(ggdag) g <- dagitty("dag{ x -> y ; z -> y ; x -> z }") ggdag(g) Se tiene que z es un mediador entre x e y, y la teoría nos dice que si quiero obtener el efecto directo de x sobre y he de condicionar por z , y efectivamente, así nos lo dice el backdoor criterio.
Continuando con temas del post anterior. Dice Pearl, con buen criterio, que si condicionas por un collider abres ese camino causal y creas una relación espuria entre las dos variables “Tratamiento” y “Respuesta” y por lo tanto si condicionas por el collider, aparece un sesgo.
Hablando estilo compadre. Si Tratamiento -> Collider y Respuesta -> Collider, si condiciono en el Collider, es decir, calculo la relación entre Tratamiento y Respuesta para cada valor de C, se introduce un sesgo.
Ando viendo los vídeos de Richard McElreath , Statistical Rethinking 2022 y ciertamente me están gustando mucho. En la segunda edición de su libro hace hincapié en temas de inferencia causal. Cuenta bastante bien todo el tema de los “confounders”, “forks”, “colliders” y demás. Además lo hace simulando datos, por lo que entiende todo de forma muy sencilla. Un par de conceptos que me han llamado la atención son por ejemplo cuando dice que condicionar por una variable no significa lo mismo en un modelo de regresión al uso que en uno bayesiano, en el segundo caso significa incluir esa variable en la distribución conjunta.
Cómo aún ando medio “covitoso”, reciclo el código y comentarios de la entrada de 2021 y con solo cambiar la ruta del fichero de subtítulos ya nos vale todo el código.
El csv con el texto de los subtítulos para 2021 lo tenéis en este enlace.
Vamos al lío
library(tidyverse) root_directory = "/media/hd1/canadasreche@gmail.com/public/proyecto_cachitos/" anno <- "2021" Leemos el csv. Uso DT y así podéis ver todos los datos o buscar cosas, por ejemplo Ayuso o pandemia , monarquía o podemos
Nada, esto es sólo para leernos con R los subtítulos del post anterior.
library(tidyverse) root_directory = "/media/hd1/canadasreche@gmail.com/public/proyecto_cachitos/" anno <- "2021" # Construims un data frame con los nombrs de los ficheros nombre_ficheros <- list.files(path = str_glue("{root_directory}{anno}_txt/")) %>% enframe() %>% rename(n_fichero = value) nombre_ficheros ## # A tibble: 1,384 × 2 ## name n_fichero ## <int> <chr> ## 1 1 00000001.jpg.subtitulo.tif.txt ## 2 2 00000002.jpg.subtitulo.tif.txt ## 3 3 00000003.jpg.subtitulo.tif.txt ## 4 4 00000004.
Retomando la entrada de cachitos de la nochevieja de 2020
Actualizo el script para bajar el video de la nochevieja de este año, extraer los fotogramas y tener los subtítulos.
Este año parece (o yo no me he enterado) que ha habido menos polémica. Pero como siempre, nos hemos reído bastante.
Ejemplo:
Y el texto extraído con tesseract
El cámara se arrima, pero sin tocar.... NW, SN 4 como el PSOE con la monarquía.
Lo primero, feliz año a todos (no me da la gana de poner todas y todes), y espero que este año sea mejor que el pasado.
Hoy voy a hablar un poco de la “cocina” electoral en los barómetros de opinión, pero de forma muy simplificada.
Una de las primeras cosas que se hacía era comparar el recuerdo de voto declarado en la encuesta con el resultado real de las elecciones a las que hacía referencia.
A los que nos dedicamos a esto siempre echamos de menos un lme4 en python o en Spark. En Julia afortunadamente tenemos MixedModels.jl.
Total que buscando alguna posible solución para poder usar esto en spark me encuentro con dos posibles soluciones.
photon-ml MomentMixedModels Ambos repos llevan un tiempo sin actualizarse así que no sé yo.
photon-ml es de linkedin y tiene buena pinta, al menos el tutorial, que tienes que bajarte un docker y tal, funciona.
El Vol 100 del Journal Of Statistical Software promete, y mucho. Artículo del gran Virgilio y muchos más sobre software para estadística bayesiana. Virgilio, sólo falta que le eches un vistazo a las cositas que hay en Julia. Pues nada, ya tengo entretenimiento. Aquí os dejo el enlace
Cuando estamos haciendo un modelo y tratamos con variables categóricas como predictoras, hay que ser muy cuidadoso. Por ejemplo hay que tener en cuenta qué pasa cuándo tenemos un nuevo nivel en el conjunto de datos a predecir que no estaba en el de entrenamiento. Por ejemplo, si estoy utilizando un algoritmo moderno tipo xgboost, y tengo como variable predictora la provincia. ¿Qué pasa si en el conjunto de entrenamiento no tengo datos de “Granada”, pero en el de predicción si?