Implementieren Sie gemeinsam statistische Hypothesentests in Python

Einführung

Ich habe den statistischen Hypothesentest zusammengefasst. Später möchte ich einen Artikel schreiben, der "Erkennungsleistung" und "Effektmenge" organisiert. Deshalb habe ich diesen Artikel als ersten Schritt geschrieben. Ich bin kein Experte für Statistik, daher würde ich mich freuen, wenn Sie auf Fehler hinweisen könnten.

Referenz

Das Folgende wird als Referenz verwendet, wenn der "statistische Hypothesentest" zusammengefasst wird.

Über den statistischen Hypothesentest

Wir werden den Ablauf der statistischen Hypothesentests organisieren und schließlich in Python implementieren.

Was ist ein statistischer Hypothesentest?

Wikipedia erklärt den statistischen Hypothesentest wie folgt.

Das Testen statistischer Hypothesen ist eine der statistischen Methoden zum Testen der Hypothese über die Population der Populationsverteilung aus der Stichprobe. Die japanischen Industriestandards definieren eine Hypothese als "Erklärung der Population oder Wahrscheinlichkeitsverteilung. Es gibt Nullhypothesen und alternative Hypothesen". Der Test (statistischer Test) ist "ein statistisches Verfahren zur Entscheidung, ob die Nullhypothese abgelehnt und die alternative Hypothese unterstützt werden soll oder nicht, um die Nullhypothese basierend auf den beobachteten Werten abzulehnen. Das Verfahren besteht darin, dass die Nullhypothese gilt. Es wird entschieden, dass die Wahrscheinlichkeit der Zurückweisung α oder weniger beträgt, obwohl dies getan wird. Dieses α wird als Signifikanzniveau bezeichnet. "

Obwohl Fachbegriffe wie "Nullhypothese", "Gegenhypothese" und "Signifikanzniveau" herausgekommen sind und schwer zu definieren sind, verstehe ich, dass dies eine Methode zur Durchführung der Verifizierung mit der folgenden Logik ist. ..

** Unter der Annahme, dass eine bestimmte Hypothese korrekt ist, wird bei der Berechnung der Wahrscheinlichkeit, aus den tatsächlich beobachteten Daten zum Zustand dieser Hypothese zu werden, beurteilt, dass die Hypothese wahrscheinlich nicht gültig ist, wenn die Wahrscheinlichkeit ausreichend klein ist **

Testverfahren für statistische Hypothesen

Der statistische Hypothesentest wird gemäß dem folgenden Verfahren durchgeführt.

  1. Machen Sie eine Nullhypothese
  2. Bestimmen Sie die Testmethode
  3. Bestimmen Sie das Signifikanzniveau und den Ablehnungsbereich
  4. Statistiken berechnen
  5. Die Nullhypothese ablehnen oder übernehmen

Wenn nur das Verfahren aufgeführt ist, ist es abstrakt und schwer zu verstehen, daher werde ich es anhand eines konkreten Beispiels erläutern.

Spezifisches Beispiel für einen statistischen Hypothesentest


Wir haben 5 Mal Münzwurf gespielt und 500 Yen bekommen, als die Vorderseite herauskam und 500 Yen, als die Rückseite herauskam. Infolgedessen kam der Tisch alle fünf Male heraus und ich musste 2500 Yen bezahlen. Irgendwie riecht es nach Tintenfisch, aber kann man sagen, dass diese Münze ein Schwindel ist?


Einige Leute sagen vielleicht: "Ist es nicht manchmal so, dass die Tabelle fünfmal hintereinander erscheint?", Während andere sagen: "Es ist seltsam, dass die Tabelle fünfmal hintereinander erscheint." Solche Dinge können mit dem statistischen Hypothesentest objektiv beurteilt werden.

Machen Sie eine Nullhypothese

Dieses Mal werde ich als Hypothese, dass ich zu nichts zurückkehren möchte (eine Hypothese, die ich leugnen möchte), eine Hypothese aufstellen, dass ** diese Münze keine Fälschung ist **. Da es sich nicht um eine Fälschung handelt, beträgt die Wahrscheinlichkeit, dass die Tabelle angezeigt wird, $ p = 0,5 $. Sie wird daher wie folgt ausgedrückt.

Nullhypothese: $ H_ {0}: p = 0,5 $

Die alternative Hypothese (die Wahrscheinlichkeit, dass die Tabelle angezeigt wird, beträgt 50% oder mehr) lautet wie folgt.

Oppositionshypothese: $ H_ {0}: p> 0,5 $

Bestimmen Sie die Testmethode

Dieses Mal werden wir den Binomialtest verwenden. (Wenn die Anzahl der Stichproben groß ist, kann die Binomialverteilung einer Normalverteilung angenähert werden, sodass andere Methoden verwendet werden können.)

Bestimmen Sie das Signifikanzniveau und den Ablehnungsbereich

In diesem Test wird das ** Signifikanzniveau auf 5% ** eingestellt. Nullhypothese: Wenn die Wahrscheinlichkeit, Beobachtungsdaten zu erhalten, 5% oder weniger beträgt ** unter der Annahme von $ H_ {0}: p = 0,5 $, wird die Nullhypothese verworfen (dh ** diese Münze ist falsch). Es gibt **).

Auch dieses Mal werden wir einen ** einseitigen Test ** für einen Test ** durchführen, um den Verdacht zu überprüfen, dass die Münze ungewöhnlich leicht zu erscheinen ist. Der Ablehnungsbereich befindet sich nur auf einer Seite.

Statistiken berechnen

Eine als p-Wert bezeichnete Statistik repräsentiert die Wahrscheinlichkeit, dass der realisierte Wert der beobachteten Daten erhalten wird, oder die Wahrscheinlichkeit, dass extremere Daten erhalten werden, vorausgesetzt, die Nullhypothese ist korrekt.

Daher ist der p-Wert in diesem Fall die Wahrscheinlichkeit, dass die Tabelle fünfmal angezeigt wird, vorausgesetzt, die Wahrscheinlichkeit, dass die Tabelle angezeigt wird, beträgt $ 50 % $.

(\frac{1}{2})^5 = \frac{1}{32} \fallingdotseq 0.03125

Die Nullhypothese ablehnen oder übernehmen

Nachdem wir die für den Hypothesentest erforderlichen Informationen haben, werden wir uns entscheiden, die Nullhypothese abzulehnen oder zu übernehmen. Das Signifikanzniveau dieses Hypothesentests betrug $ 0,05 $ ($ 5 % $), und die Statistik (p-Wert) betrug als Ergebnis der Berechnung $ 0,03125 $.

Da $ 0.03125 <0.05 $ ist, wird die Nullhypothese verworfen und die Alternativhypothese übernommen.

Daher wurde überprüft, dass $ H_ {0}: p> 0,5 $ (diese Münze ist eine Fälschung).

Führen Sie statistische Hypothesentests in Python durch

Die obige Berechnung kann leicht in Python durchgeführt werden. Nachfolgend finden Sie die Ergebnisse eines Binomialtests mit scipy 1.3.1.


from scipy import stats
#x ist die Anzahl der erfolgreichen Beobachtungen
#n ist die Anzahl der Versuche
#p ist die erwartete Erfolgswahrscheinlichkeit
#Alternative gibt an, ob es sich um einen zweiseitigen oder einen einseitigen Test handelt und ob es sich um einen einseitigen Test handelt, um welche Seite es sich handelt
p = stats.binom_test(x = 5, n = 5,  p = 0.5, alternative = 'greater' )
print(p)

Das Ausgabeergebnis ist hier. Der p-Wert kann gemäß dem angegebenen Argument ausgegeben werden.

0.03125

Ein Binomialtest kann leicht durchgeführt werden, indem eine Entscheidung über die Ablehnung oder Annahme gemäß dem oben angegebenen Signifikanzniveau getroffen wird. (Wenn Sie einen weiteren Test durchführen möchten, verwenden Sie eine andere Methode.)

Zeichnen Sie die Verteilung in Python

Bisher wurde der Hypothesentest nur durch Berechnung durchgeführt, aber es wird sehr leicht verständlich, wenn die Verteilung tatsächlich gezeichnet wird. Führen Sie den Münzwurf fünfmal durch und zeichnen Sie die Verteilung der Häufigkeit, mit der die Tabelle angezeigt wird.

import numpy as np
import matplotlib.pyplot as plt
import math
%matplotlib inline

def comb_(n, k):
    result = math.factorial(n) / (np.math.factorial(n - k) * np.math.factorial(k))
    return result


def binomial_dist(p, n, k):
    result = comb_(n, k) * (p**k) * ((1 - p) ** (n - k))
    return result

x =  np.arange(0, 6, 1)

y = [binomial_dist(0.5, 5, i) for i in x]

plt.bar(x, y, alpha = 0.5)

ダウンロード.png

Das Obige ist das Ergebnis des Zeichnens, aber Sie können sofort sehen, dass ** die Wahrscheinlichkeit, dass die Tabelle fünfmal angezeigt wird, unter dem Signifikanzniveau von 0,05 ** liegt.

NEXT Das nächste Mal werde ich den ersten Fehlertyp, den zweiten Fehlertyp und die Erkennungsleistung im Hypothesentest zusammenfassen.

Recommended Posts

Implementieren Sie gemeinsam statistische Hypothesentests in Python
Implementieren Sie XENO mit Python
Implementieren Sie sum in Python
Implementieren Sie Traceroute in Python 3
Implementieren Sie Naive Bayes in Python 3.3
Implementieren Sie alte Chiffren in Python
Implementieren Sie Redis Mutex in Python
Implementieren Sie die Erweiterung in Python
Implementieren Sie schnelles RPC in Python
Implementieren Sie den Dijkstra-Algorithmus in Python
Implementieren Sie den Slack Chat Bot in Python
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
Implementieren Sie die Funktion power.prop.test von R in Python
Testen mit Zufallszahlen in Python
Implementieren Sie das Singleton-Muster in Python
Statistischer Test (Mehrfachtest) in Python: scikit_posthocs
Implementieren Sie die REST-API schnell in Python
Implementieren Sie __eq__ usw. generisch in der Python-Klasse
Ich habe versucht, Permutation in Python zu implementieren
Implementieren Sie den FIR-Filter in Python und C.
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Einführung in das Testen statistischer Hypothesen mit Statistikmodellen
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Versuchen Sie, Oni Mai Tsuji Miserable mit Python zu implementieren
Geokodierung in Python
SendKeys in Python
Berechnen wir das statistische Problem mit Python
Metaanalyse in Python
Unittest in Python
In Python ② erlernte statistische Wahrscheinlichkeitsverteilung für Testgrad 2
So implementieren Sie Shared Memory in Python (mmap.mmap)
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Lassen Sie uns den englischen Sprachdialog in Python implementieren [offline]
Plink in Python
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Konstante in Python
Testmethoden, die zufällige Werte in Python zurückgeben
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
[Implementierung zum Lernen] Implementieren Sie Stratified Sampling in Python (1)