Calculez la probabilité d'être une pièce de calmar avec le théorème de Bayes [python]

problème

J'ai deux pièces Une pièce a 1/2 chance d'apparaître L'autre est Ikasama, une pièce avec 70% face vers le haut Gagnez si vous pouvez deviner s'il s'agit d'une pièce de calmar

Quand j'ai essayé 50 fois de plus maintenant, c'était 35 fois

Au fait, peut-on l'appeler pièce Ikasama en ce moment?

Pour les statistiques classiques

Si ce n'est pas une pièce de calmar, elle devrait figurer dans le top 25 fois sur 50. Lorsque la différence de rapport est testée, La valeur du chi carré est de 4,16 la valeur p est de 0,04 Si vous testez avec un taux de risque de 5%, vous ne pouvez pas dire qu'il s'agit d'une pièce non-squid car elle est d'environ 4% même s'il arrive que "lancer une pièce non-squid affichera les 35 premières fois" Sera interprété comme

Pas un résultat ambigu comme "Je ne peux pas le dire" Je veux une probabilité de 1,0, par exemple s'il s'agit d'une pièce de calmar

Dans les statistiques bayésiennes

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

dans ce cas Distribution binaire

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

La vraisemblance P (Y | X) Traiter comme

La pré-probabilité P (X) met la probabilité d'être une pièce de calmar ou une pièce juste

Cette fois, les pièces Ikasama et les pièces équitables seront sélectionnées de manière égale. P(X)=0.5 Pensez-y comme.

Les événements possibles sont La pièce Ikasama est sélectionnée et le tableau apparaît 35 fois Les pièces justes sont sélectionnées et le tableau apparaît 35 fois

Si cela est exprimé par une formule

** Passable **

\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}

Sera. Multipliez chaque valeur par la probabilité que la pièce Ikasama soit sélectionnée comme probabilité préliminaire Puisque cela seul ne peut être considéré comme une probabilité, ajoutez les deux valeurs pour obtenir une distribution périphérique.

** Passable **

\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%

Calculée de cette manière, la probabilité d'être une pièce de calmar est passée de 0,5 à l'avance à 0,98. Soit dit en passant, si le tableau apparaît 33 fois, il dépassera 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%

c'est tout

Recommended Posts

Calculez la probabilité d'être une pièce de calmar avec le théorème de Bayes [python]
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
Calculez le nombre total de combinaisons avec python
Calculer la probabilité de valeurs aberrantes sur les moustaches de la boîte
Calculer le coefficient de régression d'une analyse de régression simple avec python
Calculer le produit des matrices avec une expression de caractère?
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
L'histoire de la création d'un pilote standard pour db avec python.
L'idée d'alimenter le fichier de configuration avec un fichier python au lieu de yaml
Astuces: [Python] Calculez la valeur moyenne de la zone spécifiée avec bedgraph
L'histoire de la création d'un module qui ignore le courrier avec python
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Vérifier l'existence du fichier avec python
Rechercher le labyrinthe avec l'algorithme python A *
[python] [meta] Le type de python est-il un type?
L'histoire du traitement A du blackjack (python)
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
[Explication AtCoder] Contrôlez les problèmes A, B, C d'ABC182 avec Python!
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Recevez une liste des résultats du traitement parallèle en Python avec starmap
[Explication AtCoder] Contrôle ABC184 Problèmes A, B, C avec Python!
Comment calculer la volatilité d'une marque
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
[Python] Récupérez les fichiers dans le dossier avec Python
Préparer l'environnement d'exécution de Python3 avec Docker
[Note] Exportez le html du site avec python.
[Explication AtCoder] Contrôlez les problèmes A, B, (C), D de ABC165 avec Python!
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC183 avec Python!
Utilisez Logger avec Python pour le moment
Autour de l'authentification de PyDrive2, un package pour faire fonctionner Google Drive avec Python
Copiez la liste en Python
Vérifiez la date du devoir de drapeau avec Python
Écrire une note sur la version python de python virtualenv
[Python] Une compréhension approximative du module de journalisation
Sortie sous la forme d'un tableau python
Convertir le code de caractère du fichier avec Python3
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC181 avec Python!
Prise en compte des forces et faiblesses de Python
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
[Python] Déterminez le type d'iris avec SVM
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
[Python & SQLite] J'ai analysé la valeur attendue d'une course avec des chevaux dans la fourchette 1x win ②
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
Python: calculez la profondeur d'écoulement constante d'une section rectangulaire à l'aide de la méthode Brent
J'ai réfléchi à la raison pour laquelle Python self est nécessaire avec le sentiment d'un interpréteur Python
Extraire le tableau des fichiers image avec OneDrive et Python
[Python] Un programme qui compte le nombre de vallées
Mémo connecté à HiveServer2 d'EMR avec python
Calculer le volume à partir de la structure bidimensionnelle d'un composé
Apprenez Nim avec Python (dès le début de l'année).
Recommandation de construction d'un environnement Python portable avec conda