Tafel links Introduction Hypothesis testing 2.1 Introduction 2.2 Bayesian statistics 2.3 Test martingales 2.4 p-values 2.5 Optional Stopping and Peeking 2.6 Combining p-values and Optional Continuation 2.7 A/B testing Safe Tests 3.1 Introduction 3.2 Classical t-test 3.3 Safe t-test 3.4 χ2 -test 3.5 Safe Proportion Test Safe Testing Simulations 4.1 Introduction and 4.2 Python Implementation 4.3 Comparing the t-test with the Safe t-test 4.4 Comparing the χ2 -test with the safe proportion test Mixture sequential probability ratio test 5.1 Sequential Testing 5.2 Mixture SPRT 5.3 mSPRT and the safe t-test Online Controlled Experiments 6.1 Safe t-test on OCE datasets Vinted A/B tests and 7.1 Safe t-test for Vinted A/B tests 7.2 Safe proportion test for sample ratio mismatch Conclusion and References 4 Veilige simulaties 4.1 Inleiding In deze sectie vergelijken we de klassieke t-test met de veilige t-test, en de χ2 test met de veilige verhoudingstest.Een grondige bibliotheek voor veilige testen is ontwikkeld in R [LTT20]. Met het doel van toenemende adoptie op het gebied van gegevenswetenschap hebben we de code voor de veilige t-test en de veilige verhoudingstest naar Python gebracht. 3.2 Implementatie van Python Hoewel de logica van de veilige t-test hetzelfde blijft, waren er een aantal inefficiënties in de oorspronkelijke code die moeten worden aangepakt om met grote steekproefgroottes te werken. De oorspronkelijke functie voert een lineaire zoektocht uit van 1 naar een willekeurig hoog getal. Voor elke mogelijke steekproefgrootte in het bereik berekent de functie de E-waarde op basis van de steekproefgroottes, graden van vrijheid en de effectgrootte. De loop breekt wanneer de E-waarde groter is dan 1/α. Aangezien dit een monotone toenemende functie is, versnelt een binaire zoektocht de berekening aanzienlijk, waardoor de computationele complexiteit van O(n) naar O(log n) wordt verminderd. De volgende snelheidsverbetering die nodig is, is het berekenen van de stoptijd voor een vermogen van 1 − β. Dit wordt bepaald door simulatie van gegevens die verschillen door de minimale effectgrootte. Tijdens de N-simulaties worden gegevens van lengte m afzonderlijk gestreamd om het punt te bepalen waarop de E-waarde 1/α overschrijdt. Nogmaals, dit proces wordt gedaan door middel van een lineaire zoektocht. Om deze functie te optimaliseren, wordt de berekening van de martingale parallel over de hele vector van lengte m. De berekeningscomplexiteit blijft O(Nm), maar de vectorberekening vindt plaats in Numpy-code, in tegenstelling tot een Python-loop. De uiteindelijke wijziging is niet in het verminderen van de computationele complexiteit, maar in het verbeteren van de mogelijkheden van de veilige verhoudingstest. Deze test werd geschreven in R als een test met twee steekproeven met vaste batchgroottes. Voor ons gebruik geval werd een test met één steekproef met variabele batchgroottes vereist om de mismatch ratio van de steekproef te detecteren, en werd daarom ontwikkeld voor het Python-pakket. 4.3 Vergelijking van de t-test met de Safe t-test De eenvoudigste manier om de veilige t-test te begrijpen is om deze te vergelijken met de klassieke alternatieven. We voeren simulaties uit van een effectgrootte δ en een nullhypothese H0 : δ = 0. Door het significantieniveau α = 0,05 in te stellen, kunnen we een effectgrootte δ simuleren tussen twee groepen om te bepalen wanneer de test wordt gestopt. Als de gesimuleerde E-waarde 1/α = 20 overschrijdt, wordt de test gestopt met H0 afgewezen. Als er geen effect wordt gedetecteerd, wordt de test gestopt bij een kracht van 1 − β = 0,8, omdat deze kracht gebruikelijk is binnen de industrie. Figuur 3 toont simulaties van stoptijden en beslissingen van de veilige test in vergelijking met de t-test. Zoals we kunnen zien uit de gemiddelde stoptijden in Figuur 3, gebruikt de veilige t-test minder dan 500.000 monsters om statistisch geldig resultaat te leveren, terwijl de klassieke t-test meer dan 600.000 vereist. Echter, de monstergrootte die nodig is om de 1 − β-kracht te bereiken voor de veilige t-test is ongeveer 850.000, veel groter dan die van de klassieke t-test. Men kan vragen of het acceptabel is om gewoon de veilige t-test uit te voeren tot de klassieke t-test monstergrootte. Figuur 4 (links) toont de impact van deze actie op de statistische fouten. Bij voltooiing van de test voldoen zowel de klassieke t-test als de veilige t-test aan de vereiste dat de Type I-fouten onder α = Net als de algemene conclusies van de twee tests is het interessant om de experimenten te overwegen waarvoor de klassieke t-test en de veilige t-test niet overeenkomen. Zoals te zien is in Figuur 4 (rechts), terwijl beide tests bijna 80% vermogen hebben, doen ze dat op heel verschillende manieren. Veel simulaties waarvoor de klassieke t-test H0 accepteert worden door de veilige t-test afgewezen en vice versa. Dit verschil in resultaten zal waarschijnlijk moeilijk zijn om te internaliseren voor beoefenaars die overwegen De t-test is de bron van de waarheid voor hun platform. Terwijl Figuur 3 de veilige stoptijden voor een vaste effectgrootte evalueert, is het belangrijk om de resultaten voor een breed scala aan effectgroottes te overwegen.Om de resultaten van effectgroottes van 0.01 tot 0,3 te aggregeren, normaliseren we de stoptijden door t-teststoptijd. De plot van Figuur 5 toont zowel de gemiddelde stop van de veilige t-test en de steekproefgrootte die nodig is voor 80% vermogen. Gemiddeld gebruikt de veilige test 18% minder gegevens dan de t-test. Om dezelfde kracht van 80% te bereiken, gebruikt de veilige test echter 36% meer gegevens. Aangezien de meeste A/B-tests niet leiden tot de afwijzing van H0 [Aze+20], kan dit leiden tot langere experimenten in het algemeen voor beoefenaars. 4.4 Vergelijking van de χ2-test met de veilige verhoudingstest De resultaten van Figuur 6 zijn opmerkelijk vergelijkbaar met die gezien bij het vergelijken van de t-test en de veilige t-test in Figuur 3. De veilige test gebruikt opnieuw gemiddeld minder monsters dan zijn klassieke alternatief, terwijl de maximale stoptijd om de vereiste kracht te bereiken hoger is. Zoals te zien in Figuur 7, is de gemiddelde steekproefgrootte vereist voor de veilige verhoudingstest kleiner dan die van de χ2-test voor alle waarden van ε. Dit suggereert dat de veilige verhoudingstest concurrerend zal zijn met de χ2-test, zelfs voor het detecteren van kleine effecten. Kijkend naar deze resultaten, kan men twijfelen of het passend is om een prefix op basis van een onbekende effectgrootte in te stellen. In deze sectie hebben we de veilige t-test en de veilige verhoudingstest vergeleken met hun klassieke alternatieven. Er werd vastgesteld dat de gemiddelde steekproefgroottes voor de veilige t-test kleiner zijn dan die van de klassieke t-test voor een breed scala aan effectgroottes. Echter, de maximale steekproefgrootte kan veel groter zijn om dezelfde statistische kracht te bereiken. Bovendien zijn de gemiddelde steekproefgroottes van de veilige verhoudingstest kleiner dan die van de χ2-test. Deze bevindingen motiveren verdere aanneming van veilige tests in wetenschappelijke inspanningen. De auteur: 1 Daniel Beasley Author: 1 Daniel Beasley Dit document is verkrijgbaar onder de ATTRIBUTION-NONCOMMERCIAL-SHAREALIKE 4.0 INTERNATIONAL licentie. Dit papier is Onder de ATTRIBUTION-NONCOMMERCIAL-SHAREALIKE 4.0 INTERNATIONAL licentie. available on arxiv Beschikbaar in het archief