pmf (Wahrscheinlichkeitsmassenfunktion) und rvs (Zufallsvariablen) von scipy.stats untersuchen. Ich werde.#Import der numerischen Berechnungsbibliothek
import numpy as np
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame
#Visualisierungsbibliothek importieren
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
%matplotlib inline
#Japanisches Anzeigemodul von matplotlib
!pip install japanize-matplotlib
import japanize_matplotlib
x = np.array([0,0,1,1,0,1,0,0])
#Berechnen Sie die Wahrscheinlichkeitsverteilung
p = len(x[x==1]) / len(x)
pmf_bernoulli = sp.stats.bernoulli.pmf(x, p)
#Visualisierung
plt.vlines(x, 0, pmf_bernoulli,
colors='blue', lw=50)
plt.xticks([0,1])
plt.xlim([0 - 0.5, 1 + 0.5])
plt.grid(True)

| Zwei Arten von Ereignissen | Wahrscheinlichkeit |
|---|---|
| 0 | 0.625 |
| 1 | 0.375 |
binom.pmf, um die Wahrscheinlichkeit zu ermitteln, mit der eine Münze mit einer Wahrscheinlichkeit p von 50% fünfmal und zwei davon erscheinen.sp.stats.binom.pmf(n=5, p=0.5, k=2)

#Pseudozufallszahl generieren
np.random.seed(1)
rvs_binom = sp.stats.binom.rvs(n=10, p=0.2, size=10000)
#Wahrscheinlichkeitsverteilung abrufen
m = np.arange(0, 10+1, 1)
pmf_binom = sp.stats.binom.pmf(n=10, p=0.2, k=m)
#Visualisierung
sns.distplot(rvs_binom, bins=m,
kde=False, norm_hist=True, label='rvs')
plt.plot(m, pmf_binom, label='pmf')
plt.xticks(m)
plt.legend()
plt.grid()

| Häufigkeit, mit der die Tabelle angezeigt wird | Wahrscheinlichkeit |
|---|---|
| 0 | 0.107374182 |
| 1 | 0.268435456 |
| 2 | 0.301989888 |
| 3 | 0.201326592 |
| 4 | 0.088080384 |
| 5 | 0.026424115 |
| 6 | 0.005505024 |
| 7 | 0.000786432 |
| 8 | 0.000073728 |
| 9 | 0.000004096 |
| 10 | 0.000000102 |
sp.stats.poisson.pmf(k=2, mu=5)

poisson.pmf die Wahrscheinlichkeitsverteilung, wenn die Auftrittswahrscheinlichkeit p 20% beträgt, und vergleichen Sie sie mit dem Histogramm der Pseudozufallszahlen.#Pseudozufallszahl generieren
np.random.seed(1)
rvs_poisson = sp.stats.poisson.rvs(mu=2, size=10000)
#Wahrscheinlichkeitsverteilung abrufen
m = np.arange(0, 10+1, 1)
pmf_poisson = sp.stats.poisson.pmf(mu=2, k=m)
#Visualisierung
sns.distplot(rvs_poisson, bins=m,
kde=False, norm_hist=True, label='rvs')
plt.plot(m, pmf_poisson, label='pmf')
plt.xticks(m)
plt.legend()
plt.grid()

| Anzahl der Vorkommen | Wahrscheinlichkeit |
|---|---|
| 0 | 0.135335283 |
| 1 | 0.270670566 |
| 2 | 0.270670566 |
| 3 | 0.180447044 |
| 4 | 0.090223522 |
| 5 | 0.036089409 |
| 6 | 0.012029803 |
| 7 | 0.003437087 |
| 8 | 0.000859272 |
| 9 | 0.000190949 |
| 10 | 0.000038190 |
#Geben Sie die Parameter an
n = 100000000
p = 0.00000002
#Berechnen Sie die Wahrscheinlichkeitsverteilung der Binomialverteilung
num = np.arange(0, 10+1, 1)
pmf_binom_2 = sp.stats.binom.pmf(n=n, p=p, k=num)
#Visualisierung
plt.plot(m, pmf_poisson,
color='lightgray', lw=10, label='poisson')
plt.plot(m, pmf_binom_2,
color='black', linestyle='dotted', label='binomial')
plt.xticks(num)
plt.legend()
plt.grid()

%precision 3
sp.stats.geom.pmf(k=1, p=1/6)

#Geben Sie die Anzahl der Versuche an
num = np.arange(1, 11, 1)
#Berechnen Sie die Wahrscheinlichkeitsverteilung
prob = []
for i in num:
value = sp.stats.geom.pmf(k=i, p=1/6)
prob.append(value)
#Visualisierung
plt.bar(num, prob)
plt.xticks(num)
plt.xlabel('Häufigkeit, bis 1 zum ersten Mal erscheint')
plt.ylabel('Wahrscheinlichkeit')
plt.show()

| Anzahl von Versuchen | Wahrscheinlichkeit | eine Formel |
|---|---|---|
| 1 | 0.167 | ⅙ |
| 2 | 0.139 | ⅚ ・ ⅙ |
| 3 | 0.116 | ⅚ ・ ⅚ ・ ⅙ |
| 4 | 0.096 | ⅚ ・ ⅚ ・ ⅚ ・ ⅙ |
| 5 | 0.080 | ⅚ ・ ⅚ ・ ⅚ ⅚ ⅚ ⅚ ・ |
| 6 | 0.067 | ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ⅚ ⅚ ⅚ ・ |
| 7 | 0.056 | ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ・ |
| 8 | 0.047 | ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ⅚ ・ ⅙ |
| 9 | 0.039 | ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ⅚ ・ ⅚ ・ ⅚ ・ ⅙ |
| 10 | 0.032 | ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙ |
#Geben Sie alle Ereignisse an
num = np.arange(1, 7, 1)
#Berechnen Sie die Wahrscheinlichkeitsverteilung
prob = []
for i in num:
value = 1 / len(num)
prob.append(value)
#Visualisierung
plt.bar(num, prob)
plt.xticks(num)
plt.xlabel('Augen würfeln')
plt.ylabel('Wahrscheinlichkeit')
plt.show()

| Augen würfeln | Wahrscheinlichkeit |
|---|---|
| 1 | 0.167 |
| 2 | 0.167 |
| 3 | 0.167 |
| 4 | 0.167 |
| 5 | 0.167 |
| 6 | 0.167 |
#Geben Sie die Parameter an
M = 20 #Gesamtzahl
n = 7 #Anzahl der Treffer
N = 12 #Anzahl der Auswahlen
#Erstellen Sie eine stochastische Variable
k = np.arange(0, n+1)
#Erstellen Sie ein Modell
hgeom = sp.stats.hypergeom(M, n, N)
#Berechnen Sie die Wahrscheinlichkeitsverteilung
pmf_hgeom = hgeom.pmf(k)
#Visualisierung
plt.bar(k, pmf_hgeom)
plt.xticks(k)
plt.xlabel('Anzahl der Treffer')
plt.ylabel('Wahrscheinlichkeit')
plt.show()

| Anzahl der Treffer | Wahrscheinlichkeit |
|---|---|
| 0 | 0.00010 |
| 1 | 0.00433 |
| 2 | 0.04768 |
| 3 | 0.19866 |
| 4 | 0.35759 |
| 5 | 0.28607 |
| 6 | 0.09536 |
| 7 | 0.01022 |
#Geben Sie die Parameter an
N = 12 #Anzahl von Versuchen
p = 0.5 #Erfolgswahrscheinlichkeit
k = 3 #Anzahl der Erfolge
#Berechnen Sie die Wahrscheinlichkeitsverteilung
pmf_nbinom = sp.stats.nbinom.pmf(range(N), k, p)
#Visualisierung
plt.bar(range(N), pmf_nbinom)
plt.xlabel('Anzahl der Fehler')
plt.ylabel('Wahrscheinlichkeit')
plt.xticks(range(N))
plt.show()

| Anzahl der Fehler | Wahrscheinlichkeit |
|---|---|
| 0 | 0.125 |
| 1 | 0.188 |
| 2 | 0.188 |
| 3 | 0.156 |
| 4 | 0.117 |
| 5 | 0.082 |
| 6 | 0.055 |
| 7 | 0.035 |
| 8 | 0.022 |
| 9 | 0.013 |
| 10 | 0.008 |
| 11 | 0.005 |
Wir haben uns die diskrete Wahrscheinlichkeitsverteilung angesehen, werden sie jedoch in einer Liste zusammenfassen, in der bekannt ist, welche Wahrscheinlichkeitsvariable verwendet wird und was auf die x-Achse zu setzen ist.
| Arten der Wahrscheinlichkeitsverteilung | Wahrscheinlichkeitsvariable | Parameter | |
|---|---|---|---|
| ⑴ | Bernoulli-Vertrieb | Ereignis 0, 1 | Auftrittswahrscheinlichkeit p |
| ⑵ | Binäre Verteilung | Anzahl von Versuchen | Auftrittswahrscheinlichkeit p,Anzahl der Vorkommen k,Anzahl der Versuche n |
| ⑶ | Poisson-Verteilung | Anzahl von Versuchen | Durchschnittliche Anzahl der Vorkommen mu |
| ⑷ | Geometrische Verteilung | Anzahl von Versuchen | Erfolgswahrscheinlichkeit p,Anzahl der Versuche k |
| ⑸ | Diskrete Gleichverteilung | Art der Veranstaltung | ※scipy.Die gleichmäßige Verteilung der Atate ist nur ein kontinuierlicher Typ |
| ⑹ | Super geometrische Verteilung | Anzahl der Erfolge | Gesamtzahl M.,Anzahl der Erfolge im ganzen n,Anzahl der Auswahlen N. |
| ⑺ | Negative Binomialverteilung | Anzahl der Fehler | Erfolgswahrscheinlichkeit p,Anzahl der Erfolge k,Anzahl der Versuche N. |
Recommended Posts