Contenido del Curso
El Arte del A/B Testing
El Arte del A/B Testing
La Tercera Prueba U
Comparemos la métrica "Valor medio de compra" de ambas muestras.
Empezaremos con el gráfico de distribución:
Es difícil hacer una inferencia concluyente sobre la distribución de ambas muestras. Además, la mediana del grupo de prueba parece ser mayor. Realicemos la prueba de Shapiro:
# Import libraries import pandas as pd from scipy.stats import shapiro # Read .csv files df_control = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/c3b98ad3-420d-403f-908d-6ab8facc3e28/ab_control.csv', delimiter=';') df_test = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/c3b98ad3-420d-403f-908d-6ab8facc3e28/ab_test.csv', delimiter=';') # Define the metric df_test['Average Purchase Value'] = df_test['Earning'] / df_test['Purchase'] df_control['Average Purchase Value'] = df_control['Earning'] / df_control['Purchase'] # Testing normality of the control dataframe metric stat_control, p_control = shapiro(df_control['Average Purchase Value']) # Print the results of normality testing print("Control group: ") print("Stat: %.4f, p-value: %.4f" % (stat_control, p_control)) # Identify normality if p_control > 0.05: print('Control group is likely to normal distribution') else: print('Control group is NOT likely to normal distribution') # Testing normality of the test dataframe metric stat_control, p_control = shapiro(df_test['Average Purchase Value']) # Result of normality testing print("Test group: ") print("Stat: %.4f, p-value: %.4f" % (stat_control, p_control)) # Identify normality if p_control > 0.05: print('Test group is likely to normal distribution') else: print('Test group is NOT likely to normal distribution')
La primera prueba de Shapiro no encontró pruebas estadísticas de normalidad en la distribución. Sin embargo, la segunda prueba de Shapiro confirmó la normalidad de la distribución en el grupo de prueba. En este caso, para la prueba U, no es un problema. Es capaz de comparar tanto distribuciones normales como no normales. En este caso, no tenemos que preocuparnos por la varianza.
Las hipótesis serán:
H₀: Las medianas de la métrica 'Valor medio de compra' en los grupos de control y de prueba son iguales..
Hₐ: Las medianas de la métrica 'Valor medio de compra' difieren entre los grupos de control y de prueba..
# Import libraries import pandas as pd from scipy.stats import mannwhitneyu # Read .csv df_control = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/c3b98ad3-420d-403f-908d-6ab8facc3e28/ab_control.csv', delimiter=';') df_test = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/c3b98ad3-420d-403f-908d-6ab8facc3e28/ab_test.csv', delimiter=';') # Define the metric df_test['Average Purchase Value'] = df_test['Earning'] / df_test['Purchase'] df_control['Average Purchase Value'] = df_control['Earning'] / df_control['Purchase'] # Do the U-Test statistic, p_value = mannwhitneyu(df_control['Average Purchase Value'], df_test['Average Purchase Value']) # Result of the U-Test print('Statistic:', statistic) print('p-value:', p_value) # Idenify the equals of the medians if p_value > 0.05: print('The medians of the two groups are NOT statistically different') else: print('The medians of the two groups are statistically different')
El valor estadístico de prueba obtenido y el bajo valor p indican una diferencia estadísticamente significativa entre los medios de la métrica 'Valor medio de compra'
en los grupos de control y de prueba. Tenemos pruebas suficientes para rechazar la hipótesis nula y aceptar la hipótesis alternativa de que las medianas son diferentes. La mediana del grupo de prueba es mayor.
¡Gracias por tus comentarios!