Ich interessiere mich für Mathematik und Statistik, aber wenn ich mir mathematische Formeln anschaue, gibt es zu viele Symbole, um zu sagen, welches welches ist, oder ich vergesse es sofort, also habe ich beschlossen, das zu schreiben, was ich im Programm gelernt habe. Hat.
Dieses Mal erstellen wir eine Klasse mit den folgenden Funktionen für eine Binomialverteilung mit insgesamt n Versuchen und einer Erfolgswahrscheinlichkeit von p.
Die Leistung wird nicht berücksichtigt, da sie den Inhalt des Ausdrucks speichern soll.
Wenn Bernoulli-Versuche (binäre Versuche) mit einer Erfolgswahrscheinlichkeit von p insgesamt n-mal durchgeführt werden,
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:
"""
Generieren Sie ein Binomialverteilungsobjekt mit allen Versuchen n und der Erfolgswahrscheinlichkeit p.
Attributes
----------
total : int
Gesamtzahl der Versuche n.
p_of_sccess : float
Erfolgswahrscheinlichkeit in einem Versuch p.
p_of_fail : float
Ausfallwahrscheinlichkeit in einem Versuch 1-p.
"""
def __init__(self, total, p_of_success):
"""
Parameters
----------
total : int
Gesamtzahl der Versuche n.
p_of_success : float
Erfolgswahrscheinlichkeit in einem Versuch 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):
"""
Finden Sie die Wahrscheinlichkeitsmasse, die x-mal erfolgreich ist
Parameters
----------
success : int
Anzahl der Erfolge x.
Returns
-------
probability_mass : float
Wahrscheinlichkeitsmasse von 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):
"""
Niedrigere kumulative Wahrscheinlichkeit von x(Summe der Wahrscheinlichkeitsmassen von 0 bis x mal)Ich suche.
Parameters
----------
success : int
Anzahl der Erfolge x.
Returns
-------
result : float
Niedrigere kumulative Wahrscheinlichkeit von 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):
"""
Obere kumulative Wahrscheinlichkeit von x(x ~ Summe der Wahrscheinlichkeitsmassen aller Versuche,)Ich suche.
Parameters
----------
success : int
Anzahl der Erfolge x.
Returns
-------
result : float
Obere kumulative Wahrscheinlichkeit von x.
"""
result = 0
for i in range (success, self.total + 1):
result += binomial_distribution.get_probability_mass(i)
return result
def draw_graph(self):
"""
Zeichnen Sie ein Diagramm und speichern Sie es im PNG-Format.
"""
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 Versuche, 0 Erfolgsquote.Erstellen Sie ein Binomialverteilungsobjekt von 5.
binomial_distribution = BinomialDistribution(10, 0.5)
#Holen Sie sich die Wahrscheinlichkeitsmasse für 2 Erfolge.
print(binomial_distribution.get_probability_mass(2))
#Erhalten Sie die niedrigere kumulative Wahrscheinlichkeit, wenn die Erfolgswahrscheinlichkeit 2-mal ist.
print(binomial_distribution.get_lower_culmitive_distribution(2))
#Erhalten Sie die obere kumulative Wahrscheinlichkeit, wenn die Erfolgswahrscheinlichkeit 2-mal ist.
print(binomial_distribution.get_upper_culmitive_distribution(2))
#Zeichnen Sie ein Diagramm dieser Binomialverteilung.
binomial_distribution.draw_graph()
0.0439453125 #Wahrscheinlichkeitsmasse bei einer Anzahl von Erfolgen von 2
0.0546875 #Geringere kumulative Wahrscheinlichkeit mit 2 Erfolgschancen
0.9892578125 #Obere kumulative Wahrscheinlichkeit, wenn die Erfolgswahrscheinlichkeit das Zweifache beträgt
Ich habe diese Seite benutzt, um die Antworten abzugleichen https://keisan.casio.jp/exec/system/1161228843
Das Diagramm wird im selben Verzeichnis gespeichert.
successs
) vom Konstruktor zu trennen und beim Aufruf der Methode anzugeben.Wie schreibe ich MathJax https://easy-copy-mathjax.nakaken88.com/
Site, die die Binomialverteilung berechnet https://keisan.casio.jp/exec/system/1161228843
Wahrscheinlichkeitsdichtefunktion und Wahrscheinlichkeitsmassenfunktion https://data-science.gr.jp/theory/tbs_pdf_and_pmf.html
Recommended Posts