class: center, middle, inverse, title-slide .title[ # Introducción a la causalidad ] .subtitle[ ## Primera parte: ANOVA ] .date[ ### Daniel Miles-Touya GADE-Uvigo 2024-10-25 ] --- # AB Test >Impacto del color del font de un anuncio en el click through rate -- 2 Alternativas > Encuesta a usuarios > Experimento -- >> Ventajas de experimentar: >>>En un experimento, los investigadores pueden **manipular** las variables de interés y controlar otras variables que podrían afectar los resultados _variables de confusión_ (confounders). -- >>>En los experimentos, el **problema del contrafactual** se maneja principalmente mediante la aleatorización >>>>El contrafactual se refiere al escenario hipotético de lo que habría pasado si un individuo que recibió una intervención (tratamiento) no la hubiera recibido. -- >>>Una **variable de confusión** es una variable que afecta tanto la variable independiente (el tratamiento o la exposición) como la variable dependiente (el resultado), y que puede generar una falsa asociación entre ambas. --- ### Experimento Cuando el individuo entra en la web se le presenta un anuncio donde el color del font es elegido aleatoriamente. Se mide el click en el anuncio. El diseño tiene en cuenta el browser, hora en minutos, sistema operativo, región. Los resultados se presentan en agregado. -- A continuación se muestra una tabla que representa los resultados `\(Y_{ij}\)` para `\(i = 1\dots N\)` (individuos) y `\(j = 1\dots J\)` (mediciones). <table> <tr> <th>Observación (i)</th> <th>Alternativa A (\( j = 1 \))</th> <th>Altranativa B (\( j = 2 \))</th> </tr> <tr> <td>1</td> <td>\( Y_{11} \)</td> <td>\( Y_{12} \)</td> </tr> <tr> <td>2</td> <td>\( Y_{21} \)</td> <td>\( Y_{22} \)</td> </tr> <tr> <td>...</td> <td>...</td> <td>...</td> </tr> <tr> <td>\( N \)</td> <td>\( Y_{N1} \)</td> <td>\( Y_{N2} \)</td> </tr> <tr> <th>Media</th> <td>\( \overline{Y}_{1} \) = \( \frac{1}{N_1} \sum_{i=1}^{N_1} Y_{i1} \)</td> <td>\( \overline{Y}_{2} \) = \( \frac{1}{N_2} \sum_{i=1}^{N_2} Y_{i2} \)</td> </tr> </table> --- ### Resultados del experimento Aquí presentamos las 10 primeras respuestas del experimento ``` ## Data A Data B ## 0 0.014707 0.034664 ## 1 0.019117 0.035524 ## 2 0.032652 0.039507 ## 3 0.031351 0.043042 ## 4 0.017317 0.041342 ## 5 0.018840 0.032576 ## 6 0.019805 0.034329 ## 7 0.022402 0.039927 ## 8 0.021607 0.049216 ## 9 0.028301 0.032523 ``` --- ### Análisis de los resultados del experimento Análisis gráfico <img src="04_IntroductionCausality_files/figure-html/unnamed-chunk-2-1.png" width="75%" height="75%" /> >Por una parte se estiman los historgramas y la función de densidad. >Por otra parte se estiman las medias _muestrales_ de cada grupo >> El análisis gráfico es muy evidente --- ### Análisis de los resultados del experimento >Es posible complementar el análisis gráfico con otro tipo de resultado: <span style="color:tomato">análisis ANOVA</span> >>¿Qué observamos? `\(Y_{ij}\)` para `\(i=1,...,N_j\)` y `\(j= A,B\)` >>El <span style="color:tomato">análisis ANOVA</span> estudia qué porcentaje de la **variabilidad total** que se observa es **explicada por el tratamiento**. >>Por tanto, hay que descomponer la variabilidad total observada en los datos obtenidos del experimento. --- ### ANOVA >Construir la variabilidad total observada y descomponerla -- Fijarse que `\(Y_{ij}=Y_{ij}\)` por definición. Por ende, si sumamos y restamos las mismas cantidades nada cambia `$$Y_{ij} = Y_{ij} \leftrightarrow Y_{ij} = Y_{ij} + \overline{Y} - \overline{Y} +\overline{Y_j} - \overline{Y_j}$$` con `\(\,\,i=1,...,N_j,\,\,j= 1\,\,(A),2\,\, (B)\)`. -- `$$\overline{Y} = \frac{1}{N} \sum_{j=1}^{k} \sum_{i=1}^{n_j} Y_{ij} \\ \overline{Y_j} = \frac{1}{n_j} \sum_{i=1}^{n_j} Y_{ij}$$` - `\(N= n_A+n_B\)` es el número total de observaciones. - `\(k\)` es el número de tratamientos (en este caso, dos versiones: A y B). - `\(n_j\)` es el número de observaciones en el grupo `\(j\)`. - `\(Y_{ij}\)` es la observación `\(i\)` en el grupo `\(j\)`. --- ### ANOVA >Construir la variabilidad total observada y descomponerla Reordenando los términos de la igualdad anterior: `$$\left(Y_{ij} - \overline{Y}\right) = \left(\overline{Y_j} - \overline{Y}\right) + \left(Y_{ij} - \overline{Y_j} \right)$$` con `\(\,\,i=1,...,n_j,\,\,j= A,B\)`. -- Para calcular la variabilidad total (que no se cancelen las desviaciones positivas con las negativas) elevamos ambos lados de la ecuación al cuadrado: `$$(Y_{ij} - \bar{Y})^2 = (\bar{Y}_j - \bar{Y})^2 + (Y_{ij} - \bar{Y}_j)^2 + 2(Y_{ij} - \bar{Y}_j)(\bar{Y}_j - \bar{Y})$$` -- Ahora sumamos en el tratamiento, `\(j\)`, y en los individuos, `\(i\)`, para tener un indicador agregado (no individual) de la variabilidad total. Observar que hay que sumar en dos índices, `\(j\)` e `\(i\)` `$$\underbrace{\sum_{j=1}^{k} \sum_{i=1}^{n_j} (Y_{ij} - \bar{Y})^2}_{\text{SCT}} = \sum_{j=1}^{k} \sum_{i=1}^{n_j} \left\{ (\bar{Y}_j - \bar{Y})^2 + (Y_{ij} - \bar{Y}_j)^2 + 2(Y_{ij} - \bar{Y}_j)(\bar{Y}_j - \bar{Y}) \right\} \Leftrightarrow \\ \Leftrightarrow SCT = \underbrace{\sum_{j=1}^{k} \sum_{i=1}^{n_j} (\bar{Y}_j - \bar{Y})^2}_{\text{SCE}} + \underbrace{\sum_{j=1}^{k} \sum_{i=1}^{n_j} (Y_{ij} - \bar{Y}_j)^2}_{SCR}$$` porque `\(\sum_{i=1}^{n_j} (Y_{ij} - \bar{Y}_j) = 0\)` --- ### ANOVA >Construir la variabilidad total observada y descomponerla Por lo tanto, la variabilidad que observamos en los datos la hemos desagregado en dos partes: `$$SCT = SCE + SCR$$` donde, recordar, `$$\sum_{j=1}^{k} \sum_{i=1}^{n_j} (Y_{ij} - \bar{Y})^2 = \sum_{j=1}^{k} \sum_{i=1}^{n_j} (\bar{Y}_j - \bar{Y})^2 + \sum_{j=1}^{k} \sum_{i=1}^{n_j} (Y_{ij} - \bar{Y}_j)^2$$` -- La **Tabla ANOVA** nos muestra cómo se descompone la variabilidad en los datos, utilizando la suma de cuadrados para calcular los estadísticos F: <table> <tr> <th>Fuente</th> <th>Suma de Cuadrados</th> <th>Grados de Libertad</th> <th>Cuadrados Medios</th> <th>Estadístico F</th> </tr> <tr> <td>Entre grupos (Betwen groups)</td> <td>SCE</td> <td>k - 1</td> <td>M_SCE = SCE / (k - 1)</td> <td>F = M_SCE / M_SSR</td> </tr> <tr> <td>Intra-grupos (Within groups)</td> <td>SSR</td> <td>N - k</td> <td>M_SSR = SSR / (N - k)</td> <td></td> </tr> <tr> <td>Total</td> <td>SCT</td> <td>N - 1</td> <td></td> <td></td> </tr> </table> --- #ANOVA >Insertamos en el gráfico la densidad estimada para **toda** la muestra (pooled data) <img src="04_IntroductionCausality_files/figure-html/unnamed-chunk-3-3.png" width="100%" height="100%" /> --- # ANOVA >Cambios en el **tamaño del efecto** <img src="04_IntroductionCausality_files/figure-html/unnamed-chunk-4-5.png" width="100%" height="100%" /> >Observar como a medida que el impacto del tratamiento B disminuye desaparece la diferencia entre las densidades A y B con la agregada (datos pooled). >La descomposición de la SCT es igual a la SCR --- ### Resultado de la descomposición >Contraste ANOVA con los datos originales La **Tabla ANOVA** nos muestra cómo se descompone la variabilidad en los datos, utilizando la suma de cuadrados para calcular los estadísticos F: <table> <tr> <th>Fuente</th> <th>Suma de Cuadrados</th> <th>Grados de Libertad</th> <th>Cuadrados Medios</th> <th>Estadístico F</th> </tr> <tr> <td>Entre grupos (Betwen groups)</td> <td>SCE</td> <td>k - 1</td> <td>M_SCE = SCE / (k - 1)</td> <td>F = M_SCE / M_SSR</td> </tr> <tr> <td>Intra-grupos (Within groups)</td> <td>SSR</td> <td>N - k</td> <td>M_SSR = SSR / (N - k)</td> <td></td> </tr> <tr> <td>Total</td> <td>SCT</td> <td>N - 1</td> <td></td> <td></td> </tr> </table> > Hay dos tratamientos, A y B: k = 2 > Hay 1000 observaciones para cada tratamiento: N = 2000 con n_j = 1000, j = A,B ``` ## sum_sq df F PR(>F) ## C(version) 0.204432 1.0 8589.019646 0.0 ## Residual 0.047556 1998.0 NaN NaN ``` --- ### Modelo ANOVA >Otra forma de enfocar el análisis ANOVA es mediante una ecuación lineal -- Observar que, cuando sumamos y restamos las medias de las observacines teníamos que `$$Y_{ij} = Y_{ij} \leftrightarrow Y_{ij} = Y_{ij} + \overline{Y} - \overline{Y} +\overline{Y_j} - \overline{Y_j} \Leftrightarrow \\\Leftrightarrow Y_{ij}= \underbrace{\overline{Y}}_{\mu} + \underbrace{\overline{Y_j} - \overline{Y}}_{\tau_j} + \underbrace{Y_{ij}- \overline{Y_j}}_{\epsilon_{ij}}$$` -- Por tanto, podemos plantear en análisis ANOVA a traves del modelo: `$$Y_{ij} = \mu + \tau_j + \epsilon_{ij}$$` Donde: - `\(Y_{ij}\)` es la tasa de conversión observada del usuario `\(i\)` en la versión `\(j\)` (A o B). - `\(\mu\)` es la media global de las tasas de conversión. - `\(\tau_j\)` es el efecto del tratamiento (la versión `\(j\)`; between effect). - `\(\epsilon_{ij}\)` es el error (within effect) . --- ### Modelo ANOVA >Estimador de la Media Global `\(\mu\)` El estimador de la media global `\(\mu\)` es la media ponderada de todos los datos: `$$\hat{\mu} = \frac{1}{N} \sum_{i=1}^{k} \sum_{j=1}^{n_i} Y_{ij}= \overline{Y}$$` -- >Estimador del Efecto del Tratamiento `\(\tau_i\)` El estimador del efecto del tratamiento `\(j\)` es la diferencia entre la media del grupo `\(j\)` y la media global: `$$\hat{\tau}_j = \overline{Y_j} - \hat{\mu}$$` -- >El error `\(\epsilon_{ij}\)` Es la diferencia entre la observación `\(Y_{ij}\)` y la media del grupo `\(j\)`: `$$\hat{\epsilon}_{ij} = Y_{ij} - (\hat{\mu} + \hat{\tau}_j)$$` --- ### Interpretación de los Estimadores > `\(\hat{\mu}\)`: El estimador de la media global nos proporciona una estimación del promedio general para todas las observaciones. > `\(\hat{\tau}_j\)`: El estimador del efecto del tratamiento `\(\tau_j\)` mide la diferencia entre la media del tratamiento `\(j\)` y la media global, reflejando el efecto de cada versión (A o B) en el experimento. > `\(\hat{\epsilon}_{ij}\)`: El error aleatorio `\(\epsilon_{ij}\)` nos da una estimación de la variabilidad no explicada por los efectos de los tratamientos. --- ### ¿Es efectivo el cambio el cambio de color? >El impacto del cambio de color es <span style="color:tomato"> evidente observando el gráfico.</span> >>Como complemento, es posible utilizar el modelo ANOVA para preguntarse sí: **Hipótesis** `$$H_0: \tau_B \leq \tau_A$$` **Hipótesis alternativa** `$$H_1: \tau_B - \tau_A > 0$$` -- > Estadístico de prueba Para contrastar estas hipótesis, calculamos el contraste lineal: `$$L = \hat{\tau}_B - \hat{\tau}_A$$` El estadístico de prueba `\(t\)` se calcula como: `$$t = \frac{L}{\text{SE}(L)}$$` donde `$$\text{SE}(L) = \sqrt{var(\hat{\tau}_B) + var(\hat{\tau}_A)}$$` --- ### Implementación en Python A continuación, mostramos cómo implementar esta prueba en **Python** usando datos simulados. ``` ## sum_sq df F PR(>F) ## group 0.204432 1.0 8589.019646 0.0 ## Residual 0.047556 1998.0 NaN NaN ``` ``` ## Media Grupo A: 0.019802179319596044, Media Grupo B: 0.040022572673180164 ``` ``` ## Estadístico t: 92.67696394464588 ``` ``` ## Valor p: 0.0 ``` ``` ## Rechazamos H0: El tratamiento B es significativamente mayor que el tratamiento A ``` --- ### ¿Es efectivo el cambio el cambio de color? >Una alternativa sería plantear la hipótesis sobre el ratio: **Hipótesis** `$$H_0: \frac{\tau_B}{\tau_A} \leq 1$$` **Hipótesis alternativa** `$$H_1: \frac{\tau_B}{\tau_A} > 1$$` -- >Cuestiones: >Antes de implementar el experimento hay que <b style="color:tomato">diseñarlo de manera transparente</b>: >Entre otras cosas >>¿Qué impacto se va a medir: cambio absoluto o ratio? >>¿Cuál es la potencia del contraste a utilizar? >>¿Cuál es el tamaño del efecto esperado? --- ### Mínimos cuadrados: una forma de obtener los estimadores >Consideremos el modelo ANOVA: `$$Y_{ij} = \mu + \tau_j + \epsilon_{ij}$$` >>Podemos estimar los parámetros `\(\mu\)` y `\(\tau_j\)` mediante los **estimadores de mínimos cuadrados ordinarios (MCO)**. --- ### MCO: Identificación >Para poder **identificar** los parámetros es necesario imponer la restricción `$$\sum_{j=1}^{k} \tau_j = 0$$` >>Esto implica que los efectos de tratamiento `\(\tau_j\)` se expresan como desviaciones con respecto a la media general `\(\mu\)`. >>Ver concepto de **identificación** en el apéndice. --- ### Función de mínimos cuadrados La función de Mínimos Cuadrados consiste en minimizar la **Suma de Cuadrados Residual (SCR)**: `$$SCR = \sum_{j=1}^{k} \sum_{i=1}^{n_j} (Y_{ij} - \mu - \tau_j)^2 = \sum_{j=1}^{k} \sum_{i=1}^{n_j} \epsilon_{ij}^2$$` donde `\(n_j\)` es el número de individuos en el grupo `\(j\)`, y `\(k\)` es el número de grupos. --- ### Estimador MCO El **estimador de MCO** se obtiene de las condiciones de primer orden: `$$\frac{\partial SCR}{\partial \mu} = -2 \sum_{j=1}^{k} \sum_{i=1}^{n_j} (Y_{ij} - \mu - \tau_j) = 0\\ \frac{\partial SCR}{\partial \tau_j} = -2 \sum_{i=1}^{n_j} (Y_{ij} - \mu - \tau_j) = 0$$` Simplificando y despejado se tiene que el estimador de `\(\mu\)` es: `$$\hat{\mu} = \frac{1}{N} \sum_{j=1}^{k} \sum_{i=1}^{n_j} Y_{ij}$$` donde `\(N = \sum_{j=1}^{k} n_j\)` es el número total de observaciones. El estimador de `\(\tau_j\)`: `$$\hat{\tau}_j = \frac{1}{n_j} \sum_{i=1}^{n_j} Y_{ij} - \mu = \bar{Y}_j - \hat{\mu}$$` Es decir, el estimador de `\(\tau_j\)` es la diferencia entre la **media del grupo** `\(j\)` y la media global `\(\mu\)` --- # Resumen En las notas anteriores hemos presentado un conjunto de herramientas estadísticas para analizar si cambiar el color de las palabras de un anuncio afecta el comportamiento del usuario de la web. >un resultado es tan creible como de creible sean los supuestos que lo sostienen. -- En todo esta discusión no hemos hablado de **causalidad** >¿Qué se entiende por causalidad? >> Correlación no es causalidad -- >¿Por qué es necesario tener claro qué elementos pueden jugar en contra de determinar causalidad? >>Variables no observadas por el analista pueden explicar la covariabilidad observada (confounders) Sobre esto trabajaremos las clases siguientes. --- ### Apendice: restricción de identificación En el modelo ANOVA: `$$Y_{ij} = \mu + \tau_j + \epsilon_{ij}$$` es neceario imponer la restricción: `$$\sum_{j=1}^{k} \tau_j = 0$$` para que el modelo sea **identificable**, es decir, para que podamos estimar de manera única los parámetros `\(\mu\)` y `\(\tau_j\)`. --- ### Apendice: restricción de identificación > Definición de identificabilidad - Un modelo es **identificable** si podemos estimar de manera única sus parámetros basándonos en los datos observados. - Es decir, no debería haber más de un conjunto de parámetros `\(\mu\)` y `\(\tau_j\)` que describa exactamente los mismos datos observados. -- >El problema sin la restricción Si **no** imponemos la restricción `\(\sum_{j=1}^{k} \tau_j = 0\)`, los parámetros `\(\mu\)` y `\(\tau_j\)` no están identificados de manera única. Consideremos dos conjuntos de parámetros: `\(\mu, \tau_j\)` y `\(\mu', \tau_j'\)`, donde: `$$\mu' = \mu + c \quad \text{y} \quad \tau_j' = \tau_j - c$$` para cualquier constante `\(c\)`. -- Si sustituimos estos parámetros en el modelo, obtenemos: `$$Y_{ij} = \mu + \tau_j + \epsilon_{ij} = (\mu + c) + (\tau_j - c) + \epsilon_{ij} = \mu' + \tau_j' + \epsilon_{ij}$$` Por lo tanto, podemos cambiar `\(\mu\)` y `\(\tau_j\)` sin alterar las predicciones del modelo para `\(Y_{ij}\)`. >Esto significa que hay un número infinito de soluciones equivalentes para los mismos datos observados, lo que hace que el modelo **no sea identificable**. --- ### Apendice: restricción de identificación >Imposición de la restricción Para resolver este problema, imponemos la restricción: `$$\sum_{j=1}^{k} \tau_j = 0$$` Esta restricción garantiza que los `\(\tau_j\)` representen las **desviaciones con respecto a la media global** `\(\mu\)`. Vamos a ver cómo esta restricción resuelve el problema de identificabilidad. --- ### Apendice: restricción de identificación > ¿Por qué la restricción elimina la indeterminación? Imaginemos nuevamente que queremos desplazar `\(\mu\)` por una constante `\(c\)`, es decir, `\(\mu' = \mu + c\)`. Entonces, para que se mantenga `\(\sum_{j=1}^{k} \tau_j = 0\)`, tendríamos que ajustar los `\(\tau_j\)` de manera que: `$$\tau_j' = \tau_j - c$$` Ahora, si sumamos los nuevos `\(\tau_j'\)`, obtenemos: `$$\sum_{j=1}^{k} \tau_j' = \sum_{j=1}^{k} (\tau_j - c) = \sum_{j=1}^{k} \tau_j - kc$$` Para que la suma de `\(\tau_j'\)` siga siendo cero, necesitamos que `\(kc = 0\)`. Esto implica que la única solución es `\(c = 0\)`. Es decir, **no podemos cambiar `\(\mu\)` sin cambiar simultáneamente los `\(\tau_j\)` de una manera que rompa la restricción**. Por lo tanto, la restricción elimina cualquier indeterminación y hace que el modelo sea **identificable**, porque ahora solo hay un conjunto único de valores de `\(\mu\)` y `\(\tau_j\)` que satisfacen el modelo para los datos observados. --- ### Apendice: restricción de identificación > Resticción: como resuelve la identificabilidad 1. **Interpreta `\(\mu\)` como la media global**: - La restricción `\(\sum_{j=1}^{k} \tau_j = 0\)` asegura que `\(\mu\)` se interprete correctamente como la **media general** de todas las observaciones. 2. **Los `\(\tau_j\)` son desviaciones respecto a `\(\mu\)`**: - Con esta restricción, los `\(\tau_j\)` ahora representan las **diferencias entre la media del grupo `\(j\)` y la media global** `\(\mu\)`. Esto fija los valores de `\(\tau_j\)`, haciendo que el modelo sea identificable.