Soy un desarrollador de software que trabaja en sistemas de prueba A / B. No tengo antecedentes sólidos de estadísticas, pero he estado adquiriendo conocimientos en los últimos meses.
Un escenario de prueba típico implica comparar dos URL en un sitio web. Un visitante visita LANDING_URL
y luego se reenvía al azar a cualquiera URL_CONTROL
o URL_EXPERIMENTAL
. Un visitante constituye una muestra, y se logra una condición de victoria cuando el visitante realiza alguna acción deseable en ese sitio. Esto constituye una conversión y la tasa de tasas de conversión es la tasa de conversión (generalmente expresada como un porcentaje). Una tasa de conversión típica para una URL dada es algo en el ámbito de 0.01% a 0.08%. Realizamos pruebas para determinar cómo se comparan las nuevas URL con las antiguas. Si URL_EXPERIMENTAL
se muestra un rendimiento superior URL_CONTROL
, lo reemplazamos URL_CONTROL
con URL_EXPERIMENTAL
.
Hemos desarrollado un sistema utilizando técnicas simples de prueba de hipótesis. Usé las respuestas a otra pregunta CrossValidated aquí para desarrollar este sistema.
Una prueba se configura de la siguiente manera:
- La tasa de conversión estimada
CRE_CONTROL
deURL_CONTROL
se calcula utilizando datos históricos. - Se establece la tasa
CRE_EXPERIMENTAL
de conversión objetivo deseada deURL_EXPERIMENTAL
. - Normalmente se usa un nivel de significación de 0,95.
- Normalmente se usa una potencia de 0.8.
Juntos, todos estos valores se utilizan para calcular el tamaño de muestra deseado. Estoy usando la función R power.prop.test
para obtener este tamaño de muestra.
Se ejecutará una prueba hasta que se recojan todas las muestras. En este punto, se calculan los intervalos de confianza para CR_CONTROL
y CR_EXPERIMENTAL
. Si no se superponen, se puede declarar un ganador con un nivel de significación de 0,95 y una potencia de 0,8.
Sin embargo, los usuarios de nuestras pruebas tienen dos preocupaciones principales:
1. Si, en algún momento durante la prueba, se recolectan suficientes muestras para mostrar un ganador claro, ¿no se puede detener la prueba?
2. Si no se declara ningún ganador al final de la prueba, ¿podemos ejecutar la prueba más tiempo para ver si podemos recolectar suficientes muestras para encontrar un ganador?
Cabe señalar que existen muchas herramientas comerciales que permiten a sus usuarios hacer exactamente lo que nuestros propios usuarios desean. He leído que hay muchas falacias con lo anterior, pero también he encontrado la idea de una regla de detención y me gustaría explorar la posibilidad de usar dicha regla en nuestros propios sistemas.
Aquí hay dos enfoques que nos gustaría considerar:
1. Utilizando power.prop.test
, compare las tasas de conversión medidas actuales con el número actual de muestras y vea si se han recolectado suficientes muestras para declarar un ganador.
Ejemplo: se ha configurado una prueba para ver si existe el siguiente comportamiento en nuestro sistema:
CRE_CONTROL
: 0.1CRE_EXPERIMENTAL
: 0.1 * 1.3- Con estos parámetros, el tamaño de la muestra
N
es 1774.
Sin embargo, a medida que la prueba avanza y alcanza 325 muestras, CRM_CONTROL
(la tasa de conversión medida para el control) es 0.08 y CRM_EXPERIMENTAL
0.15. power.prop.test
se ejecuta con estas tasas de conversión y N
se encuentra en 325. ¡Exactamente el número de muestras necesarias para declarar CRM_EXPERIMENTAL
que es el ganador! En este punto, esperamos que la prueba pueda finalizar. Del mismo modo, si la prueba alcanza las 1774 muestras pero no se encuentra un ganador, pero luego alcanza las 2122 muestras, lo que es suficiente para mostrar que CRM_CONTROL
0.1 y CRM_EXPERIMENTAL
0.128 es un resultado en el que se puede declarar un ganador.
En una pregunta relacionada, los usuarios informaron que tal prueba es menos creíble debido a que alienta a las paradas tempranas a tener menos muestras y también es vulnerable al sesgo de estimación y a un mayor número de errores de Tipo I y Tipo II. ¿Hay alguna manera de hacer que esta regla de detención funcione? Este es nuestro enfoque preferido ya que significa menos tiempo de programación para nosotros. ¿Quizás esta regla de detención podría funcionar ofreciendo algún tipo de puntaje numérico o puntajes que midan la credibilidad de la prueba en caso de que se detenga antes?
2. Utilizando análisis secuencial o SPRT .
Estos métodos de prueba están diseñados exactamente para la situación en la que nos encontramos: ¿cómo pueden nuestros usuarios comenzar una prueba y finalizarla de tal manera que no pierdan el tiempo excesivo en las pruebas? Ejecutar una prueba demasiado tiempo o tener que comenzar una prueba nuevamente con diferentes parámetros.
De los dos métodos anteriores, estoy a favor de SPRT porque las matemáticas son un poco más fáciles de entender y porque parece que puede ser más fácil de programar. Sin embargo, no entiendo cómo usar la función de probabilidad en este contexto. Si alguien pudiera construir un ejemplo de cómo calcular la razón de probabilidad, la suma acumulativa de la razón de probabilidad, y continuar con un ejemplo que ilustra una situación en la que uno continuaría monitoreando, cuando uno aceptaría la hipótesis nula y la hipótesis alternativa, eso nos ayudaría a determinar si SPRT es el camino correcto.
Respuestas:
Este es un problema interesante y las técnicas asociadas tienen muchas aplicaciones. A menudo se les llama estrategias de "monitoreo interino" o "diseño experimental secuencial" (el artículo de Wikipedia, al que se vinculó, lamentablemente es un poco escaso), pero hay varias maneras de hacerlo. Creo que @ user27564 se equivoca al decir que estos análisis deben ser necesariamente bayesianos; también existen enfoques frecuentas para el monitoreo interino.
Una lógica similar le permite encontrar los "puntos de inevitabilidad" para otras pruebas donde:
Probablemente sea fácil de implementar: calcule los criterios de detención fuera de línea y luego conéctelo al código de su sitio, pero a menudo puede hacerlo aún mejor si está dispuesto a terminar el experimento no solo cuando el resultado es inevitable , pero cuando también es muy poco probable que cambie.
También hay otros enfoques. Los métodos secuenciales grupales están diseñados para situaciones en las que es posible que no pueda obtener un número determinado de sujetos y los sujetos goteen a tasas variables. Dependiendo del tráfico de su sitio, es posible que desee o no investigar esto.
Hay una buena cantidad de paquetes R flotando alrededor de CRAN, si eso es lo que está utilizando para su análisis. Un buen lugar para comenzar podría ser la Vista de tareas de ensayos clínicos , ya que gran parte de este trabajo salió de ese campo.
[*] Solo algunos consejos amigables: ten cuidado al mirar los valores de significación calculados a partir de un gran número de puntos de datos. A medida que recoger más y más datos, que va finalmente encontrar un resultado significativo, pero el efecto puede ser trivialmente pequeña. Por ejemplo, si le preguntas a todo el planeta si prefieren A o B, es muy poco probable que veas una división exacta de 50:50, pero probablemente no valga la pena reorganizar tu producto si la división es 50.001: 49.999. ¡Siga revisando el tamaño del efecto (es decir, la diferencia en las tasas de conversión) también!
fuente
Puede detenerse temprano, pero si lo hace, sus valores p no se interpretan fácilmente. Si no le importa la interpretación de su valor p, entonces la forma en que la respuesta a sus dos primeras preguntas es 'no' no importa (demasiado). Su cliente parece pragmático, por lo que la verdadera interpretación de un valor p probablemente no sea un buen punto que le interese.
No puedo hablar con el segundo enfoque que propones.
Sin embargo, el primer enfoque no está en tierra firme. Las aproximaciones normales de las distribuciones binomiales no son válidas para proporciones tan bajas (que es el método que usa power.prop.test, también el método utilizado por Cohen en su libro clásico sobre el poder). Además, que yo sepa, no existe una solución de análisis de potencia de forma cerrada para las pruebas de proporción de dos muestras (cf. ¿Cómo se puede realizar un análisis de potencia binomial de dos grupos sin utilizar aproximaciones normales? ). Sin embargo, existen mejores métodos para aproximar los intervalos de confianza de las proporciones (véase el paquete binom) Puede usar intervalos de confianza no superpuestos como una solución parcial ... pero esto no es lo mismo que estimar un valor p y, por lo tanto, no proporciona una ruta hacia el poder directamente. Espero que alguien tenga una buena solución de forma cerrada que compartan con el resto de nosotros. Si me tropiezo con uno, actualizaré la pregunta mencionada anteriormente. Buena suerte.
Editar: Mientras lo estoy pensando, déjenme ser completamente pragmático aquí por un momento. Su cliente desea que este experimento finalice cuando esté seguro de que el sitio experimental funciona mejor que el sitio de control. Después de obtener una muestra decente, si no está listo para tomar una decisión, simplemente comience a ajustar la proporción de su asignación aleatoria a cualquier lado que esté 'ganando'. Si fue solo un bache, la regresión hacia la media se deslizará, se volverá menos seguro y disminuirá la relación. Cuando esté razonablemente seguro, cancele y declare un ganador. El enfoque óptimo probablemente implicaría una actualización bayesiana, pero no sé lo suficiente sobre ese tema fuera de mi cabeza para dirigirlo. Sin embargo, puedo asegurarle que si bien puede parecer contra intuitivo a veces, las matemáticas en sí no son tan difíciles.
fuente
Las preguntas que tiene son preguntas típicas que surgen en las pruebas estadísticas. Hay dos 'sabores' de estadísticas, el frecuentista y el bayesiano. La respuesta frecuente a sus dos preguntas es fácil:
Una vez que definió su configuración, no está permitido siquiera mirar los datos (análisis ciego). Desde el punto de vista frecuentista, no hay forma de evitarlo, ¡no hay trampa ni trucos! (EDITAR: Por supuesto, hay intentos de hacerlo, y también funcionarán si se usan correctamente, pero se sabe que la mayoría de ellos introducen sesgos).
Pero existe el punto de vista bayesiano, que es bastante diferente. El enfoque bayesiano necesita, en contraste con los frecuentistas, una entrada adicional, la distribución de probabilidad a priori. Podemos llamarlo también conocimiento previo o prejuicio. Teniendo esto, podemos usar los datos / medidas para actualizar nuestro conocimiento a la probabilidad a posteriori. El punto es que podemos usar los datos y aún más, podemos usar los datos en cada punto intermedio de la medición. En cada actualización, el último posterior es nuestro nuevo prior y podemos actualizarlo con una nueva medición a nuestro conocimiento actualizado. No hay problema de parada temprana en absoluto!
Encontré una charla discutiendo problemas muy similares a los que tienes y describí anteriormente: http://biostat.mc.vanderbilt.edu/wiki/pub/Main/JoAnnAlvarez/BayesianAdaptivePres.pdf
Pero además de esto, ¿estás realmente seguro de que necesitas esto? Parece que tiene algún sistema ejecutándose para decidir dónde vincular una solicitud. Para esto, no necesita probar que sus decisiones son correctas en un sentido estadístico con una prueba de hipótesis. ¿Alguna vez ha comprado una coca cola, porque podría excluir que Pepsi esté 'en este momento' con una probabilidad del 95%? Es suficiente tomar el que sea mejor, sin excluir una hipótesis. Eso sería un algoritmo trivial: calcule la incertidumbre de la tasa A, calcule la falta de certidumbre de B. Tome la diferencia de ambas tasas y divídala por la incertidumbre de la diferencia. El resultado es algo así como el significado de la diferencia en sigma. Luego, tome todos los enlaces donde haya más de dos o tres diferencias sigma. Retirarse,
fuente
tal vez algunos métodos podrían usarse allí como
Esto ajustará el límite de P en función de los resultados y ayudará a dejar de recopilar datos y a economizar recursos y tiempo.
quizás otros trabajos podrían agregarse aquí.
fuente