Conteúdo do Curso
A Arte do Teste A/B
A Arte do Teste A/B
O Terceiro teste U
Vamos comparar a métrica 'Valor Médio da Compra'
para ambas as amostras.
Começaremos com o gráfico de distribuição:
É difícil fazer uma inferência conclusiva sobre a distribuição das duas amostras. Além disso, a mediana do grupo de teste parece ser maior. Vamos realizar o teste 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')
O primeiro teste de Shapiro não encontrou evidência estatística de normalidade na distribuição. No entanto, o segundo teste de Shapiro confirmou a normalidade da distribuição no grupo de teste. Neste caso, para o teste U, isso não é um problema. Ele é capaz de comparar distribuições tanto normais quanto não-normais. Não precisamos nos preocupar com a variância neste caso.
As hipóteses serão:
H₀: As medianas da métrica 'Valor Médio de Compra' nos grupos de controle e teste são as mesmas.
Hₐ: As medianas da métrica 'Valor Médio de Compra' diferem entre os grupos de controle e de teste.
# 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')
O valor da estatística de teste obtido e o baixo valor-p indicam uma diferença estatisticamente significativa entre as medianas da métrica 'Valor Médio de Compra'
nos grupos de controle e teste. Temos evidências suficientes para rejeitar a hipótese nula e aceitar a hipótese alternativa de que as medianas são diferentes. A mediana no grupo de teste é maior.
Obrigado pelo seu feedback!