Comment calculer la significativité statistique d'un AB Test
Le calcul de la significativité statistique d’un A/B test est une composante essentielle qui permet de déterminer si les résultats observés entre deux variantes (A et B) sont dus au hasard ou à une véritable différence entre les deux groupes. Voici une méthode détaillée pour effectuer ce calcul ainsi que le modèle excel et le script python pour la calculer avec vos propres données.
Voici les différentes étapes pour calculer la significativité statistique lors de l'analyse des résultats d'un A/B test.
1. Définir les termes essentiels
2. Calculer l’erreur standard
L’erreur standard mesure la variation probable des taux de conversion dans chaque groupe.
3. Calculer le score Z
4. Trouver la p-value
Utilisez une table de score Z (ou une calculatrice en ligne) pour trouver la p-value associée au score Z.
- Une p-value inférieure à 0.05 (p<0.05p < 0.05p<0.05) indique que la différence est statistiquement significative (95% de confiance).
- Si p>0.05p > 0.05p>0.05, on ne peut pas rejeter l’hypothèse nulle.
5. Interpréter les résultats
- Si le résultat est statistiquement significatif :
- Vous pouvez conclure qu’il y a une vraie différence entre A et B.
- Sinon :
- Vous ne pouvez pas conclure que l’une des variantes est meilleure. Continuez le test ou ajustez votre approche.
Exemple pratique
La différence entre les groupes est statistiquement significative. Vous pouvez conclure que la variante B est meilleure.
Outils pour simplifier les calculs
Voici un modèle Excel et un script Python pour automatiser vos calculs.
Modèle Excel
Remplissez les cellules appropriées pour les visiteurs et les conversions des groupes A et B, et le modèle calculera automatiquement les taux de conversion, la différence, l'erreur standard, le score Z et l'interprétation de la p-value.
Script Python
Voici un script Python qui calcule la significativité statistique d'un test A/B.
from scipy.stats import norm
def calculate_ab_test_significance(conversions_a, visitors_a, conversions_b, visitors_b):
# Step 1: Calculate conversion rates
cr_a = conversions_a / visitors_a
cr_b = conversions_b / visitors_b
# Step 2: Calculate the absolute difference in conversion rates
delta = cr_b - cr_a
# Step 3: Calculate the standard error
se = ((cr_a * (1 - cr_a) / visitors_a) + (cr_b * (1 - cr_b) / visitors_b)) ** 0.5
# Step 4: Calculate the Z-score
z_score = delta / se
# Step 5: Calculate the p-value (using a two-tailed test)
p_value = 2 * (1 - norm.cdf(abs(z_score)))
# Step 6: Interpret the results
significance = "Significant (p < 0.05)" if p_value < 0.05 else "Not Significant (p ≥ 0.05)"
# Output results
return {
"Conversion Rate A": cr_a,
"Conversion Rate B": cr_b,
"Difference (Delta)": delta,
"Standard Error": se,
"Z-Score": z_score,
"P-Value": p_value,
"Significance": significance,
}
# Example input values
result = calculate_ab_test_significance(conversions_a=300, visitors_a=10000, conversions_b=350, visitors_b=10000)
print(result)
Exemple de sortie :
Pour les valeurs suivantes :
- Conversions A : 300
- Visiteurs A : 10,000
- Conversions B : 350
- Visiteurs B : 10,000
Le script génère :
{
'Conversion Rate A': 0.03,
'Conversion Rate B': 0.035,
'Difference (Delta)': 0.005,
'Standard Error': 0.00251,
'Z-Score': 1.994,
'P-Value': 0.0461,
'Significance': 'Significant (p < 0.05)'
}
Vous devez bien sûr adapter les entrées pour vos propres données et analyser rapidement la significativité statistique d’un test A/B.