[PYTHON] Testmethode für Größenunterschiede zwischen Gruppen

http://gingi99.hatenablog.com/entry/2019/08/09/212415

Ich sah. Dieser Artikel enthielt eine leicht verständliche Erklärung der Details der Nichtübereinstimmung des Stichprobenverhältnisses.

Das Sample Ratio Mismatch sieht folgendermaßen aus:

Als ich untersuchte, warum dies geschah, war die Anzahl der dem A / B-Test zugewiesenen Behandlungsbenutzer signifikant geringer als die Anzahl der Kontrollbenutzer nach Beginn des Experiments. Nachdem wir die Ursache dafür identifiziert hatten (der Grund wird später bekannt gegeben) und sie korrekt überprüft hatten, konnten wir den erwarteten positiven Unterschied feststellen. Genau das nennen wir Sample Ratio Mismatch (SRM). Mit anderen Worten, die beiden für den A / B-Test zugewiesenen Kontroll- / Behandlungspopulationen sammelten die Probengrößen nicht in den erwarteten Anteilen, was zu fehlerhaften Ergebnissen führte.

Ich möchte testen, "ob die Probengrößen im erwarteten Verhältnis in den beiden Kontroll- / Behandlungspopulationen gesammelt wurden".

Dieser Artikel befasst sich mit dem Testen, ob die A / B-Testgruppe A und die Gruppe B 1: 1 sind. Die Testmethode ist ** "Konformitätstest" **.

https://bellcurve.jp/statistics/course/9494.html

Der Test kann mithilfe von scipy.stats.chisquare in Pythons scipy-Bibliothek durchgeführt werden. es kann.

Ich versuche als Beispiel einen A / B-Test durchzuführen Angenommen, Gruppe A hat 10.000 Benutzer und Gruppe B hat 9.900 Benutzer, stellen Sie sicher, dass dies das erwartete Verhältnis von 1: 1 ist.

import scipy
a_num = 10000
b_num = 9900
expect = (a_num + b_num)/2
observed_values=scipy.array([a_num, b_num])
expected_values=scipy.array([expect, expect])
scipy.stats.chisquare(observed_values, f_exp=expected_values)

Wenn Sie dies tun, erhalten Sie das Ergebnis "Power_divergenceResult (Statistik = 0.50525125628140703, pvalue = 0.4783981994489356)".

Die Statistik ist "0,503" und der p-Wert ist "0,47". Wenn das Signifikanzniveau 5% beträgt, kann es nicht verworfen werden, so dass ersichtlich ist, dass es keinen Unterschied zwischen den Stichproben in den Gruppen A und B gibt.

Versuchen Sie, Daten zu verwenden, die einen Unterschied zu machen scheinen.

a_num = 10000
b_num = 9000
expect = (a_num + b_num)/2
observed_values=scipy.array([a_num, b_num])
expected_values=scipy.array([expect, expect])
scipy.stats.chisquare(observed_values, f_exp=expected_values)

Es wird zu "Power_divergenceResult (Statistik = 52.63157894736842, pvalue = 4.023672190684225e-13)", und der p-Wert ist kleiner als 0.05, und es kann gesagt werden, dass es einen "Unterschied" gibt, dh, dass SRM auftritt.

Wenn Sie mit JavaScript arbeiten

Verwenden Sie die JS-Statistikbibliothek jstat.

Es ist notwendig, das Chi-Quadrat zu berechnen und sich auf die Verteilungstabelle zu beziehen.

const jStat = require('jstat');

const a = 10000
const b = 9000
const expected = (a+b)/2

const statistics = (a - expected)**2 / expected + (b - expected)**2 / expected
// 52.63157894736842

const df = 1
const pValue = 1 - jStat.chisquare.cdf(chi_2, df)
// 4.0234482412415673e-13

Referenz

Online-Tools https://www.gigacalculator.com/calculators/chi-square-calculator.php?test=goodnessoffit&data=15752+0.5%0D%0A15257+0.5

Diagnosing Sample Ratio Mismatch in Online Controlled Experiments: A Taxonomy and Rules of Thumb for Practitioners

Einige Tests https://toukei.link/programmingandsoftware/statistics_by_python/chisqtest_by_python/

Recommended Posts

Testmethode für Größenunterschiede zwischen Gruppen
[Python] Unterschied zwischen Funktion und Methode
[Python] Unterschied zwischen Klassenmethode und statischer Methode
Unterschied zwischen numpy.ndarray und list (Dimension, Größe)
Bayes Modellierung-Schätzung des Unterschieds zwischen den beiden Gruppen-
Zusammenfassung der Testmethode
Testautomatisierung für die Arbeit
Listenverkettungsmethode in Python, Unterschied zwischen list.extend () und dem Operator "+"