[PYTHON] Bayesian Statistics Hypothesis Test

Bayesian Statistics Hypothesis Test

In diesem Artikel werde ich eine Methode zum Testen von Hypothesen mit Bayes'schen Statistiken vorstellen und schließlich tatsächlich mit Python testen. Ich bin ein Anfänger sowohl in der Bayes'schen Statistik als auch in Python. Bitte kommentieren Sie, ob der Inhalt Mängel aufweist.


1. Was ist ein Hypothesentest?

$$ Grob gesagt ist ein Hypothesentest eine Hypothese, dass ein unbekannter Parameter $ \ theta $ zu einem bestimmten Intervall $ I_i $ gehört. Ist es in Ordnung, eine Hypothese $ H_i $ aufzustellen und die Hypothese $ H_i $, dh einen unbekannten Parameter, zu übernehmen? Es ist eine Methode, um zu analysieren, ob gesagt werden kann, dass $ \ theta $ zum Intervall $ I_i $ gehört.

Die folgenden drei Methoden sind typisch für die Bayes'sche Statistik.

Unterhalb von $$ wird die Wahrscheinlichkeitsvariable $ X $ Wahrscheinlichkeitsfunktion durch $ p (X) $ dargestellt, und die Wahrscheinlichkeit, dass das Ereignis $ X $ durch $ P (X) $ dargestellt wird. Wenn Sie $ \ Omega $ als Beispielraum verwenden, gibt $ A \ bot B $ an, dass $ A \ cap B = \ phi $ für die Menge $ A, B $ gilt.

2. Test mit posteriorer Wahrscheinlichkeit

Die Idee des Tests durch Bewertung der Ex-post-Wahrscheinlichkeit ist sehr einfach. Betrachten Sie beispielsweise die folgende Hypothese.

\left\{
\begin{split}
    H_0: &q \in I_0 \\
    H_1: &q \in I_0 \\
    &\vdots         \\
    H_k: &q \in I_k
\end{split}
\right.

$$ (Bitte beachten Sie jedoch, dass $ I_i \ subset \ Omega $ und $ I_i $ Speicherplatz miteinander teilen können.)

$$ Zu diesem Zeitpunkt, wenn das Ereignis $ X $ realisiert wird, sind die hinteren Wahrscheinlichkeiten, die die Hypothese $ H_i (i = 0, 1, \ dots k) $ gilt, unterschiedlich.

 P(H_i|X) = P(\theta \in I_i|X) = \int_{I_i} p(\theta|X) d\theta

Es wird sein.

Wenn $ P (H_i | X) $ groß genug ist (nahe 1), kann die Hypothese $ H_i $ übernommen werden, und wenn sie klein ist (nahe 0), kann die Hypothese $ H_i $ zurückgewiesen werden.

3. Test durch posteriores Odds Ratio

Als nächstes folgt ein Test unter Verwendung des posterioren Odds Ratio. Sie können im posterioren Wahrscheinlichkeitstest so viele Hypothesen aufstellen, wie Sie möchten, aber im posterioren Odds Ratio-Test werden nur zwei Hypothesen verwendet.

Betrachten Sie die folgende Hypothese.

\left\{
\begin{split}
    H_0: q \in I_0 \\
    H_1: q \in I_1
\end{split}
\right.

$$ Hier werden $ I_0 $ und $ I_1 $ so gesetzt, dass $ I_0 \ bot I_1, I_0 \ cup I_1 = \ Omega $ gilt. Auf diese Weise kann einer von $ H_0 $ und $ H_1 $ die Nullhypothese und der andere die Alternativhypothese sein.

Das Ex-post-Facto-Odds-Ratio beträgt

\begin{split}
Post-hoc-Quotenverhältnis&= \frac{P(H_0|X)}{P(H_1|X)} \\
			 &= \frac{P(\theta \in I_0|X)}{P(\theta \in I_1|X)} \\
			 &= \frac{\int_{I_0}p(\theta|X)d\theta}{\int_{I_1}p(\theta|X)d\theta}
\end{split}

Es wird durch $$ definiert. Wenn das hintere Quotenverhältnis ausreichend größer als 1 ist, wird $ H_0 $ übernommen, und wenn es ausreichend kleiner ist, wird $ H_1 $ übernommen.

$ Das Obige ist die Testmethode unter Verwendung des posterioren Odds Ratio, aber es gibt einige Probleme, wenn man bedenkt, dass die posteriore Verteilung durch die vorherige Verteilung beeinflusst wird. Wenn die vorherige Verteilung für eine der Hypothesen äußerst günstig ist, wird die hintere Verteilung möglicherweise nicht korrekt getestet, um die Auswirkungen der vorherigen Verteilung widerzuspiegeln. Zum Beispiel in der RealitätH_1$Ist richtigH_0Unter der Annahme einer überwiegend günstigen vorherigen VerteilungP(H_0|X)Ist größer als es wirklich istP(H_1|X)Wird unterschätzt und das hintere Quotenverhältnis kann überschätzt werden. Um dies zu vermeiden, können wir den Bayes'schen Faktor verwenden.

4. Bayes'scher Faktortest

$$ Sofort wird der Bayes'sche Faktor $ B_ {01} $ durch die folgende Formel definiert.

\begin{split} B_{01} &=Post-hoc-Quotenverhältnis\div Pre-Odd Ratio\\
          &= \frac{P(H_0|X)}{P(H_1|X)} \div \frac{P(H_0)}{P(H_1)} \\
          &=\frac{\int_{I_0}p(\theta|X)d\theta}{\int_{I_1}p(\theta|X)d\theta} \div \frac{\int_{I_0}p(\theta)d\theta}{\int_{I_1}p(\theta)d\theta}
\end{split}

Betrachten wir nun, warum diese Bayes'sche Faktorbewertung das Problem des posterioren Odds Ratio-Tests vermeidet.

Angenommen, die Einstellung der vorherigen Verteilung von $$ ist für $ H_0 $ überwiegend vorteilhaft, und das Pre-Odds-Verhältnis beträgt 100 und das Post-Odds-Verhältnis 20. Zu diesem Zeitpunkt wird $ H_0 $ basierend auf dem posterioren Quotenverhältnis in den Test übernommen. Nur für den Fall, wenn Sie darüber nachdenken, was mit dem Test nach der Einrichtung passiert, ist es $ P (H_0 | X) \ simeq 0,95 $, und es kann gesagt werden, dass $ H_0 $ auch hier übernommen wird. Wenn Sie jedoch den Bayes'schen Faktor $ B_ {01} $ berechnen, erhalten Sie $ B_ {01} = 0,2 $. Der Wert des Bayes-Faktors wird anhand der unten gezeigten Bewertungskriterien von Jeffreys bewertet. Da es sich um $ 1/10 \ le 0.2 \ le 1/3 $ handelt, unterstützen wir in diesem Fall die alternative Hypothese $ H_1 $ voll und ganz.

無題.png

[Quelle: https://www.slideshare.net/masarutokuoka/mcmc-35640699]

Das obige Beispiel ist extrem, aber der tatsächliche Test unter Verwendung des Bayes-Faktors kann zu einer anderen Schlussfolgerung führen als der Fall der Verwendung des posterioren Odds Ratio, und der Test unter Verwendung des Bayes-Faktors wird stärker von der vorherigen Verteilung beeinflusst. Es wird angenommen, dass es schwierig ist, eine falsche Schlussfolgerung zu ziehen, indem die Größe verkleinert wird.

5. Testen Sie die Beispieldaten tatsächlich mit Python

Ich habe tatsächlich die hintere Wahrscheinlichkeit, das hintere Quotenverhältnis und den Bayes-Faktor berechnet und den Hypothesentest ausprobiert. Dieses Mal haben wir der Einfachheit halber eine Beta-Verteilung als vorherige Verteilung angenommen und einen Hypothesentest an einem Modell durchgeführt, das der Bernoulli-Verteilung folgt.

Definieren Sie zunächst eine Funktion, die Beispieldaten (Daten), Hyperparameter der vorherigen Verteilung (a0, b0) und Intervall (I) als Argumente verwendet und die hintere Wahrscheinlichkeit (post_prob), das hintere Odds Ratio (post_odds_ratio) und den Bayes'schen Faktor (BF) zurückgibt. Hat.

import scipy.stats as st

def ppb(data, a0, b0, I):
    n = data.size
    y = data.sum()
    pre_p0 = st.beta.cdf(I[1], a0, b0) - st.beta.cdf(I[0], a0, b0)
    pre_p1 = 1 - pre_p0
    post_p0 = st.beta.cdf(I[1], y + a0, n - y + b0) - st.beta.cdf(I[0], y + a0, n - y + b0)
    post_p1 = 1 - post_p0
    post_prob = post_p0
    post_odds_ratio = post_p0 / post_p1
    BF = post_odds_ratio * pre_p1 / pre_p0
    return post_prob, post_odds_ratio, BF

Wir haben dann zufällig Daten aus der Bernoulli-Verteilung mit dem Parameter p = 0,7 generiert, um eine Stichprobe mit einer Stichprobengröße von 100 zu generieren.

import numpy as np

p = 0.7
n = 100
np.random.seed(0)
data = st.bernoulli.rvs(q, size=n)

Für diese Daten der Hyperparameter

Wir haben den Fall von analysiert. Das als Nullhypothese verwendete Intervall (I) ist I = [0,6, 0,8].

a0 = [1,2,3]
b0 = [1,5,2]
I = [0.6,0.8]
s = ['EIN','ich','C.']

for i in range(len(a0)):
    a, b, c = ppb(data, a0[i], b0[i], I)
    print('{}) \n hintere Wahrscheinlichkeit: {:.5f} \n Post-hoc-Quotenverhältnis: {:.5f} \n Bayes-Faktor: {:.5f}'.format(s[i],a,b,c))

Ausführungsergebnis

EIN)
Post-hoc-Wahrscheinlichkeit: 0.79632
Post-hoc-Quotenverhältnis: 3.90973
Bayes-Faktor: 15.63891
ich)
Post-hoc-Wahrscheinlichkeit: 0.93228
Post-hoc-Quotenverhältnis: 13.76698
Bayes-Faktor: 336.00387
C.)
Post-hoc-Wahrscheinlichkeit: 0.81888
Post-hoc-Quotenverhältnis: 4.52127
Bayes-Faktor: 8.62195

Wenn hier anhand der zuvor gezeigten Bewertungskriterien des Bayes'schen Faktors von Jeffreys getestet wird, wird der Schluss gezogen, dass a) die Nullhypothese stark unterstützt wird, b) die Nullhypothese sehr stark unterstützt wird und c) die Nullhypothese ausreichend unterstützt wird. Geschah. Da wir den wahren Wert von p auf 0,7 setzen, können wir sagen, dass wir vernünftige Schlussfolgerungen gezogen haben.

Wenn Sie sich das Beta-Verteilungsdiagramm unten ansehen, ist es am wahrscheinlichsten, dass a) von der vorherigen Verteilung betroffen ist.

beta.png

Das Bild unten ist eine tatsächliche Zeichnung des posterioren Verteilungsdiagramms. Sicherlich scheint b) von der vorherigen Verteilung im Vergleich zu a) und c) stark betroffen zu sein.

事後分布.png

Wenn nur der Nullhypothesenabschnitt auf [0,65, 0,75] geändert wurde, wurden die folgenden Ergebnisse erhalten.

EIN)
Post-hoc-Wahrscheinlichkeit: 0.34440
Post-hoc-Quotenverhältnis: 0.52532
Bayes-Faktor: 4.72784
ich)
Post-hoc-Wahrscheinlichkeit: 0.57232
Post-hoc-Quotenverhältnis: 1.33818
Bayes-Faktor: 74.33720
C.)
Post-hoc-Wahrscheinlichkeit: 0.36755
Post-hoc-Quotenverhältnis: 0.58115
Bayes-Faktor: 2.73401

Die Bedingungen werden strenger und es ist schwierig, allein anhand der posterioren Wahrscheinlichkeit und des posterioren Quotenverhältnisses zu beurteilen, aber es scheint, dass die Nullhypothese in beiden Fällen nicht durch Verwendung des Bayes-Faktors gestützt werden kann.

Schließlich habe ich das Intervall der Nullhypothese auf [0,4, 0,6] gesetzt und experimentiert, welche Art von Schlussfolgerung erhalten werden kann, wenn der wahre Wert nicht im Intervall enthalten ist.

EIN)
Post-hoc-Wahrscheinlichkeit: 0.00019
Post-hoc-Quotenverhältnis: 0.00019
Bayes-Faktor: 0.00078
ich)
Post-hoc-Wahrscheinlichkeit: 0.00123
Post-hoc-Quotenverhältnis: 0.00123
Bayes-Faktor: 0.00515
C.)
Post-hoc-Wahrscheinlichkeit: 0.00020
Post-hoc-Quotenverhältnis: 0.00020
Bayes-Faktor: 0.00049
77

Es ist nicht notwendig, den Bayes'schen Faktor zu verwenden, aber in jedem Fall wird die Nullhypothese ordnungsgemäß verworfen.

6. Schließlich

Ich habe die vorherige Distribution als Beta-Distribution angenommen und mich nur mit Modellen befasst, die der Bernoulli-Distribution folgen, aber ich würde mich in Zukunft gerne mit verschiedenen Modellen befassen. Wenn Sie Mängel oder Fehler haben, lassen Sie es mich bitte wissen. Vielen Dank für das Lesen bis zum Ende.


Verweise

[Teruo Nakatsuma; Einführung in die Bayes'sche Statistik mit Python, Asakura Shoten, 2019](https://www.amazon.co.jp/ von Python-Einführung in die Bayes'sche Statistik - Praktische Python-Bibliothek-Nakazuma-Teruo / dp / 4254128983)

Forschungsbericht bei MCMC (siehe 2020-4-24)

Recommended Posts

Bayesian Statistics Hypothesis Test
Hypothesentest zur Produktverbesserung
Hypothesentest und Wahrscheinlichkeitsverteilung
Prüfung