miért és hogyan kell használni a Bland-Altman plot A | B teszteléshez / Python + kód

miért használja a Bland-Altman plot

a Bland-Altman plot az orvosi iparból származik, hogy összehasonlítsa a két eszköz mérését. John Martin Bland & Douglas Altman első célja az volt, hogy megválaszolja ezt a kérdést :

a két mérési módszer elég szorosan egyezik-e ? – D. G. ALTMAN és J. M. BLAND

ha ez a helyzet, akkor ez azt jelenti, hogy ha két műszer van, ahol az egyik a technika állása magas költséggel, a második pedig 10-szer olcsóbb, akkor a legolcsóbb módszerrel kapott eredmények összehasonlíthatók-e a referenciával, és megfelelő pontossággal helyettesíthetők-e? Például a 20 dolláros csatlakoztatott óra által biztosított pulzusszám kellően pontos-e az elektrokardiogram eredményeként ? A második cél egy olyan módszer kidolgozása volt, ahol az eredmények könnyen érthetők a nem statisztikusok számára.

ban ben analitika, az A/B tesztelés (más néven Champion-Challenger) a teszt általános módszertana egy új művelet / új kezelés / új tervezés / … eredményeinek összehasonlítására population_A nak nek population_B az aktuális művelettel. Miután megkaptuk a teszt eredményeit, azokat elemezni kell, és be kell mutatni egy döntési csapatnak, amely többnyire nem statisztikusokból áll. Ezért a Bland-Altman-diagram azért releváns, mert összehasonlítja az A/B teszt eredményeit egy diagramon az összes érthető módon megjelenített statisztikai méréssel.

tanulmányukban azt is megmutatták, hogy a korrelációs együttható, az átlagos összehasonlítás statisztikai tesztje és a regresszió miért nem megfelelő két olyan intézkedés megegyezésének eldöntésére, amelyek A mi a/B tesztelési esetünkben döntenének a kihívó erejéről a bajnokhoz képest.

a felhasznált adatok

ehhez a cikkhez a Kaggle-n elérhető adatkészletet fogom használni (egy DataCamp projektből származik), az úgynevezett “mobil játékok a/B tesztelés Cookie macskákkal”. A link a hivatkozások részben található .

a Cookie Cats egy népszerű mobil kirakós játék, ahol játékosként halad a szinteken, “kapukkal” találkozik, amelyek arra kényszerítik, hogy várjon egy ideig, mielőtt folytatná a játékot vagy vásárolna. Egy ilyen iparágban a megtartás az egyik legfontosabb mutató, és a játékért felelős csapat látná a hatást, ha az első kaput a 30.szintről a 40. szintre mozgatnák a 7. napon. Hogy lássák egy ilyen lépés viselkedését, elvégeztek egy A / B tesztet, és megadták nekünk az eredmények adatkészletét. Látni fogjuk, hogy a Bland-Altman telek hogyan válaszol a következő kérdésre : “Hogyan elemezzük az A / B eredményeket a retenció szintjén 7 napon belül, amikor a várakozási idő a 30-as szintről a 40-es szintre halad ?”

az adatkészlet 90,189 sorból áll, ahol megvan a játékos egyedi azonosítója, az A/B teszt verziója (várakozási idő a gate_30 / gate_40-nél), a játékkörök összege, retention_1 egy logikai mondás, Ha a játékos másnap visszatért, a retention_7 pedig logikai mondás, ha a játékos 7 nap után jött vissza. Annak érdekében, hogy a releváns adatok megválaszolhassák kérdésünket, meg kell tisztítani. Csak a retention_1 = True (mert ha retention_1=False, retention_7 is False), a több játékkör (mert ha nem mennek 30 – ig, akkor a kapu nem érinti őket) és a játékkörök száma < 170 (mert ha figyelembe vesszük a játék időtartamát = 5 perc, ha egy játékos napi 2 órát játszik 7 nap alatt, akkor 120*7/5 = 168 játékot fog játszani. A nagyobb szám anormális használatnak tekinthető). A szűrő után az adatkészlet 20,471 sorból áll, az alábbi 1. ábra szerint. Ezenkívül az adatkészlet egyenlően kiegyensúlyozott a gate_30 & gate_40 között.

ábra 1. CookieCats adatkészlet

hogyan épül fel a Bland-Altman telek

ebben a szakaszban látni fogjuk, hogyan kell adaptálni az eredeti Bland-Altman telek annak érdekében, hogy alkalmazza azt egy A/B tesztre. Először is elmagyarázom, hogyan épül fel a telek az eredeti verziójában, majd elmagyarázom, hogyan kell felépíteni az A/B tesztek adataival.

mivel az eredeti Bland-Altman-diagram összehasonlítja a 2 műszer mérését, kialakításuk szerint azonos hosszúságúak. Például a 20 dolláros connect óra és az elektrokardiogram közötti pulzusmérés során az intézkedést ugyanabban az időben, ugyanolyan feltételekkel hajtják végre, amelyek ugyanolyan számú mérést eredményeznek a 2 módszer esetében. Tehát minden adatkészlet sorát tapasztalatként ábrázolhatjuk, mint az alábbi ábra példáján2.

ábra 2. Műszermérés tapasztalatonként

itt találkozunk az első “fájdalomponttal”. Az A / B tesztet egyedülálló élménynek tekintik, míg ahogy fentebb látjuk, több tapasztalatra van szükségünk a cselekmény felépítéséhez. Ennek a korlátozásnak a megkerüléséhez az A/B tesztből több bootstrapped mintát hozunk létre, amelyek mindkettő azonos & különböző hosszúságú.

300 nem egyedi véletlenszerű egész számot generálunk 200 és 1000 között. Ezek az egész számok képviselik a hossza minden Bootstrap minta és annak érdekében, hogy előnyös a bootstrap statisztikai tulajdonságait, minden nem egyedi véletlen egész ismétlődik 50-szer. Ezeket a számokat arra használjuk, hogy a minta sokfélesége legyen, de ez önkényes, és a hossza az eredeti adatkészlet méretétől függ. Ezeket a 15.000 (300*50) bootstraped mintákat, amelyek hossza 200 és 2.000 között van, véletlenszerű mintavétellel nyerik ki az eredeti adatkészletből, és összekapcsolják őket. Ez lehet ábrázolni, mint a Szám3.

ábra 3. Bootstrapped dataset building

a következő kód létrehozza a bootstrapped adatkészletet az eredeti adatokból (legyen óvatos, időbe telhet, mert a bootstrapped adatkészlet hossza 9.184.350 sor {a random_state megváltoztatásával átlagosan (((200+1.000)/2)*300*50 = 9.000.000 sorok}).

ezután csoportosítjuk n_sample (az egyes 15 azonosítója.000 bootstrapped sample), n_sample_2 (az egyes bootstrapped sample hossza) és Verzió annak érdekében, hogy a játékos retenciójának összege kapunként 7 nap legyen, mint a 4.ábrán.

ábra 4. Bootstrapped dataset után groupby

ezt a kimenetet a következőképpen olvashatjuk: a bootstrapped minta n 0/14.999 564 sorból áll, ahol 98 játékos még mindig 7 napon játszik, várakozási idővel a gate_30-nál, míg 105 játékos még mindig 7 napon játszik, várakozási idővel a gate_40-nél.

ezután a Boostrap statisztikai tulajdonságát használjuk, mondván, hogy a bootstrap minta átlaga jó becslő az eloszlás valódi átlagára. Készítünk egy csoportot n_sample_2 és version szerint annak érdekében, hogy minden egyedi minta hosszára megkapjuk a játékos megtartásának átlagos számát 7 naponként kapunként, mint az 5.ábrán.

5. ábra. Átlagos játékosok száma még mindig játszik 7 nap minden egyedi minta hossza és egy kapuk

tudjuk olvasni ezt a kimenetet, mint: amikor a minta 200 sorból áll, átlagosan 34,60 játékos van, akik még mindig 7 napon játszanak, várakozási idővel a gate_30-nál, míg 34,38 játékos, akik még mindig 7 napon játszanak, várakozási idővel a gate_40-nél.

ezután kibontjuk az adatbázist annak érdekében, hogy az adatkészlet világosabb formátumban legyen, mint a 6.ábra.

ábra 6. Az adatkészlet

Unstacked változata ebben a szakaszban minden szükséges információval rendelkezünk a Bland-Altman plot felépítéséhez, és az adatkészlet ábrázolása megegyezik a fenti 2.ábrával.

a Bland-Altman telek 2 tengelyből áll. Az x tengely a két összehasonlítandó módszer átlaga. Így van ez minden sorban: (gate_30i + gate_40i ) / 2 ||| Tehát minden sorban: (gate_30i-gate_40i) / / / és itt van a második “fájdalompont”. Az y tengely megtartásával a minták méretének növekedése növeli a különbségek változékonyságát. Ennek eredményeként a később megszerzett statisztikai mértéket a legnagyobb minták túlsúlyozzák. Ennek a korlátozásnak a megkerüléséhez az y tengelyt százalékban képviseljük . Ehhez az y kiszámítása minden sorra vonatkozik: ((gate_30i-gate_40i)*100 / (( gate_30i + gate_40i)/2) | | | az adatkészlet úgy néz ki, mint a 7.ábra.

7. ábra. x &y tengely

ellenőriznünk kell, hogy az y tengely normálisan eloszlik-e annak érdekében, hogy megbízhassunk a megbízhatósági intervallumban, aki megjelenik. Ezt a shapiro-wilk teszt segítségével vagy legalább egy hisztogrammal értékelheti. Ha az eloszlás nem normális, akkor elvégezhet egy átalakítást, például logaritmikus átalakítást. Esetünkben az eloszlást normálisnak tartom.

8. ábra. Az y tengely hisztogramja

a Bland-Altman 3 sorból áll (lásd az Ábrát9):

  • az Y átlagértékei
  • a konfidencia intervallum y felső határa (itt 95% – ban az 1.96-ot tekintve)
  • a konfidencia intervallum y alsó határa (a 95%)

ábra 9. Értékek a Bland-Altman telek

mi össze, a csomag pyCompare lehetővé teszi, hogy dolgozzon a Bland-Altman telek egy nagyon egyszerű módja, anélkül, hogy építeni db:

először az A módszer (a bajnok), majd a B módszer (a kihívó). Ezután, ha százalék = igaz, akkor automatikusan elvégzi a fenti számítást. Vannak más paraméterek, amelyeket később tárgyalunk.

hogyan kell értelmezni a Bland-Altman telek az A / B teszt

itt vagyunk ! Itt látható a Bland-Altman diagram ábrája a fenti kód által generált A / B teszteléshez:

ábra 10. Bland-Altman diagram az A/B teszthez

először is, az átlag és az átlag konfidencia intervalluma (Világoskék csík) eltér a 0-tól (esetünkben magasabb). Ami azt jelenti, hogy a gate_30 és a gate_40 retenciós szintje (amelyet az eredeti dokumentumban előítéletnek neveznek) jelentősen eltér. Mivel a 2.93 > 0 azt jelenti, hogy a > B < — > Champion > Challenger és ennek eredményeként a várakozási idő a gate_30 nyújt nagyobb visszatartás, mint a várakozási idő a gate_40.

a két lazacrúd 95% – os konfidenciaintervallumot képvisel (az eredeti dokumentumban megnevezett egyetértési határ), mondván, hogy meggyőződésünk, hogy az értékek 95% – a között lesz . Példánkban ez nagyon erős, mert azt mondhatjuk, hogy a gate_30 megtartása szinte mindig nagyobb lesz, mint a gate_40é.

mint látható, 2 érték van a felső lazaccsík felett, 4 pedig az alsó Alatt, ami 6/300 = 0,02 < 0.05 tehát annak köszönhetően, hogy biztosak vagyunk abban, hogy az értékek 95% – a A 2 határon belül van, 5% lehet felett vagy alatt, és esetünkben 2% – ot képvisel, akkor ez teljesen normális 😉

a pyCompare csomagban van a paraméter limitOfAgreement aki a bizalom határainak megváltoztatására törekszik. Itt egy releváns kérdés lenne : “milyen százalékban lehetek biztos abban, hogy a gate_30 megtartása mindig nagyobb lesz, mint a gate_40 ?”A kérdés megválaszolásához a legalacsonyabb határnak 0-nak kell lennie, ezért meg kell találnunk a megfelelő értéket ahhoz, hogy 0 legyen, amint azt az alábbi kódban láthatjuk, amely megadja az Ábrát11:

ábra 11. Kimenet a limitOfAgreement paraméter

azt látjuk, hogy amikor limitOfAgreement = 1,55, a határ majdnem egyenlő 0. Ezután a normál eloszlási táblázatban ellenőriznünk kell az 1,55 értéket, amely 0,9394, tehát biztosak vagyunk abban, hogy ((1-0.9394)*2)*100 = 87.88%, hogy a gate_30 megtartása mindig nagyobb lesz, mint a gate_40

az utolsó pont, amelyet hozzá kell adni, hogy bármi legyen is a minta átlagos értéke, egységesen vannak ábrázolva a diagramon, ami azt jelenti, hogy az általunk készített értelmezés általánosítva van, függetlenül a minta méretétől. Valóban, ha láttuk volna az értékek egyfajta kúpos ábrázolását, arra a következtetésre juthattunk volna, hogy a minta mérete hatással van az eredményekre, így nem lehet érvényes értelmezésünk.

következtetés

láttuk, hogy miért lehet releváns a Bland-Altman-diagram használata annak érdekében, hogy egy egyszerű ábrán egy nézet legyen az A/B teszt eredményeiről, hogyan lehet létrehozni a cselekményt egy A/B tesztből, és hogyan kell értelmezni. Ez csak a különbség normalitása esetén működik, azonban az adatok átalakítására lesz szükség.

ezenkívül ellenőriztem az alkalmazást, és úgy tűnik, hogy a kapuk a gate_40-en vannak, miközben bebizonyítottuk, hogy az 7 napok megtartása jobb volt az 30-nál. Ebben az esetben azt mutatja, hogy a megtartás talán nem a legjobb követendő mutató a jövedelmezőséghez képest !

D. G. Altman és J. M. Bland, mérés az orvostudományban: módszer-összehasonlító vizsgálatok elemzése, a statisztikus 32 (1983) 307-317

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

D. G. Altman és J. M. Bland, statisztikai módszerek a klinikai mérés két módszere közötti egyetértés értékelésére, The Lancet 327 (1986) 307-310

D. Giavarina, understanding nyájas Altman elemzés, Biochemia Medica 25 (2015) 141-151

You might also like

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.