Je m'intéresse aux mathématiques et aux statistiques, mais quand je regarde les formules mathématiques, il y a trop de symboles pour comprendre lequel est, ou je l'oublie immédiatement, alors j'ai décidé d'écrire ce que j'ai appris dans le programme. Fait.
Cette fois, nous allons créer une classe avec les fonctions suivantes pour une distribution binomiale avec un total de n essais et une probabilité de succès de p.
Les performances ne sont pas prises en compte car elles visent à se souvenir du contenu de l'expression.
Lorsque les essais de Bernoulli (essais binaires) avec une probabilité de succès de p sont effectués n fois au total,
f(x,n,p) = {}_n \mathrm{ C }_xp^x(1-p)^{ n-x } \quad (0 \leqq n;\ 0 \leqq x \leqq n;\ 0 \leqq p\leqq 1)\\
P(n,x,p) = \sum_{i=0}^xf(i,n,p)
P(n,x,p) = \sum_{i=x}^nf(i,n,p)
import math
import numpy as np
import matplotlib.pyplot as plt
class ToolBox:
def combination(total, chosen):
return math.factorial(total) / math.factorial(chosen)/ math.factorial(total-chosen)
class BinomialDistribution:
"""
Générer un objet de distribution binomiale avec tous les essais n et probabilité de succès p.
Attributes
----------
total : int
Nombre total d'essais n.
p_of_sccess : float
Probabilité de succès dans un essai p.
p_of_fail : float
Probabilité d'échec dans un essai 1-p.
"""
def __init__(self, total, p_of_success):
"""
Parameters
----------
total : int
Nombre total d'essais n.
p_of_success : float
Probabilité de succès dans un essai p.
"""
assert total > 0, "Condition error: 0 <= total"
assert p_of_success >= 0 and p_of_success <= 1, "Condition error: 0 <= p_of_success <= 1"
self.total = total
self.p_of_sccess = p_of_success
self.p_of_fail = 1 - p_of_success
def get_probability_mass(self, success):
"""
Trouvez la masse de probabilité pour réussir x fois
Parameters
----------
success : int
Nombre de succès x.
Returns
-------
probability_mass : float
Masse de probabilité de x.
"""
assert success >= 0 and success <= self.total, "Condition error: 0 <= sccuess <= total"
fail = self.total - success
combination = ToolBox.combination(self.total, success)
probability_mass = combination * (self.p_of_sccess ** success) * (self.p_of_fail) ** fail
return probability_mass
def get_lower_culmitive_distribution(self, success):
"""
Probabilité cumulative inférieure de x(Somme des masses de probabilité de 0 à x fois)Cherchant.
Parameters
----------
success : int
Nombre de succès x.
Returns
-------
result : float
Probabilité cumulative inférieure de x.
"""
result = 0
for i in range (0, success + 1):
result += binomial_distribution.get_probability_mass(i)
return result
def get_upper_culmitive_distribution(self, success):
"""
Probabilité cumulative supérieure de x(x ~ somme des masses de probabilité de tous les essais,)Cherchant.
Parameters
----------
success : int
Nombre de succès x.
Returns
-------
result : float
Probabilité cumulative supérieure de x.
"""
result = 0
for i in range (success, self.total + 1):
result += binomial_distribution.get_probability_mass(i)
return result
def draw_graph(self):
"""
Dessinez un graphique et enregistrez-le au format png.
"""
x = np.arange(0, self.total + 1, 1)
y = []
for i in range(0, self.total + 1):
y.append(self.get_probability_mass(i))
plt.plot(x, y)
plt.savefig('graph.png')
#10 essais, 0 taux de réussite.Créer un objet de distribution binomiale de 5.
binomial_distribution = BinomialDistribution(10, 0.5)
#Obtenez la masse de probabilité pour 2 succès.
print(binomial_distribution.get_probability_mass(2))
#Obtenez la probabilité cumulée la plus faible lorsque la probabilité de succès est de 2 fois.
print(binomial_distribution.get_lower_culmitive_distribution(2))
#Obtenez la probabilité cumulée supérieure lorsque la probabilité de succès est de 2 fois.
print(binomial_distribution.get_upper_culmitive_distribution(2))
#Tracez un graphique de cette distribution binomiale.
binomial_distribution.draw_graph()
0.0439453125 #Masse de probabilité lorsque le nombre de succès est de 2
0.0546875 #Probabilité cumulative plus faible avec 2 chances de succès
0.9892578125 #Probabilité cumulative supérieure lorsque la probabilité de succès est de 2 fois
J'ai utilisé ce site pour faire correspondre les réponses https://keisan.casio.jp/exec/system/1161228843
Le graphique est enregistré dans le même répertoire.
--Correction de la «fonction de densité de probabilité (PDF)» en «fonction de masse de probabilité (PMF)». Il semble que ce dernier soit utilisé lorsque la variable stochastique x («succès» dans ce cas) est une valeur discrète. Cependant, certains sites et livres utilisent la «densité de probabilité» pour des distributions binomiales discrètes, et j'estime qu'elles ne sont pas si strictement distinguées.
succès
) du constructeur et le spécifier lors de l'appel de la méthode.Comment écrire MathJax https://easy-copy-mathjax.nakaken88.com/
Site qui calcule la distribution binomiale https://keisan.casio.jp/exec/system/1161228843
Fonction de densité de probabilité et fonction de masse de probabilité https://data-science.gr.jp/theory/tbs_pdf_and_pmf.html
Recommended Posts