La prueba dividida es otro nombre de la prueba A/B y es una metodología común o general. Se usa en línea cuando se quiere probar una nueva característica o un producto. La agenda principal aquí es diseñar un experimento que brinde resultados repetibles y robustos para tomar una decisión informada de lanzarlo o no. Generalmente, esta prueba incluye una comparación de dos páginas web representando las variantes A y B para ellas, a medida que el número de visitantes es similar, la tasa de conversión que brinda la variante mejora. En general, es un experimento en el que se comparan dos o más variaciones de la misma página web mostrándolas a los visitantes en tiempo real y, a través de eso, determina cuál funciona mejor para un objetivo determinado. Las pruebas A/B no solo se usan o se limitan solo a las páginas web, se pueden usar en correos electrónicos, ventanas emergentes, formularios de registro, aplicaciones y más. Veamos el ejemplo de un estudio de caso. Así que implementemos pruebas AB en ellenguaje R.
Caso de estudio
Imaginemos que tenemos resultados de pruebas A/B de dos sitios web de reservas de hoteles (Nota: los datos no son los reales). Primero, necesitamos realizar un análisis de prueba de los datos; en segundo lugar, debemos sacar conclusiones de los datos que obtuvimos en el primer paso y, en el paso final, hacemos recomendaciones o sugerencias a los equipos de producto o de gestión.
Resumen del conjunto de datos
Descargue el conjunto de datos desde aquí .
- La variante A es del grupo de control que indica las características o productos existentes en un sitio web.
- La variante B es del grupo experimental para verificar la nueva versión de una función o producto para ver si a los usuarios les gusta o si aumenta las conversiones (reservas).
- Convertido se basa en el conjunto de datos dado, hay dos categorías definidas por valor lógico. Se mostrará verdadero cuando el cliente complete las reservas y se mostrará falso cuando el cliente visite los sitios pero no haga una reserva.
Hipótesis de prueba
- Hipótesis nula: ambas versiones A y B tienen la misma probabilidad de conversión o de impulsar la reserva del cliente. En otras palabras, no hay diferencia o ningún efecto entre las versiones A y B.
- Hipótesis alternativa: las versiones A y B tienen diferentes probabilidades de conversión o de impulsar la reserva del cliente y hay una diferencia entre la versión A y la versión B. La versión B es mejor que la versión A para impulsar las reservas de los clientes. PEx_B! = Pcont_A.
Análisis en R
1. Prepare el conjunto de datos y cargue la biblioteca tidyverse que contiene los paquetes relevantes utilizados para el análisis.
R
# load the library library(tidyverse) # set up your own directory setwd(“~egot_\\Projects\\ABTest”) # Using read.csv base import function ABTest <- read.csv("Website Results.csv", header = TRUE) # save in your own directory save(ABTest, file = "~rda\\ABTest.rda")
2. Filtremos las conversiones para las variantes A y B y calculemos sus tasas de conversión correspondientes.
R
# Let's filter out conversions for variant_A conversion_subset_A <- ABTest %>% filter(variant == "A" & converted == "TRUE") # Total Number of Conversions for variant_A conversions_A <- nrow(conversion_subset_A) # Number of Visitors for variant_A visitors_A <- nrow(ABTest %>% filter(variant == "A")) # Conversion_rate_A conv_rate_A <- (conversions_A/visitors_A) print(conv_rate_A) # 0.02773925 # Let's take a subset of conversions for variant_B conversion_subset_B <- ABTest %>% filter(variant == "B" & converted == "TRUE") # Number of Conversions for variant_B conversions_B <- nrow(conversion_subset_B) # Number of Visitors for variant_B visitors_B <- nrow(ABTest %>% filter(variant == "B")) # Conversion_rate_B conv_rate_B <- (conversions_B/visitors_B) print(conv_rate_B) # 0.05068493
Producción:
0.02773925 0.05068493
3. Calculemos el aumento relativo utilizando las tasas de conversión A y B. El aumento es un porcentaje del aumento
R
uplift <- (conv_rate_B - conv_rate_A) / conv_rate_A * 100 uplift # 82.72%
Producción:
82.72%
B es mejor que A en un 83%. Esto es lo suficientemente alto como para decidir un ganador.
4. Calculemos la probabilidad combinada, el error estándar, el margen de error y la diferencia en proporción (estimación puntual) para las variantes A y B
R
# Pooled sample proportion for variants A & B p_pool <- (conversions_A + conversions_B) / (visitors_A + visitors_B) print(p_pool) # 0.03928325 # Let's compute Standard error for variants A & B (SE_pool) SE_pool <- sqrt(p_pool * (1 - p_pool) * ((1 / visitors_A) + (1 / visitors_B))) print(SE_pool) # 0.01020014 # Let's compute the margin of error for the pool MOE <- SE_pool * qnorm(0.975) print(MOE) # 0.0199919 # Point Estimate or Difference in proportion d_hat <- conv_rate_B - conv_rate_A
Producción:
0.03928325 0.01020014 0.0199919
5. Calculemos el puntaje z
R
# Compute the Z-score so we # can determine the p-value z_score <- d_hat / SE_pool print(z_score) # 2.249546
Producción:
2.249546
6. Usando este puntaje z, podemos determinar rápidamente el valor p a través de una tabla de búsqueda o usando el siguiente código:
R
# Let's compute p_value # using the z_score value p_value <- pnorm(q = -z_score, mean = 0, sd = 1) * 2 print(p_value) # 0.02447777
Producción:
0.02447777
7. Calculemos el intervalo de confianza para el grupo
R
# Let's compute Confidence interval for the # pool using pre-calculated results ci <- c(d_hat - MOE, d_hat + MOE) ci # 0.002953777 0.042937584 # Using same steps as already shown, # let's compute the confidence # interval for variants A separately X_hat_A <- conversions_A / visitors_A se_hat_A <- sqrt(X_hat_A * (1 - X_hat_A) / visitors_A) ci_A <- c(X_hat_A - qnorm(0.975) * se_hat_A, X_hat_A + qnorm(0.975) * se_hat_A) print(ci_A) # 0.01575201 0.03972649 # Using same steps as already shown, # let's compute the confidence # interval for variants B separately X_hat_B <- conversions_B / visitors_B se_hat_B <- sqrt(X_hat_B * (1 - X_hat_B) / visitors_B) ci_B <- c(X_hat_B - qnorm(0.975) * se_hat_B, X_hat_B + qnorm(0.975) * se_hat_B) print(ci_B) # 0.03477269 0.06659717
Producción:
0.002953777 0.042937584 0.01575201 0.03972649 0.03477269 0.06659717
8. Visualicemos los resultados calculados hasta ahora en un marco de datos (tabla) :
R
vis_result_pool <- data.frame( metric = c( 'Estimated Difference', 'Relative Uplift(%)', 'pooled sample proportion', 'Standard Error of Difference', 'z_score', 'p-value', 'Margin of Error', 'CI-lower', 'CI-upper'), value = c( conv_rate_B - conv_rate_A, uplift, p_pool, SE_pool, z_score, p_value, MOE, ci_lower, ci_upper )) vis_result_pool
Producción:
metric value 1 Estimated Difference 0.02294568 2 Relative Uplift(%) 82.71917808 3 pooled sample proportion 0.03928325 4 Standard Error of Difference 0.01020014 5 z_score 2.24954609 6 p-value 0.02447777 7 Margin of Error 0.01999190 8 CI-lower 0.00000000 9 CI-upper 0.04589136
Recomendaciones y Conclusiones
- La variante A tiene 20 conversiones y 721 visitas, mientras que la variante B tiene 37 conversiones y 730 visitas.
- El aumento relativo del 82,72 % basado en una tasa de conversión de la variante A es del 2,77 % y para la B es del 5,07 %. Por lo tanto, la variante B es mejor que la A en un 82,72 %.
- Para este análisis, el valor P calculado fue 0,02448. Por lo tanto, existe una fuerte significación estadística en los resultados de las pruebas.
- De los resultados anteriores que representan una fuerte significación estadística. Debe rechazar la hipótesis nula y proceder con el lanzamiento.
- Por lo tanto, acepte la Variante B y podrá transferirla a los usuarios al 100 %.
Si desea conocer el análisis completo y los detalles de los conjuntos de datos, haga clic en este enlace de Github.
Limitaciones
Es una de las herramientas para la optimización de conversiones y no es una solución independiente y no va a solucionar todos nuestros problemas de conversión y no puede solucionar los problemas a medida que obtiene datos desordenados y necesita realizar más que solo un Test A/B para mejorar las conversiones.
Publicación traducida automáticamente
Artículo escrito por pranithpashikanti786 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA