Pourquoi est-il mal d'arrêter un test A / B avant que la taille d'échantillon optimale soit atteinte?

13

Je suis en charge de présenter les résultats des tests A / B (exécutés sur les variantes du site) dans mon entreprise. Nous exécutons le test pendant un mois, puis vérifions les valeurs de p à intervalles réguliers jusqu'à ce que nous atteignions la signification (ou abandonnons si la signification n'est pas atteinte après avoir exécuté le test pendant une longue période), ce que je découvre maintenant est une pratique erronée .

Je veux arrêter cette pratique maintenant, mais pour ce faire, je veux comprendre POURQUOI c'est faux. Je comprends que la taille de l'effet, la taille de l'échantillon (N), le critère de signification alpha (α) et la puissance statistique, ou le bêta choisi ou implicite (β) sont mathématiquement liés. Mais qu'est-ce qui change exactement lorsque nous arrêtons notre test avant d'atteindre la taille d'échantillon requise?

J'ai lu quelques articles ici (à savoir ceci , ceci et cela ), et ils me disent que mes estimations seraient biaisées et que le taux de mon erreur de type 1 augmente considérablement. Mais comment cela se produit-il? Je cherche une explication mathématique , quelque chose qui montrerait clairement les effets de la taille de l'échantillon sur les résultats. Je suppose que cela a quelque chose à voir avec les relations entre les facteurs que j'ai mentionnés ci-dessus, mais je n'ai pas été en mesure de trouver les formules exactes et de les élaborer moi-même.

Par exemple, l'arrêt prématuré du test augmente le taux d'erreur de type 1. Bien. Mais pourquoi? Que se passe-t-il pour augmenter le taux d'erreur de type 1? Je manque l'intuition ici.

Aidez-moi, s'il vous plaît.

sgk
la source
1
pourrait être utile evanmiller.org/how-not-to-run-an-ab-test.html
seanv507
1
Oui, j'ai parcouru ce lien, mais je n'ai tout simplement pas compris l'exemple donné.
sgk
désolé Gopalakrishnan - je n'avais pas vu que votre premier lien indiquait déjà cela.
seanv507
1
Pouvez-vous expliquer ce que vous ne comprenez pas. Les mathématiques / l'intuition semblent assez claires: ce n'est pas tant l'arrêt avant la taille d'échantillon requise, mais la vérification répétée. , vous ne pouvez donc pas utiliser plusieurs fois un test conçu pour des contrôles uniques. P(i1Nxi>θ)P(xN>θ)
seanv507
@GopalakrishnanShanker explication mathématique donnée dans ma réponse
tomka

Réponses:

4

Les tests A / B qui testent simplement à plusieurs reprises sur les mêmes données avec un niveau d' erreur de type 1 fixe ( ) sont fondamentalement défectueux. Il y a au moins deux raisons pour lesquelles il en est ainsi. Premièrement, les tests répétés sont corrélés mais les tests sont menés indépendamment. Deuxièmement, le α fixe ne tient pas compte des tests conduits en multiples conduisant à une inflation d'erreur de type 1.αα

Pour voir la première, supposez qu'à chaque nouvelle observation, vous effectuez un nouveau test. Il est clair que deux valeurs p subséquentes seront corrélées car cas n'ont pas changé entre les deux tests. Par conséquent, nous voyons une tendance dans le graphique de @ Bernhard démontrant cette corrélation des valeurs de p.n-1

Pour voir le second, nous notons que même lorsque les tests sont indépendants, la probabilité d'avoir une valeur de p inférieure à augmente avec le nombre de tests t P ( A ) = 1 - ( 1 - α ) t ,A est l'événement de une hypothèse nulle faussement rejetée. Ainsi, la probabilité d'avoir au moins un résultat de test positif va à l'encontre de 1αt

P(UNE)=1-(1-α)t,
UNE1comme vous le test a / b à plusieurs reprises. Si vous vous arrêtez simplement après le premier résultat positif, vous n'aurez montré que l'exactitude de cette formule. Autrement dit, même si l'hypothèse nulle est vraie, vous la rejetterez finalement. Le test a / b est donc le moyen ultime de trouver des effets là où il n'y en a pas.

Étant donné que dans cette situation, la corrélation et les tests multiples se maintiennent en même temps, la valeur de p du test dépend de la valeur de p de t . Donc, si vous atteignez enfin un p < α , vous resterez probablement dans cette région pendant un certain temps. Vous pouvez également le voir dans l'intrigue de @ Bernhard dans la région de 2500 à 3500 et de 4000 à 5000.t+1tp<α

Les tests multiples en soi sont légitimes, mais les tests par rapport à un fixe ne le sont pas. Il existe de nombreuses procédures qui traitent à la fois de la procédure de test multiple et des tests corrélés. Une famille de corrections de test est appelée le contrôle du taux d'erreur par famille . Ce qu'ils font, c'est d'assurer P ( A ) α .α

P(UNE)α.

αunej=α/t,
P(UNE)αP(UNE)<α0,05

(0,0,1)α=0,05

entrez la description de l'image ici

Comme nous pouvons le voir, l'ajustement est très efficace et démontre à quel point nous devons changer la valeur de p pour contrôler le taux d'erreur au niveau de la famille. Plus précisément, nous ne trouvons plus de test significatif, comme il se doit, car l'hypothèse nulle de @ Berhard est vraie.

P(UNE)α


Voici le code:

set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)

p.values <- numeric(n)
for (i in 5:n){
  p.values[i] <- binom.test(table(toss[1:i]))$p.value
}
p.values = p.values[-(1:6)]
plot(p.values[seq(1, length(p.values), 100)], type="l", ylim=c(0,0.1),ylab='p-values')
abline(h=0.05, lty="dashed")
abline(v=0)
abline(h=0)
curve(0.05/x,add=TRUE, col="red", lty="dashed")
tomka
la source
2
Cela fonctionne pour moi. Je vais devoir traduire cela en affaires pour faire passer mon message à mes aînés maintenant, mais c'est mon propre problème. Merci beaucoup
sgk
8

Si l'hypothèse nulle est vraie, les gens s'attendent souvent à ce que la valeur p soit très élevée. Ce n'est pas vrai. Si l'hypothèse nulle est vraie, alors p est une variable aléatoire uniformément distribuée. Cela signifie que, de temps en temps, il sera inférieur à 0,05 au hasard. Si vous regardez de nombreux sous-échantillons différents, la valeur p sera parfois inférieure à 0,05.

Pour faciliter la compréhension, voici une petite simulation dans R:

Cela lancera une pièce 10 000 fois et nous savons que c'est une pièce équitable:

set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)

À partir du 5ème lancer, cela effectuera un test binomial d'équité après chaque lancer et enregistrera les valeurs de p:

p.values <- numeric(n)
for (i in 5:n){
     p.values[i] <- binom.test(table(toss[1:i]))$p.value
}

Et cela tracera les valeurs de p l'une après l'autre:

plot(p.values, type="l")
abline(h=0.05)

entrez la description de l'image ici

Comme vous pouvez le voir, la valeur de p descend sous 0,05 à quelques reprises juste pour récupérer et finalement finir bien au-dessus de p = 0,05. Si nous arrêtions le procès chaque fois que p était "significatif", nous arriverions à la mauvaise conclusion. On pourrait dire: «Nous avons un échantillon d'environ plus de 4000 essais iid et p était inférieur à 0,05. Nous pouvons rapidement arrêter l'échantillonnage plus loin». Plus vous vérifiez fréquemment la valeur de p, plus vous êtes susceptible de vérifier à un creux aléatoire. Dans ce cas, nous avons généré les données sous leH0H0

(Juste pour être parfaitement ouvert, j'ai essayé plus d'une graine pour le générateur de nombres avant qu'il ne soit aussi clair que cet exemple, mais c'est juste à des fins éducatives. Si vous avez Rinstallé et exécuté, vous pouvez facilement jouer avec les nombres .)

Bernhard
la source
Merci pour l'expérience simple. Mais disons que j'ai arrêté le test à une telle étape (lorsque la valeur p est <0,05), que signifieront mes résultats? (à part le fait que c'est faux). Est-il possible pour moi de compenser en réduisant le seuil de valeur p?
sgk
+1 Notez les tests corrélés et les problèmes de tests multiples associés. Voir ma réponse étendue avec les options de réglage ci-dessous, basée sur votre (très bon) exemple.
tomka
αα
Mon point principal est celui du contrôle du taux d'erreurs familiales (FWER) ou du taux de fausses découvertes (FDR) ciblant tous deux l'erreur de type 1. Le contrôle des erreurs de type 2 est moins problématique dans les tests A / B en raison des échantillons généralement très volumineux.
tomka
p=0,05