Nota: Esta es una traducción al español de un blog publicado originalmente en inglés, que puedes encontrar aquí: https://statsig.com/blog/cuped
CUPED se está convirtiendo poco a poco en un término común en la experimentación en línea desde que Microsoft lo acuñó en 2013. Con el significado de Experimento Controlado Usando Datos Pre-Experimentales (Controlled-experiment Using Pre-Experiment Data), CUPED es frecuentemente citado como —y utilizado como— una de las herramientas algorítmicas más poderosas para aumentar la velocidad y precisión de los programas de experimentación.
En este artículo:
Cubriremos los antecedentes de CUPED
Ilustraremos los conceptos fundamentales detrás de CUPED
Mostraremos cómo puedes aprovechar esta herramienta para ejecutar experimentos más rápidos y menos sesgados
A medida que un experimento madura y alcanza su fecha objetivo para la lectura de resultados, no es raro ver un resultado que parece estar apenas fuera del rango donde sería tratado como estadísticamente significativo. En un mundo frecuentista, esto no es evidencia suficiente de que tu cambio causó un cambio en el comportamiento del usuario.
Si hubiera un efecto real, necesitabas más tamaño de muestra para aumentar tus posibilidades de obtener un resultado estadísticamente significativo. En un experimento, el error estándar o "ruido" disminuye con la raíz cuadrada del tamaño de tu muestra. Sin embargo, el tamaño de la muestra es un recurso costoso, generalmente proporcional a la ventana de inscripción de tu experimento.
Esperar más muestras retrasa tu capacidad de tomar una decisión informada, y no garantiza que observarás un resultado estadísticamente significativo cuando hay un efecto real.
Incluso en empresas con una escala inmensa como Facebook y Amazon, las personas tienen que lidiar con el dolor de esperar a que los experimentos inscriban usuarios y maduren porque generalmente buscan efectos relativamente pequeños.
Considera esto: ¡Un aumento del 0.1% en los ingresos de Facebook vale más de $100 millones por año!
Para empresas más pequeñas, los tamaños de efecto pequeños pueden volverse imposibles de medir. Simplemente tomaría demasiado tiempo obtener la muestra necesaria para observar de manera confiable un cambio estadísticamente significativo en su métrica objetivo.
Debido a este costo, se han desarrollado varios métodos para disminuir el error estándar para la misma métrica y tamaño de muestra.
CUPED es una implementación extremadamente popular que utiliza datos pre-experimentales para explicar parte de la varianza en los datos de resultados.
Como muchas cosas en la experimentación, el concepto central detrás de CUPED es simple, pero su implementación puede ser complicada (¡y costosa!).
El principio rector de CUPED es que no toda la varianza en un experimento es aleatoria. De hecho, muchas de las diferencias en los resultados de los usuarios se basan en factores preexistentes que no tienen nada que ver con el experimento.
Hablemos de esto por un minuto:
Digamos que queremos ejecutar una prueba para ver si las personas corren más lento con pesas adjuntas. Desde una perspectiva física, la respuesta parece bastante obvia. Podríamos registrar datos como estos:
Persona | Grupo de Prueba | Tiempo de Milla del Experimento |
Sally | Con Pesas | 6:40 |
Dave | Sin Pesas | 7:10 |
Jane | Con Pesas | 8:20 |
Bob | Sin Pesas | 9:00 |
Si promediamos nuestros resultados, podríamos ver claramente el efecto esperado, pero podríamos no verlo; hay mucha varianza y superposición en los tiempos de milla observados. Sin embargo, debería ser bastante claro que qué tan rápidos eran los corredores ya podría ser un factor subyacente. ¿Qué pasaría si les pidiéramos que corrieran una milla hace una semana para establecer una línea base?
Persona | Grupo | Tiempo Base de Milla | Tiempo de Milla del Experimento | Cambio |
Sally | Con Pesas | 6:30 | 6:40 | +10 |
Dave | Sin Pesas | 7:08 | 7:10 | +2 |
Jane | Con Pesas | 7:30 | 8:20 | +50 |
Bob | Sin Pesas | 9:15 | 9:00 | -15 |
¡En el contexto de su tiempo de milla "típico", este efecto debería ser mucho más claro! ¡Hemos cambiado implícitamente de preocuparnos por su "tiempo de milla" bruto a preocuparnos por la diferencia de lo que esperaríamos!
Al hacer esto, también hemos "explicado" parte del ruido y la varianza en la métrica del experimento. Antes, vimos una diferencia de 140 segundos entre el corredor más rápido y el más lento. Ahora, hemos reducido el rango en nuestra métrica a 65 segundos; este rango menor debería significar que la varianza que usaríamos para calcular intervalos de confianza y valores p será menor.
Esto es conceptualmente muy similar a la implementación original de CUPED; usamos los datos pre-experimentales para una métrica para normalizar los valores post-experimentales. Cuánto normalizamos se basa en qué tan bien los datos pre-experimentales predicen los datos experimentales - profundizaremos en esto más adelante.
Debido a que los grupos experimentales se asignan aleatoriamente, existe la posibilidad de que los dos grupos tengan aleatoriamente diferentes tiempos de carrera base. Si tienes mala suerte, esa diferencia podría incluso ser estadísticamente significativa. Esto significa que incluso si las pesas no hicieran nada, podrías concluir que hay una diferencia entre los dos grupos.
Si tienes acceso a esos datos de línea base, sería posible concluir que había una diferencia preexistente y ser cauteloso con los resultados. En el ejemplo a continuación, es bastante obvio que la diferencia en los grupos antes de la prueba haría que los resultados fueran extremadamente sesgados.
Conceptualmente, si un grupo tiene un promedio de línea base más rápido, sus resultados experimentales también serán más rápidos. Cuando aplicamos una corrección CUPED, la métrica del grupo más rápido se ajustará hacia abajo en relación con el grupo más lento.
En este ejemplo, los promedios post-ajuste podrían moverse algo así, empujando el valor experimental del grupo con pesas más alto que el grupo de control. Podríamos hacer un seguimiento con una prueba estadística para entender si la diferencia en los valores ajustados es estadísticamente significativa.
Algunas variantes de CUPED son 'no paramétricas' o 'por segmentos'. Lo que esto generalmente significa es que (en este ejemplo) dividiríamos a los usuarios en grupos basados en sus tiempos de carrera pre-experimentales, y mediríamos las métricas en relación con el valor métrico promedio de ese grupo.
Por ejemplo, considera los datos a continuación - esto es para el segmento de usuarios que corrieron entre una milla de 6:30 y 6:40 en la línea base:
Grupo | Segmento de Tiempo Previo | Tiempo Promedio del Segmento | Tiempo de Milla del Experimento | Tiempo de Milla Ajustado |
Con Pesas | 6:30-6:40 | 6:42 | 6:50 | +8 |
Sin Pesas | 6:30-6:40 | 6:42 | 6:35 | -7 |
Con Pesas | 6:30-6:40 | 6:42 | 7:02 | +20 |
Las implementaciones más complejas de CUPED no solo dependen de un único punto de datos histórico para la misma métrica. También pueden incorporar otra información, siempre que sea independiente del grupo experimental en el que se encuentra el usuario.
En el ejemplo anterior, podríamos agregar el grupo de edad como un factor en la experimentación. ¡Esto tiene relativamente poco que ver con nuestro experimento, pero podría ser un factor importante en los tiempos de milla de las personas! Al incluir esto como un factor en CUPED, podemos reducir aún más la varianza.
Grupo | Tiempo Base de Milla | Edad | Tiempo de Milla del Experimento | Cambio |
Con Pesas | 6:30 | 25 | 6:40 | +10 |
Sin Pesas | 7:08 | 32 | 7:10 | +2 |
Con Pesas | 7:30 | 22 | 8:20 | +50 |
Sin Pesas | 9:15 | 45 | 9:00 | -15 |
En la práctica, no podemos simplemente restar los valores previos de un usuario de sus valores experimentales. La razón de esto también es conceptualmente simple: el comportamiento pasado de las personas no siempre es un predictor perfecto de su comportamiento futuro.
Antes de continuar, es útil entender la relación entre la experimentación y la regresión (la regresión de mínimos cuadrados ordinarios o "MCO" que ejecutarías en Excel).
Una prueba T para una métrica dada es matemáticamente equivalente a ejecutar una regresión donde la variable dependiente es tu métrica y la variable independiente es el grupo experimental de un usuario. Para demostrar esto, generé algunos datos para el experimento de ejemplo anterior, donde los ritmos de los usuarios se basan en un ritmo base asignado aleatoriamente y si están en el grupo de prueba.
Las estadísticas de población para esto son:
Estadísticas de población tiempo medio (s): 547.6 media de prueba (s): 551.3 media de control (s): 543.8 n de prueba: 100 n de control: 100
Comparemos los resultados de ejecutar una prueba T y ejecutar un MCO donde usamos la bandera de prueba 1-o-0 como variable independiente.
Prueba T:
MCO:
Comparando estos, notamos muchas similitudes:
El tamaño del efecto en nuestra prueba T (el delta entre prueba y control) es exactamente el mismo que el coeficiente de la variable "test" en la regresión MCO.
El error estándar para el coeficiente es el mismo que el error estándar para nuestra prueba T.
¡El valor p para el coeficiente de la variable "test" es el mismo que para nuestra prueba t!
En resumen, ¡nuestra prueba T estándar es básicamente una regresión contra una variable 1-o-0!
Cuando queremos hacer las regresiones más precisas, podríamos agregar variables explicativas relevantes. Podemos hacer lo mismo para nuestra prueba; nuevamente, este es el concepto central detrás de CUPED.
Incluyamos el ritmo base como un factor en nuestra regresión. Deberíamos esperar que esto cambie bastante la regresión, ya que es una variable explicativa tan poderosa, y así es.
Revisemos:
El coeficiente de la variable "test" (la estimación del efecto del experimento) no cambió mucho. Eso es esperado: a menos que hubiera una diferencia significativa entre los grupos antes del experimento, deberíamos obtener una estimación similar del efecto del experimento.
El error estándar (y en consecuencia el valor p) bajó de 4.73 a 2.13. ¡Esto se debe a que mucho del ruido que anteriormente atribuimos a nuestra variable de prueba no era aleatorio: venía de usuarios que tenían diferentes líneas base, lo cual ahora estamos teniendo en cuenta!
Nuestro valor p pasa de 0.116 a 0.000 debido al error estándar disminuido. El resultado, que anteriormente no era estadísticamente significativo, ahora es claramente significativo.
Usar CUPED con el ritmo base logra resultados casi idénticos. Para visualizar la reducción en Varianza/Error Estándar, grafiqué la distribución de los ritmos de los usuarios de este conjunto de datos de muestra antes y después de aplicar CUPED.
Para más detalles sobre esto, consulte el documento técnico de Microsoft de 2013. Hemos utilizado muchas fórmulas que aparecen en ese documento aquí.
Para reducir la varianza usando otras variables, necesitaremos hacer ajustes de tal manera que terminemos con un estimador no sesgado de las medias de grupo que usaremos en nuestros cálculos. Un estimador no sesgado simplemente significa que el valor esperado del estimador es igual al valor verdadero del parámetro que estamos estimando.
En la práctica, esto significa que necesitamos elegir un ajuste que sea independiente del grupo de prueba al que se asigna un usuario.
Para la implementación original y más simple de CUPED, nos referiremos a nuestros valores pre-experimentales como X y nuestros valores experimentales como Y. Ajustaremos Y para obtener un Ycv ajustado por covariable según la fórmula a continuación:
Aquí, θ podría ser cualquier constante derivada. Lo que significa esta ecuación es que, para cualquier θ, podemos tomar dos pasos:
Multiplicar la media poblacional pre-experimental por θ y agregarla al resultado de cada usuario
Restar del resultado de cada usuario θ multiplicado por su valor pre-experimental
Esto nos da un estimador no sesgado Ycv que factoriza la covariable en nuestras estimaciones. Podemos calcular la varianza del nuevo término estimador:
Esta es la varianza de nuestro estimador ajustado para Y. Esta varianza resulta ser la más pequeña para:
¡Este es el término que usaríamos para calcular la pendiente en una regresión MCO! Este también es el término que terminaremos usando en nuestra transformación de datos: tomamos todos los datos en el experimento y calculamos este theta. La varianza final para nuestro estimador es
donde ρ es la correlación entre X e Y. La correlación entre los datos pre-experimentales y post-experimentales está directamente vinculada a cuánto se reduce la varianza. Ten en cuenta que dado que ρ está limitado entre [-1, 1], esta nueva varianza siempre será menor o igual a la varianza original.
Para crear una canalización de datos para la forma básica de CUPED, debes llevar a cabo los siguientes pasos. Con X refiriéndose a los puntos de datos pre-experimentales y los puntos Y refiriéndose a los datos experimentales:
Calcula la covarianza entre Y y X, así como la varianza y la media de X. Usa esto para calcular θ según la fórmula anterior.
Esto requiere que los usuarios sin datos pre o post-experimentales se incluyan como 0s si van a ser incluidos en el ajuste
Para cada usuario, calcula el valor pre-experimental individual del usuario. Es común elegir no aplicar un ajuste para usuarios que no son elegibles para datos pre-experimentales (por ejemplo, usuarios nuevos): esto es efectivamente una estratificación de un nivel.
Une las estadísticas de población a los datos a nivel de usuario
Calcula los términos ajustados del usuario como Y +θ*(media poblacional de X)- θX
Ejecuta e interpreta tu análisis estadístico como lo harías normalmente, usando las métricas ajustadas como tus entradas
Hay muchas covariables que podríamos usar para la reducción de varianza; el requisito principal es que sea independiente del grupo experimental al que se asigna el usuario. Generalmente, los datos de antes de un experimento son los más seguros.
Comúnmente usamos la misma métrica de antes del experimento como covariable porque en la práctica suele ser un predictor muy efectivo, y tiene sentido intuitivo en la mayoría de los casos.
Deberíamos calcular las estadísticas de grupo para los datos pre-experimentales/post-experimentales en toda la población del experimento, no por grupo, porque es posible que haya un efecto de interacción entre el tratamiento y los datos de pre-exposición. Por ejemplo, los usuarios que corren más rápido pueden estar mejor equipados para correr con pesas, y por lo tanto la correlación entre los períodos pre y post sería diferente que para los usuarios más lentos.
Los usuarios nuevos no tendrán datos pre-experimentales. Un experimento sin datos pre-experimentales no podrá aprovechar CUPED. En estos casos, la mejor opción es usar covariables como datos demográficos si es posible.
Si un experimento tiene algunos usuarios nuevos y algunos usuarios establecidos, puedes usar CUPED y dividir la población por otra covariable binaria: ¿Tienen datos pre-experimentales o no? Funcionalmente, esto significa que solo aplicas CUPED en usuarios con datos pre-experimentales como se discutió anteriormente.
CUPED es más efectivo en experimentos con usuarios existentes donde tienes acceso a los datos históricos del usuario. Para experimentos con usuarios nuevos, la estratificación u otras covariables como los datos demográficos pueden ser útiles, pero no podrás aprovechar una covariable tan rica.
CUPED necesita datos históricos para funcionar; esto significa que debes asegurarte de que los datos de tu métrica se remonten a antes del inicio de la ventana de datos pre-experimentales.
La capacidad de CUPED para ajustar valores se basa en qué tan correlacionada está una métrica con su valor pasado para el mismo usuario. Algunas métricas serán muy estables para el mismo usuario y permitirán grandes ajustes; algunas son ruidosas con el tiempo para el mismo usuario, y no verás mucha diferencia en los valores ajustados.