Berechnen Sie die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, mit dem Bayes-Theorem [Python]

Problem

Ich habe zwei Münzen Eine Münze hat eine halbe Chance zu erscheinen Die andere ist Ikasama, eine Münze mit 70% nach oben Gewinnen Sie, wenn Sie erraten können, ob es sich um eine Tintenfischmünze handelt

Als ich es jetzt noch 50 Mal versuchte, waren es 35 Mal

Kann man es zu diesem Zeitpunkt übrigens Ikasama-Münze nennen?

Für die klassische Statistik

Wenn es sich nicht um eine Tintenfischmünze handelt, sollte sie 25 von 50 Mal unter den ersten sein. Wenn der Unterschied im Verhältnis getestet wird, Der Chi-Quadrat-Wert beträgt 4,16 Der p-Wert beträgt 0,04 Wenn Sie mit einer Risikorate von 5% testen, können Sie nicht sagen, dass es sich um eine Nicht-Tintenfisch-Münze handelt, da sie etwa 4% beträgt, selbst wenn es passiert, dass "das Werfen einer Nicht-Tintenfisch-Münze die besten 35 Mal anzeigt". Wird interpretiert als

Kein mehrdeutiges Ergebnis wie "Ich kann es nicht sagen" Ich möchte eine Wahrscheinlichkeit von 1,0, z. B. ob es sich um eine Tintenfischmünze handelt

In der Bayes'schen Statistik

P(X|Y) = \frac{P(Y|X)P(X)}{P(Y)}

in diesem Fall Binäre Verteilung

\begin{align}
 {}_n C_{x} p^x (1-p)^{n-x}
\end{align}

Die Wahrscheinlichkeit P (Y | X) Behandeln wie

Die Vorwahrscheinlichkeit P (X) gibt die Wahrscheinlichkeit an, eine Tintenfischmünze oder eine faire Münze zu sein

Dieses Mal werden sowohl Ikasama-Münzen als auch faire Münzen gleichermaßen ausgewählt. P(X)=0.5 Betrachten Sie es als.

Mögliche Ereignisse sind Die Ikasama-Münze wird ausgewählt und die Tabelle erscheint 35 Mal Faire Münzen werden ausgewählt und die Tabelle erscheint 35 Mal

Wenn dies durch eine Formel ausgedrückt wird

** Messe **

\begin{align}
 {}_{50} C_{35} (0.5)^{35} (1-0.5)^{50-35}=0.0019
\end{align}

** Ikasama **

\begin{align}
 {}_{50} C_{35} (0.7)^{35} (1-0.7)^{50-35}=0.1223
\end{align}

Wird sein. Multiplizieren Sie jeden Wert mit der Wahrscheinlichkeit, dass die Ikasama-Münze als vorläufige Wahrscheinlichkeit ausgewählt wird Da dies allein nicht als Wahrscheinlichkeit angesehen werden kann, addieren Sie beide Werte, um eine periphere Verteilung zu erhalten.

** Messe **

\frac{0.1223×0.5}{0.1223×0.5+0.0019×0.5}=0.016

** Ikasama **

\frac{0.0019×0.5}{0.1223×0.5+0.0019×0.5}=0.984
import math
import numpy as np
import random

def combinations_count(n, r):
    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))

loaded_prior=0.5
loaded_heads=0.7
loaded_tails=0.3

fair_prior=1-loaded_prior
fair_heads=0.5
fair_tails=0.5

n=50
x=35
n_x=n-x

def coin(n,x,n_x,lp,lh,lt,fp,fh,ft):
    loaded_likelihood=combinations_count(n, x)*(loaded_heads**x)*(loaded_tails**n_x)
    fair_likelihood=combinations_count(n, x)*(fair_heads**x)*(fair_tails**n_x)
    marginal = loaded_likelihood*loaded_prior + fair_likelihood*fair_prior
    load_prob=(loaded_likelihood*loaded_prior)/marginal
    fair_prob=(fair_likelihood*fair_prior)/marginal
    return load_prob, fair_prob

load_prob,fair_prob= coin(n=n,x=x,n_x=n_x,lp=loaded_prior,lh=loaded_heads,lt=loaded_tails,fp=fair_prior,fh=fair_heads,ft=fair_tails)
print("loaded coin "+str(round(load_prob,3))+"%, fair coin "+str(round(fair_prob,3))+"%")
loaded coin 0.984%, fair coin 0.016%

Auf diese Weise berechnet, stieg die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, von 0,5 im Voraus auf 0,98. Wenn die Tabelle 33 Mal angezeigt wird, überschreitet sie übrigens 90%.

try_time = 50

for o in range(try_time):
    n_x=try_time-o
    lo_p,fa_p=coin(n=try_time,x=o,n_x=n_x,
                          lp=loaded_prior,lh=loaded_heads,lt=loaded_tails,
                          fp=fair_prior,fh=fair_heads,ft=fair_tails)
    print("head "+str(o)+"  loaded coin "+str(round(lo_p,3))+"%, fair coin "+str(round(fa_p,3))+"%")
head 0  loaded coin 0.0%, fair coin 1.0%
head 1  loaded coin 0.0%, fair coin 1.0%
head 2  loaded coin 0.0%, fair coin 1.0%
head 3  loaded coin 0.0%, fair coin 1.0%
head 4  loaded coin 0.0%, fair coin 1.0%
head 5  loaded coin 0.0%, fair coin 1.0%
head 6  loaded coin 0.0%, fair coin 1.0%
head 7  loaded coin 0.0%, fair coin 1.0%
head 8  loaded coin 0.0%, fair coin 1.0%
head 9  loaded coin 0.0%, fair coin 1.0%
head 10  loaded coin 0.0%, fair coin 1.0%
head 11  loaded coin 0.0%, fair coin 1.0%
head 12  loaded coin 0.0%, fair coin 1.0%
head 13  loaded coin 0.0%, fair coin 1.0%
head 14  loaded coin 0.0%, fair coin 1.0%
head 15  loaded coin 0.0%, fair coin 1.0%
head 16  loaded coin 0.0%, fair coin 1.0%
head 17  loaded coin 0.0%, fair coin 1.0%
head 18  loaded coin 0.0%, fair coin 1.0%
head 19  loaded coin 0.0%, fair coin 1.0%
head 20  loaded coin 0.0%, fair coin 1.0%
head 21  loaded coin 0.0%, fair coin 1.0%
head 22  loaded coin 0.001%, fair coin 0.999%
head 23  loaded coin 0.002%, fair coin 0.998%
head 24  loaded coin 0.005%, fair coin 0.995%
head 25  loaded coin 0.013%, fair coin 0.987%
head 26  loaded coin 0.029%, fair coin 0.971%
head 27  loaded coin 0.065%, fair coin 0.935%
head 28  loaded coin 0.14%, fair coin 0.86%
head 29  loaded coin 0.275%, fair coin 0.725%
head 30  loaded coin 0.469%, fair coin 0.531%
head 31  loaded coin 0.674%, fair coin 0.326%
head 32  loaded coin 0.828%, fair coin 0.172%
head 33  loaded coin 0.918%, fair coin 0.082%
head 34  loaded coin 0.963%, fair coin 0.037%
head 35  loaded coin 0.984%, fair coin 0.016%
head 36  loaded coin 0.993%, fair coin 0.007%
head 37  loaded coin 0.997%, fair coin 0.003%
head 38  loaded coin 0.999%, fair coin 0.001%
head 39  loaded coin 0.999%, fair coin 0.001%
head 40  loaded coin 1.0%, fair coin 0.0%
head 41  loaded coin 1.0%, fair coin 0.0%
head 42  loaded coin 1.0%, fair coin 0.0%
head 43  loaded coin 1.0%, fair coin 0.0%
head 44  loaded coin 1.0%, fair coin 0.0%
head 45  loaded coin 1.0%, fair coin 0.0%
head 46  loaded coin 1.0%, fair coin 0.0%
head 47  loaded coin 1.0%, fair coin 0.0%
head 48  loaded coin 1.0%, fair coin 0.0%
head 49  loaded coin 1.0%, fair coin 0.0%

das ist alles

Recommended Posts

Berechnen Sie die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, mit dem Bayes-Theorem [Python]
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Berechnen Sie die Wahrscheinlichkeit von Ausreißern auf den Box-Whiskern
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Die Idee, die Konfigurationsdatei mit einer Python-Datei anstelle von yaml zu füttern
Tipps: [Python] Berechnen Sie den Durchschnittswert des angegebenen Bereichs mit Bedgraph
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Erstellen Sie ein Kompatibilitätsbewertungsprogramm mit dem Zufallsmodul von Python.
Überprüfen Sie die Existenz der Datei mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
[Python] [Meta] Ist der Python-Typ ein Typ?
Die Geschichte der Verarbeitung A von Blackjack (Python)
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
[AtCoder Erklärung] Kontrollieren Sie ABC184 A, B, C Probleme mit Python!
So berechnen Sie die Volatilität einer Marke
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
[Hinweis] Exportieren Sie das HTML der Site mit Python.
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, (C), D-Probleme von ABC165 mit Python!
[AtCoder-Erklärung] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC183 mit Python!
Verwenden Sie vorerst Logger mit Python
Rund um die Authentifizierung von PyDrive2, einem Paket zum Betreiben von Google Drive mit Python
Kopieren Sie die Liste in Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Ausgabe in Form eines Python-Arrays
Konvertieren Sie den Zeichencode der Datei mit Python3
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC181 mit Python!
Berücksichtigung der Stärken und Schwächen von Python
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
[Python] Bestimmen Sie den Typ der Iris mit SVM
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
[Python & SQLite] Ich habe den erwarteten Wert eines Rennens mit Pferden im 1x-Gewinnbereich ② analysiert
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Python: Berechnen Sie die konstante Flusstiefe eines rechteckigen Querschnitts mit der Brent-Methode
Ich dachte darüber nach, warum Python selbst mit dem Gefühl eines Python-Interpreters notwendig ist
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
[Python] Ein Programm, das die Anzahl der Täler zählt
Memo mit Python mit HiveServer2 von EMR verbunden
Berechnen Sie das Volumen aus der zweidimensionalen Struktur einer Verbindung
Lerne Nim mit Python (ab Anfang des Jahres).
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda