Proč & Jak používat Bland-Altman plot pro testování A/B | Python + kód

Proč používat Bland-Altman plot

Bland-Altman plot pochází z lékařské odvětví, aby bylo možné porovnat opatření pro dva nástroje. Prvním cílem Johna Martina Bland & Douglas Altman bylo odpovědět na tuto otázku :

shodují se obě metody měření dostatečně úzce ? – D. G. ALTMAN a J. M. NEVÝRAZNÉ

Pokud je to tento případ, to znamená, že pokud máte dva nástroje, kde jedním z nich je nejmodernější na vysoké náklady a druhá je 10 krát levnější, výsledky získané nejlevnější metodou, jsou srovnatelné s referenčním a mohl by být nahrazen s dostatečnou přesností? Například, srdeční frekvence za předpokladu, $20 connected hodinky je dostatečně přesné, jako výsledek ekg ? Druhým cílem bylo vytvořit metodu, kde výsledky jsou snadno srozumitelné pro non-statistici.

V analytics, A/B testování (také známý jako Champion-Challenger) je společné metodiky testu porovnat výsledky nové akce / nové léčby / nový design / … na population_A na population_B s aktuální akci. Jakmile máme výsledky testu, musí být analyzovány a předloženy rozhodovacímu týmu, který je většinou složen z statistiků. Proto je graf Bland-Altman relevantní, protože porovná výsledky testu A/B na jednom grafu se všemi statistickými opatřeními zobrazenými srozumitelným způsobem.

Ve své knize, ale také ukázal, proč korelační koeficient, statistická test na mysli porovnání a regresní jsou nevhodné rozhodovat o dohodu dvou opatření, která by v našem testování A/B případ rozhodnout na výkonu challenger ve srovnání s jedním z šampionů.

data

Pro tento článek budu používat dataset k dispozici na Kaggle (pocházející z DataCamp projektu) s názvem „Mobilní Hry A/B Testování s Cookie Kočky“. Odkaz je v části Odkazy .

Cookie Cats je populární mobilní logická hra, kde jako hráč postupuje po úrovních, narazí na „brány“, které ho donutí nějakou dobu počkat, než bude pokračovat ve hře nebo provést nákup. V takovém odvětví je retence jednou z klíčových metrik a tým odpovědný za hru by viděl dopad, kdyby byla první brána přesunuta z úrovně 30 na úroveň 40 na retenci v 7 dny. Aby viděli chování takového pohybu, provedli test A / B a poskytli nám datovou sadu těchto výsledků. Uvidíme, jak na následující otázku odpoví děj Bland-Altman : „Jak analyzovat výsledky A / B na úrovni retence po 7 dnech, kdy čekací doba přechází z úrovně 30 na úroveň 40 ?“

dataset se skládá z 90.189 řádky, kde máme hráče unikátní id, A/B test verze (čekací doba na gate_30 / gate_40), hra kol‘ součet retention_1 je logická říkám, že pokud hráč vrátil na další den a retention_7 je logická říkám, že pokud hráč se vrátil po 7 dnů. Abychom mohli odpovědět na naši otázku, je třeba provést nějaké čištění. Budu si klient s retention_1 = True (protože pokud retention_1=False, retention_7 je Nepravdivé stejně), počet herních kol, ≥ 30 (protože když nepůjdou do 30, nebudou ovlivněny brány) a počet herních kol < 170 (protože pokud vezmeme v úvahu dobu trvání hry = 5 minut, pokud hráč hraje 2 hodiny denně během 7 dnů se bude hrát 120*7/5 = 168 hry. Vyšší číslo by bylo považováno za normální použití). Po tomto filtru se datová sada skládá z 20.471 řádků jako Obrázek1 níže. Datová sada je navíc rovnoměrně vyvážená mezi gate_30 & gate_40.

1. CookieCats dataset

Jak je postaven Bland-Altman plot

Budeme vidět v této sekci, jak se přizpůsobit původní Bland-Altman plot s cílem uplatnit je na A/B testování. Nejprve vysvětlím, jak je pozemek postaven v původní verzi, a poté vysvětlím, jak jej postavit pomocí dat našich A / B testů.

z Důvodu, že původní Bland-Altman plot porovnat měření 2 nástroje, mají stejnou délku záměrné. Například, měření tepové frekvence mezi 20 dolarů spojit hodinky a ekg, opatření jsou přijata na stejnou dobu za stejných podmínek, které vedou k mají stejný počet měření pro 2 metody. Můžeme tedy reprezentovat řádek každé datové sady jako zážitek, jako na příkladu na Obrázku2 níže.

Obrázek 2. Měření nástroje na zkušenost

zde se setkáváme s prvním „bodem bolesti“. Test A / B je považován za jedinečný zážitek, zatímco jak vidíme výše, k vybudování pozemku potřebujeme několik zkušeností. Abychom toto omezení obešli, vytvoříme z testu A/B několik zaváděcích vzorků, které mají stejnou & různou délku.

vygenerujeme 300 nejedinečných náhodných celých čísel mezi 200 a 1.000. Tato celá čísla budou představovat délku každého zaváděcího vzorku a aby bylo možné využít statistické vlastnosti bootstrapu, každé nejedinečné náhodné celé číslo je duplikováno 50krát. Tato čísla se používají k tomu, aby měla rozmanitost vzorků, ale je libovolná a délka závisí na velikosti původní datové sady. Tyto 15.000 (300*50) bootstrapped vzorky o délce mezi 200 a 2.000 jsou získány pomocí náhodných vzorků s náhradou z původního datového souboru a jsou spojeny dohromady. Může být reprezentován jako Číslo3.

Obrázek 3. Bootstrapped dataset budovy

následující kód vytváří bootstrapped dataset z původních dat (pozor, to může nějakou dobu trvá, protože bootstrapped dataset má délku 9.184.350 řádky {změnou random_state, budeme mít v průměru (((200+1.000)/2)*300*50 = 9.000.000 řádky}).

poté seskupíme podle n_sample (id každého 15.000 bootstrapped vzorek), n_sample_2 (délka každého bootstrapped vzorku) a verze tak, aby součet retence hráče na 7 dní za brány jako na obrázku 4.

Figure4. Bootstrapped dataset po group by

můžeme číst tento výstup jako: bootstrapped vzorku n°0/14.999 je složen z 564 řádky, kde 98 hráči jsou stále hraje na 7 dní s čekací doba na gate_30 při 105 hráčů stále hrají na 7 dní s čekací doba na gate_40.

poté použijeme statistickou vlastnost boostrap, která říká, že průměr vzorku bootstrapu je dobrým odhadcem skutečného průměru distribuce. Vytvoříme skupinu podle n_sample_2 a verze, abychom měli pro délku každého jedinečného vzorku průměrný počet retencí hráče na 7 dní na bránu, jak je na obrázku 5.

Figure5. Průměrný počet hráčů, kteří stále hrají po 7 dnech pro každou jedinečnou délku vzorku a na brány

tento výstup můžeme číst jako: pokud má vzorek 200 řádků, je v průměru 34.60 hráčů, kteří stále hrají v 7 dnech s čekací dobou na gate_30, zatímco 34.38 hráčů, kteří stále hrají v 7 dnech s čekací dobou na gate_40.

pak rozbalíme databázi, abychom měli datovou sadu v jasnějším formátu jako Číslo6.

Figure6. Unstacked verze datového souboru

V této fázi máme všechny potřebné informace, aby došlo k vytvoření Bland-Altman plot a reprezentace souboru je stejný jako v Obrázek 2 výše.

děj Bland-Altman se skládá ze 2 os. Osa x je průměr obou metod k porovnání. Tak to je pro každý řádek: (gate_30i + gate_40i) / 2 ||| Na ose y je rozdíl mezi metodou a a metodou B. Takže to je pro každý řádek: (gate_30i – gate_40i) ||| A tady je druhý „bod bolesti“, které máme. Zachováním osy y tak, jak je, zvýšení velikosti vzorků zvýší variabilitu rozdílů. Výsledkem je, že statistická míra, kterou získáme později, bude nadměrně vážena největšími vzorky. Abychom toto omezení obešli, představíme osu y v procentech . Na to, výpočet y je pro každý řádek: ((gate_30i – gate_40i)*100 / (( gate_30i + gate_40i)/2) ||| dataset vypadá Obrázek7.

Obrázek7. x & osa y

musíme zkontrolovat, zda je osa y normálně rozložena, abychom mohli důvěřovat intervalu spolehlivosti, který se zobrazí. Můžete to posoudit pomocí testu shapiro-wilk nebo alespoň histogramem. Pokud distribuce není normální, můžete provést transformaci, jako je logaritmická transformace. V našem případě považuji distribuci za normální.

Figure8. Histogram osy y

Bland-Altman se skládá ze 3 řádků (viz Obr.9):

  • průměrné hodnoty y
  • y je horní mez intervalu spolehlivosti (95% vzhledem k 1.96)
  • y dolní mez intervalu spolehlivosti (na 95%)

Figure9. Hodnoty Bland-Altman plot

Jsme dali dohromady balíček pyCompare umožňuje čerpat Bland-Altman plot na velmi snadný způsob, aniž by museli budovat db:

nejprve trvá metoda a (šampion) a poté metoda B (vyzyvatel). Pak, pokud procento = True, automaticky provede výpočet, který jsme provedli výše. Existují některé další parametry, o kterých budeme diskutovat později.

jak interpretovat graf Bland-Altman pro test a / B

tady jsme ! Zde je obrázek z Bland-Altman plot pro A/B testování generovaný kód výše:

Figure10. Bland-Altman plot použita pro A/B testování

za Prvé, a tím je interval spolehlivosti (světle modrý pruh) jsou jiné než 0 (vyšší v našem případě). Což znamená, že úroveň retence (pojmenovaná bias v původním dokumentu) gate_30 a gate_40 se výrazně liší. Z důvodu, že 2.93 > 0 to znamená, že > B < — > Mistr > Challenger a jako výsledek, že čekací doba na gate_30 poskytuje větší zadržování, než čekací doby na gate_40.

dva lososa bary představují interval spolehlivosti na 95% (pojmenované limit dohody v původní papírové), říká, že jsme přesvědčeni, že 95% hodnot bude mezi . V našem příkladu je to velmi silné, protože můžeme říci, že retence gate_30 bude téměř vždy větší než retence gate_40.

jak vidíte, nad horním proužkem lososa jsou 2 hodnoty a 4 pod dolním proužkem, což je 6/300 = 0,02 < 0.05 takže díky, že jsme si jisti, že 95% hodnot leží ve 2 hranice, 5% může být vyšší nebo nižší, a v našem případě to představuje 2%, pak je to naprosto normální 😉

V pyCompare balíček je parametr limitOfAgreement, který si klade za cíl změnit hranice důvěry. Zde by byla relevantní otázka: „v jakém procentu si mohu být jistý, že retence gate_30 bude vždy větší než retence gate_40 ?“Na tuto otázku odpovědět, nejnižší hranice musí být roven 0, takže musíme najít správnou hodnotu v, aby byly 0, jak můžeme vidět v kódu níže, které poskytují Figure11:

Figure11. Výstup při změně parametru limitOfAgreement

vidíme, že když limitOfAgreement = 1.55, hranice je téměř rovna 0. Pak musíme v normální distribuční tabulce zkontrolovat hodnotu na 1,55, což je 0,9394, takže jsme si jisti ((1-0.9394)*2)*100 = 87.88%, že uchovávání gate_30 bude vždy větší, než jeden z gate_40

poslední bod, který chcete přidat, je, že bez ohledu na průměrné hodnoty vzorku jsou rovnoměrně zastoupeny na pozemku, což znamená, že výklad děláme jsou generalizované bez ohledu na velikost vzorku. Skutečně, když jsme viděli jakýsi kuželovitý zastoupení hodnot jsme mohli konstatovat, že velikost vzorku má vliv na výsledky, takže nemůžeme mít platný výklad.

závěr

viděli jsme, proč může být relevantní použít graf Bland-Altman, abychom měli jeden pohled na výsledky testu A / B na jednoduchém grafu, jak vytvořit graf z testu A/B a jak jej interpretovat. To funguje pouze v případě normality rozdílu, bude však nutné data transformovat.

kromě toho jsem zkontroloval aplikaci a brány se zdají být na gate_40, zatímco jsme dokázali, že retence v 7 dnech byla lepší na 30. V tomto případě to ukazuje, že retence možná není nejlepší metrikou, kterou je třeba dodržovat ve srovnání se ziskovostí !

Altman D. G. a J. M. Bland, Měření v Medicíně: Analýza Metoda Srovnání Studií, Statistik 32 (1983) 307-317

https://projects.datacamp.com/projects/184 NEBO https://www.kaggle.com/yufengsui/mobile-games-ab-testing

Altman D. G. a J. M. Bland, Statistické Metody pro Posuzování Dohody mezi Dvě Metody Klinické Měření, Lancet 327 (1986) 307-310

D. Giavarina, Porozumění Bland Altmanova analýza, Biochemia Medica 25 (2015) 141-151

You might also like

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.