Bis zum letzten Mal wurde [Einführung in Data Scientists] Deskriptive Statistik und einfache Regressionsanalyse zusammengefasst. Dieses Mal werden wir die Wahrscheinlichkeits- / Wahrscheinlichkeitsvariable und die Wahrscheinlichkeitsverteilung als Grundlage für Wahrscheinlichkeit und Statistik zusammenfassen. Ich werde die Erklärungen in diesem Buch ergänzen. 【Hinweis】 ["Data Scientist Training Course an der Universität von Tokio"](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3 % 81% AE% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% B5% E3% 82% A4% E3% 82% A8% E3% 83% B3% E3% 83 % 86% E3% 82% A3% E3% 82% B9% E3% 83% 88% E8% 82% B2% E6% 88% 90% E8% AC% 9B% E5% BA% A7-Python% E3% 81 % A7% E6% 89% 8B% E3% 82% 92% E5% 8B% 95% E3% 81% 8B% E3% 81% 97% E3% 81% A6% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E2% 80% 95% E3% 82% BF% E5% 88% 86% E6% 9E% 90-% E5% A1% 9A% E6% 9C% AC% E9% 82% A6% Ich werde E5% B0% 8A / dp / 4839965250 / ref = tmm_pap_swatch_0? _ Encoding = UTF8 & qid = & sr =) lesen und die Teile zusammenfassen, an denen ich einige Zweifel habe oder die ich nützlich finde. Daher denke ich, dass die Zusammenfassung unkompliziert sein wird, aber bitte lesen Sie sie und denken Sie, dass der Inhalt nichts mit diesem Buch zu tun hat.
Importieren Sie die in diesem Kapitel verwendete Bibliothek.
import numpy as np
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame
import matplotlib as mpl
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
np.random.seed(0)
Wahrscheinlichkeit, Versuch, Wurzelereignis, Probenraum, Ereignis, bedingte Wahrscheinlichkeit, Bayes'scher Satz, Vorwahrscheinlichkeit, Nachwahrscheinlichkeit
Lernen Sie anhand von Würfeln die Begriffe und Konzepte, die für die Lernwahrscheinlichkeit erforderlich sind.
#Mögliche Würfelwerte
dice_data =np.array([1,2,3,4,5,6])
Jedes Ereignis; Stammereignis
print('Nur eine zufällig extrahierte', np.random.choice(dice_data,1))
#Nur eine zufällig extrahierte[3]
Satz aller Wurzelereignisse: Probenraum Ω Beliebige Teilmenge des Probenraums: Ereignisse
Wenn Sie von 1 auf 10 wechseln, geschieht hier auch Folgendes
print('Nach dem Zufallsprinzip 10 extrahieren', np.random.choice(dice_data,10))
#Nach dem Zufallsprinzip 10 extrahieren[2 3 4 2 2 1 6 2 2 5]
\begin{align}
&Kolmogorovs Agenda\\
&Wahrscheinlichkeit P, dass ein bestimmtes Ereignis E (Ereignis) auftritt(E)Wenn Sie schreiben, ist das Folgende die Tagesordnung.\\
&Agenda 1: 0 für alle Veranstaltungen A.\leq P(A)\leq 1\\
&Apokalypse 2; P.(\Omega)=1\\
&Theorie 3: Zusätzliche Ereignisse, die sich gegenseitig ausschließen, A._1,A_2,A_3,.. .. .. Gegen\\
&P(A_1\cup A_2\cup A_3\cup...)=P(A_1)+P(A_2)+P(A_3)+...=\Sigma_i P(A_i)\\
\end{align}
Obwohl es sich von der Tagesordnung dieses Buches unterscheidet, wird es aus dem Nachschlagewerk zitiert. Apokalypse 3 dieses Buches beschreibt den Fall von $ A_1 $, $ A_2 $. 【Referenz】 [Grundlegende Mathematikwahrscheinlichkeit / Statistik I S. 6 Ingenieurkurs der Universität Tokio](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%E7%B3%BB-%E6%95 % B0% E5% AD% A6-% E7% A2% BA% E7% 8E% 87% E3% 83% BB% E7% B5% B1% E8% A8% 88I-% E6% 9D% B1% E4% BA % AC% E5% A4% A7% E5% AD% A6% E5% B7% A5% E5% AD% A6% E6% 95% 99% E7% A8% 8B-% E7% B8% 84% E7% 94% B0 / dp / 4621087150)
Leeres Ereignis $ \ phi $ ist ein Ereignis ohne Elemente. Wenn beispielsweise A und B Ausschlussereignisse sind, ist $ A \ cap B $ ein leeres Ereignis $ \ phi $. $ P (\ phi) = 0 $.
Ein Ereignis, das nicht zu einem bestimmten Ereignis E gehört, wird als Restereignis bezeichnet. Dies wird auch als Komplement von E bezeichnet. Mit c im Komplement ausgedrückt.
E=\{2,4,6\}\\
E^c=\{1,3,5\}
A=\{1,2,3\}\\
B=\{1,3,4,5\}
$ A \ cap B $; Produktereignis
A\cap B = \{1,3\}
$ A \ cup B $; Summenereignis
A\cup B = \{1,2,3,4,5\}
Berechnen Sie die Wahrscheinlichkeit, dass "Ereignis X mit 3", "leeres Ereignis", "Produktereignis von A und B" und "Summenereignis von A und B" auftreten.
\begin{align}
P(X) &= \frac{1}{6}\\
P(\phi ) &= 0\\
P(A\cap B)&=\frac{1}{3}\\
P(A\cup B)&=\frac{5}{6}\\
\end{align}
Wahrscheinlichkeit von Würfeln
Anzahl von Versuchen | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
1 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 |
10 | 0.1 | 0.5 | 0.2 | 0.1 | 0.1 | 0.0 |
100 | 0.16 | 0.17 | 0.18 | 0.19 | 0.18 | 0.12 |
1000 | 0.176 | 0.152 | 0.18 | 0.158 | 0.164 | 0.17 |
10000 | 0.1695 | 0.1701 | 0.1642 | 0.166 | 0.1617 | 0.1685 |
100000 | 0.16776 | 0.16621 | 0.16661 | 0.16573 | 0.16724 | 0.16645 |
1000000 | 0.166517 | 0.166637 | 0.166131 | 0.16692 | 0.166876 | 0.166919 |
Das Folgende ist meine persönliche Meinung. .. .. Ich finde dieses Ergebnis interessant. Mit anderen Worten, selbst wenn es 6 Kandidaten gibt und die Wähler gleichmäßig (zufällig) wählen, unterscheidet sich das Ergebnis in Abhängigkeit von der Anzahl der Versuche (Anzahl der Wähler), so dass bei etwa 1000 Wählern ein geringfügiger Vorteil besteht. In diesem Fall ist das Ergebnis unzuverlässig. Die Wahrheit kann also nicht gesehen werden, ohne die Überlegenheit statistisch zu überprüfen, und eine Stimme wird nicht sorgfältig gewählt.
calc_steps = 1000
print('calc_steps=',calc_steps)
dice_rolls = np.random.choice(dice_data,calc_steps)
for i in range(1,7):
p = len(dice_rolls[dice_rolls==i])/calc_steps
print(i, 'Wahrscheinlichkeit des Auftretens;', p)
Die Wahrscheinlichkeit, dass Ereignis B unter der Bedingung auftritt, dass Ereignis A aufgetreten ist, wird als bedingte Wahrscheinlichkeit von B unter der Bedingung bezeichnet, dass A gegeben ist.
P(B|A)=\frac{P(A\cap B)}{P(A)}
Es wird ausgedrückt als. Diese Formel wird wie folgt transformiert und heißt ** Multiplikatorsatz **.
P(A\cap B)=P(B|A)P(A)
Konkretes Beispiel;
Sogar Augen auf die Würfel
A={2,4,6}
4 oder mehr Ereignisse
B={4,5,6}
Produktereignis von A und B.
$A\cap B = ${4,6}
P(B|A)=\frac{P(A\cap B)}{P(A)}=\frac{\frac{2}{6}}{\frac{3}{6}}=\frac{2}{3}
Die Tatsache, dass Ereignis A und Ereignis B unabhängig voneinander sind, bedeutet
P(A|B)=P(A)
Ist wahr. Zu diesem Zeitpunkt gilt aus dem Multiplikationssatz Folgendes.
P(A\cap B)=P(A)P(B)
Wenn diese Gleichung nicht zutrifft, werden Ereignis A und Ereignis B als voneinander abhängig bezeichnet. In Anbetracht des obigen Würfelbeispiels ist es wie folgt.
\begin{align}
P(A\cap B)&=\frac{2}{6}&=\frac{1}{3}\\
P(A)P(B)&=\frac{3}{6}\frac{3}{6}&=\frac{1}{4}
\end{align}
Es ist ersichtlich, dass Ereignis A und Ereignis B nicht unabhängig, sondern abhängig sind, weil sie nicht gleich sind.
Was ist mit "C = {1,3,5}"?
Produktereignis von A und C.
$A\cap C = ${}
Dies ist wiederum nicht gleich 0 bzw. $ \ frac {1} {4} $ und ist eine Abhängigkeit.
Ich werde den Satz von Bayes erklären. Zitiert aus der Referenz "Manchmal wollen wir die Ursache B aus dem Ergebnis A kennen ... In einem solchen Fall die bedingte Wahrscheinlichkeit P von B mit A als Bedingung.(B|A)Wird benötigt. Was in Experimenten und Umfragen benötigt wird, ist P.(A|B)Also P.(B|A)Sie benötigen eine Gleichung zur Berechnung. "" Unter Berücksichtigung der obigen bedingten Wahrscheinlichkeiten erhalten wir den folgenden Bayes'schen Satz, wenn wir A als das resultierende Ereignis und B als das verursachende Ereignis betrachten. Dies dient dazu, die Wahrscheinlichkeit zu ermitteln, dass die Ursache ein B-Ereignis ist, wenn das Ergebnis von A bekannt ist. Beachten Sie, dass $ B ^ c $ eine Ergänzung von B ist.
P(B|A)=\frac{P(B\cap A)}{P(A)}\\
∵P(A\cap B)=P(B\cap A)\\
=\frac{P(A|B)P(B)}{P(A)}\\
=\frac{P(A|B)P(B)}{P(A|B)P(B)+P(A|B^c)P(B^c)}\\
P (B); Wahrscheinlichkeit von Ereignis B vor Ereignis A; Vorwahrscheinlichkeit P (B | A); Wahrscheinlichkeit von Ereignis B nach Ereignis A; hintere Wahrscheinlichkeit P (A | B); Wahrscheinlichkeit, dass A auftritt, wenn B auftritt; Wahrscheinlichkeit;
Ich beziehe mich auf Folgendes. 【Referenz】 [Grundlegende Mathematikwahrscheinlichkeit / Statistik I S. 18 Ingenieurkurs der Universität Tokio](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%E7%B3%BB-%E6%95 % B0% E5% AD% A6-% E7% A2% BA% E7% 8E% 87% E3% 83% BB% E7% B5% B1% E8% A8% 88I-% E6% 9D% B1% E4% BA % AC% E5% A4% A7% E5% AD% A6% E5% B7% A5% E5% AD% A6% E6% 95% 99% E7% A8% 8B-% E7% B8% 84% E7% 94% B0 / dp / 4621087150) "Es gibt k verursachende Ereignisse von $ B_1, B_2, ..., B_k $, und diese Ereignisse schließen sich gegenseitig aus, und es treten keine anderen Ereignisse auf."
P(A)=P[\cup _{i=1}^{k}(A\cap B_i)]\\
=\sum _{i=1}^{k}P(A\cap B_i)\\
=\sum _{i=1}^{k}P(A|B_i)P(B_i)
Wird sein. Einsetzen in die obige Gleichung
P(B_i|A)=\frac{P(A|B_i)P(B_i)}{\sum _{j=1}^{k}P(A|B_j)P(B_j)}
Anzahl von Versuchen | Tabelle | zurück |
---|---|---|
10 | 0.6 | 0.4 |
100 | 0.51 | 0.49 |
1000 | 0.479 | 0.521 |
10000 | 0.505 | 0.495 |
100000 | 0.49939 | 0.50061 |
1000000 | 0.500783 | 0.499217 |
10000000 | 0.500065 | 0.499935 |
calc_steps = 1000
print('calc_steps=',calc_steps)
dice_rolls = np.random.choice(dice_data,calc_steps)
for i in range(0,2):
p = len(dice_rolls[dice_rolls==i])/calc_steps
print(i, 'Wahrscheinlichkeit des Auftretens;', p)
Probabilistische Variable, Wahrscheinlichkeitsfunktion, Wahrscheinlichkeitsdichtefunktion, Erwartungswert, Gleichverteilung, Bernoulli-Verteilung, Binomialverteilung, Normalverteilung, Poisson-Verteilung, logarithmische Normalverteilung, Kerndichteschätzung
Eine Wahrscheinlichkeitsvariable ist eine Variable, der eine Wahrscheinlichkeit einem möglichen Wert zugeordnet ist. In Anbetracht der Würfel sind die möglichen Werte der Variablen 1-6, und die Erscheinungswahrscheinlichkeit wird gleichermaßen 1/6 zugewiesen, wie in der folgenden Tabelle gezeigt. Hier wird die Variable X als Wahrscheinlichkeitsvariable bezeichnet, die mögliche Werte angibt, und P (X) ist die Wahrscheinlichkeit jedes Auftretens.
X | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
P(X) | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 |
Großbuchstaben X repräsentiert eine stochastische Variable und Kleinbuchstaben x repräsentiert ihren Realisierungswert. Zusätzlich zeigt der Großbuchstabe P (X) die Erscheinungswahrscheinlichkeit und der Kleinbuchstabe p (x) den realisierten Wert.
\Sigma _{i=1}^6 p(x_i)= 1
Der "" Teil unten wird aus der obigen Referenz p21 zitiert. "Wenn die Wahrscheinlichkeitsvariable X ein diskreter Typ ist, wird das Folgende als Wahrscheinlichkeitsverteilung von X bezeichnet.
P(X=x_i) = f(x_i)
Die Wahrscheinlichkeit an jedem Punkt ist eine Funktion von $ x $ (der Index i wird unten weggelassen), und $ f (x) $ wird als Wahrscheinlichkeitsfunktion bezeichnet. ""
Die Verteilungsfunktion (kumulative Wahrscheinlichkeitsverteilungsfunktion) ist unten definiert.
F(X)=P(X\leq x) = \Sigma _{x_i \leq x}p(x_i)
Hier wird im Fall einer kontinuierlichen Wahrscheinlichkeitsvariablen die Ableitung der Verteilungsfunktion als Dichtefunktion (Wahrscheinlichkeitsdichtefunktion) bezeichnet und wie folgt definiert.
f(x)= \frac{dF(x)}{dx}
Unter der Annahme, dass die Wahrscheinlichkeitsvariable X ist, lautet die Definitionsformel des erwarteten Werts E (X) wie folgt.
E(x)= \Sigma _x xf(x)
Zum Beispiel sind die Würfel wie folgt.
\begin{align}
E(x)&= 1*\frac{1}{6}+2*\frac{1}{6}+3*\frac{1}{6}+4*\frac{1}{6}+5*\frac{1}{6}+6*\frac{1}{6}\\
&=\frac{21}{6}\\
&=3.5
\end{align}
Diejenigen mit der gleichen Wahrscheinlichkeit, dass alle Ereignisse auftreten, werden als Gleichverteilungen bezeichnet. Im Fall von Würfeln ist es wie folgt
prob_data = []
print('calc_steps=',calc_steps)
dice_rolls = np.random.choice(dice_data,calc_steps)
for i in range(1,7):
p = len(dice_rolls[dice_rolls==i])/calc_steps
prob_data.append(p)
print(i, 'Wahrscheinlichkeit des Auftretens;', p)
plt.bar(dice_data, prob_data)
plt.grid()
plt.show()
>python dice_choice.py
calc_steps= 1000
Wahrscheinlichkeit von 1; 0.153
Wahrscheinlichkeit von 2; 0.17
Wahrscheinlichkeit von 3; 0.161
Wahrscheinlichkeit von 4; 0.17
Wahrscheinlichkeit von 5; 0.148
Wahrscheinlichkeit von 6; 0.198
Bernoulli-Studie, Studie mit binären Ergebnissen Bernoulli-Verteilung: Wahrscheinlichkeit, dass jedes Ereignis in einem einzelnen Bernoulli-Versuch auftritt Wenn Sie Münzen werfen, die Wahrscheinlichkeit, dass die Vorderseite herauskommt, die Wahrscheinlichkeit, dass die Rückseite herauskommt
Das Folgende ist die Bernoulli-Verteilung, wenn das Ergebnis des achtmaligen Werfens von Münzen [0,0,0,0,0,1,1,1] ist.
prob_be_data = []
coin_data = np.array([0,0,0,0,0,1,1,1])
for i in np.unique(coin_data):
p = len(coin_data[coin_data==i])/len(coin_data)
prob_be_data.append(p)
print(i, 'Wahrscheinlichkeit des Auftretens;', p)
plt.bar([0,1], prob_be_data, align = 'center')
plt.xticks([0,1], ['head', 'tail'])
plt.grid()
plt.show()
Wahrscheinlichkeit von 0; 0.625
Wahrscheinlichkeit von 1; 0.375
Erstellen Sie Daten basierend auf einer bestimmten Verteilung. Im Folgenden werden die Eigenschaften der Verteilungsdaten durch Berechnung unter Verwendung verschiedener Verteilungsfunktionen von numpy untersucht.
Die Binomialverteilung ist ein unabhängiger Bernoulli-Versuch, der n-mal wiederholt wird. Es kann wie folgt generiert werden. (30 Versuche, Wahrscheinlichkeit 0,5), als ich 1000 Mal versuchte, ist es wie folgt. Es gibt einen Durchschnitt um 15 und die Dispersion ist 30/4
np.random.seed(0)
x = np.random.binomial(30,0.5,1000)
print(x.mean(), x.var())
#14.98 7.6176
plt.hist(x)
plt.grid()
plt.show()
10000sample
Anzahl der Regentropfen pro Flächeneinheit, Anzahl der Bäume pro Quadratmeter usw. Die Zahl, die in einem bestimmten Abschnitt erwartet wird, ist 7, und die Stichprobe 1000 ist wie folgt.
np.random.seed(0)
x = np.random.poisson(7,1000)
print(x.mean(), x.var())
#6.885 6.457775
plt.hist(x)
plt.grid()
plt.show()
10000sample
Normalverteilung mu; Mittelwert, Sigma; Standardabweichung
np.random.seed(0)
x = np.random.normal(5,10,1000)
print(x.mean(), x.var())
#4.547432925098047 97.42344563121543
plt.hist(x)
plt.grid()
plt.show()
Log Normalverteilung mit logarithmischer Achse auf der horizontalen Achse
np.random.seed(0)
mu, sigma = 3., 0.4
x = np.random.lognormal(mu,sigma,1000)
print(x.mean(), x.var())
#21.329823289919993 76.9718785871209
plt.hist(x)
plt.grid()
plt.show()
Da es schwierig ist, die Bedeutung des Durchschnitts und der Standardabweichung zu verstehen, wenn man die Referenz betrachtet, Lassen Sie uns die vertikale Achse standardisieren und mit der durch die Formel berechneten Achse ausrichten.
s = np.random.lognormal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, bins=12, range =(0,60), density=True, align='mid')
x = np.linspace(min(bins), max(bins),120)
pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))/ (x * sigma * np.sqrt(2 * np.pi)))
plt.plot(x, pdf, linewidth=2, color='r')
plt.axis('tight')
plt.show()
Schätzen Sie die Dichtefunktion anhand der angegebenen Daten. Gehen Sie wie folgt vor, um Fehlzeiten mithilfe der Kerneldichtefunktion abzuschätzen:
student_data_math = pd.read_csv('./chap3/student-mat.csv', sep =';')
student_data_math.absences.plot(kind='kde', style='k--')
student_data_math.absences.hist(density=True,align='mid')
plt.grid()
plt.show()
Ich kann nicht verstehen, welche Art von Funktion kde übernimmt, also aus der Referenz 【Referenz】 [Schätzung der Kerneldichte @wikipedia](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E5%AF%86] % E5% BA% A6% E6% 8E% A8% E5% AE% 9A #: ~: Text =% E3% 82% AB% E3% 83% BC% E3% 83% 8D% E3% 83% AB% E5 % AF% 86% E5% BA% A6% E6% 8E% A8% E5% AE% 9A% EF% BC% 88% E3% 82% AB% E3% 83% BC% E3% 83% 8D% E3% 83 % AB% E3% 81% BF% E3% 81% A4,% E3% 83% 8E% E3% 83% B3% E3% 83% 91% E3% 83% A9% E3% 83% A1% E3% 83% 88% E3% 83% AA% E3% 83% 83% E3% 82% AF% E6% 89% 8B% E6% B3% 95% E3% 81% AE% E3% 81% B2% E3% 81% A8% E3% 81% A4% E3% 80% 82 & Text =% E5% A4% A7% E3% 81% BE% E3% 81% 8B% E3% 81% AB% E8% A8% 80% E3% 81% 88% E3 % 81% B0% E3% 80% 81% E3% 81% 82% E3% 82% 8B,% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% 92% E5% A4% 96% E6% 8C% BF% E3% 81% A7% E3% 81% 8D% E3% 82% 8B% E3% 80% 82) "Sei x1, x2, ..., xn Abtastwerte aus unabhängigen identischen Verteilungen mit einer (unbekannten) Wahrscheinlichkeitsdichtefunktion. Kernelfunktion K, Kerndichteschätzung der Bandbreite (Glättungsparameter) h. Was ist ein Kernel-Dichteschätzer?
\begin{align}
f(x)&=\frac{1}{nh}∑^n_{i=1}K(\frac{x−X_i}{h})\\
\\
Hier normaler Kernel&Die folgende Normalverteilung wird für die Funktion verwendet.\\
\\
K(x)&=\frac{1}{2\pi}e^{\frac{x^2}{2}}\\
\end{align}
Simultane Wahrscheinlichkeitsverteilung, periphere Wahrscheinlichkeitsfunktion, bedingte Wahrscheinlichkeitsfunktion, bedingter Mittelwert, verteilte Kovarianzmatrix, mehrdimensionale Normalverteilung
Stellen Sie sich eine diskrete Wahrscheinlichkeitsvariable vor, bei der X einen Wert für $ {x_0, x_1, ...} $ und Y einen Wert für $ {y_0, y_1, ...} $ annimmt. Wenn die Wahrscheinlichkeiten von $ X = x_i $ und $ Y = y_i $ wie folgt geschrieben werden, wird das Folgende als simultane Wahrscheinlichkeitsfunktion bezeichnet.
P(X=x_i, Y=y_i) = p_{X,Y}\{x_i,y_i\}
Das Folgende wird als periphere Wahrscheinlichkeitsfunktion von X bezeichnet.
P_X(x_i) = \Sigma _{j=0}^{\infty }p_{X,Y}\{x_i,y_i\}
Y wird auf die gleiche Weise definiert.
Die bedingte Wahrscheinlichkeitsfunktion von $ Y = y_i $ bei $ X = x_i $ kann wie folgt definiert werden.
p_{Y|X}(y_j|x_i)=P(Y=y_j|X=x_i)=\frac{p_{X,Y}(x_i,y_j)}{p_X(x_i)}
Außerdem ist die bedingte Erwartung von Y, wenn $ X = x_i $ gegeben ist, wie folgt.
E[Y|X=x_i]=\Sigma _{j=1}^{\infty }y_jp_{Y|X}(y_j|x_i)=\frac{\Sigma _{j=1}^{\infty }y_ip_{X,Y}(x_i,y_j)}{p_X(x_i)}
Die Definition der Unabhängigkeit in zwei Variablen wird für alle xi, yi als unabhängig angenommen, wenn das Folgende gilt.
p_{X|Y}(x_i|y_j)=p_X(x_i)p_Y(y_j)
In Bezug auf die kontinuierliche Verteilung können die simultane Wahrscheinlichkeitsdichtefunktion, die periphere Wahrscheinlichkeitsdichtefunktion, die bedingte Wahrscheinlichkeitsdichtefunktion, die unabhängige Definition usw. definiert werden, sie werden jedoch weggelassen.
Das folgende Diagramm wurde im folgenden Programm angezeigt.
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as st
from scipy.stats import multivariate_normal
from mpl_toolkits.mplot3d import Axes3D
x,y =np.mgrid[10:100:2,10:100:2]
pos = np.empty(x.shape + (2,))
pos[:,:,0]=x
pos[:,:,1]=y
rv = multivariate_normal([50,50],[[100,0],[0,100]])
z=rv.pdf(pos)
fig = plt.figure(dpi=100)
ax=Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
ax.ticklabel_format(style='sci', axis = 'z',scilimits=(0,0))
plt.show()
Das Programm ist etwas schwierig, deshalb werde ich es erklären. Es ist wichtig, die folgenden zwei Zeilen zu verstehen.
rv = multivariate_normal([50,50],[[100,0],[0,100]])
z=rv.pdf(pos)
Die folgenden Referenzen helfen Ihnen beim Verständnis. 【Referenz】 ① [Multivariate Normalverteilung @wikipedia](https://ja.wikipedia.org/wiki/%E5%A4%9A%E5%A4%89%E9%87%8F%E6%AD%A3%E8%A6 % 8F% E5% 88% 86% E5% B8% 83) ② Daten generieren, die einer mehrdimensionalen Normalverteilung folgen Gemäß Referenz (2) kann der obige Code wie folgt geschrieben werden. Wobei mu der Mittelwert und Sigma die Kovarianzmatrix ist.
mu = [50,50]
sigma = [[100,0],[0,100]]
rv = multivariate_normal(mu, sigma)
Die Formel lautet wie folgt.
\mu=\begin{pmatrix}\mu_x \\ \mu_y \end{pmatrix}\\
\sum=
\begin{pmatrix} \sigma_x^2 & Cov(x,y) \\ Cov(y,x) & \sigma_y^2 \end{pmatrix}\\
=\begin{pmatrix} \sigma_x^2 & \rho \sigma_x\sigma_y \\ \rho\sigma_y\sigma_x & \sigma_y^2 \end{pmatrix}
Das heißt, hier ist es wie folgt.
\mu=\begin{pmatrix} 50 \\ 50\end{pmatrix}\\
\sum=\begin{pmatrix}100 & 0 \\ 0 & 100\end{pmatrix}
Und die gesamte Formel von multivariate_normal (mu, sigma) wird durch das Gitter mit z = rv.pdf (pos) für die Menge von (x, y) unten berechnet.
f(x,y)=\frac{1}{2\pi\sigma_x\sigma_y\sqrt{1-\rho^2}}\exp(-\frac{1}{2(1-\rho^2)}[\frac{(x-\mu_x)^2}{\sigma_x^2}+\frac{(y-\mu_y)^2}{\sigma_y^2}-\frac{2\rho(x-\mu_x)(y-\mu_y)}{\sigma_x\sigma_y}])
Darüber hinaus ist fast derselbe Code in Referenz ③ unten angegeben. 【Referenz】 ③Python plot 3d scatter and density ④scipy.stats.multivariate_normal Um z = rv.pdf (pos) zu verstehen, hat pdf die folgende Bedeutung und nimmt ein Argument als Bonus. Ich benutze: pdf=Probability density function.
【Referenz】 Python 3: Schreiben eines 3D-Diagramms (matplotlib, pyplot, mplot3d, MPL) Der Code lautet wie folgt.
def func(x,y):
mux,muy,sigmax,sigmay,rho=50.,50.,10.,10.,0.
fxy=np.exp(-((x-mux)**2/(sigmax**2) + (y-muy)**2/(sigmay**2)-2*rho*(x-mux)*(y-muy)/(sigmax*sigmay))/2*(1-rho**2))/(2*np.pi*sigmax*sigmay*np.sqrt(1-rho**2))
return fxy
x,y =np.mgrid[10:100:2,10:100:2]
z=func(x,y)
fig = plt.figure(dpi=100)
ax=Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
ax.ticklabel_format(style='sci', axis = 'z',scilimits=(0,0))
plt.show()
Da das Aussehen das gleiche ist, wurde das gleiche Bild wie unten gezeigt erhalten. Wenn mux, muy, sigmax, sigmay, rho = 50., 50., 10., 10., 0.3 Und rv = multivariate_normal([50,50],[[100,30],[30,100]]) Wenn ich mit berechnete, wurde das gleiche Ergebnis wie folgt erhalten.
Was ist erforderlich als rv.Methods () von rv = multivariate_normal (mu, sigma)
Methods | Kommentar |
---|---|
pdf(x, mean=None, cov=1, allow_singular=False) |
Probability density function. |
logpdf(x, mean=None, cov=1, allow_singular=False) |
Log of the probability density function. |
cdf(x, mean=None, cov=1, allow_singular=False, maxpts=1000000*dim, abseps=1e-5, releps=1e-5) |
Cumulative distribution function. |
logcdf(x, mean=None, cov=1, allow_singular=False, maxpts=1000000*dim, abseps=1e-5, releps=1e-5) |
Log of the cumulative distribution function. |
rvs(mean=None, cov=1, size=1, random_state=None) |
Draw random samples from a multivariate normal distribution. |
entropy() |
Compute the differential entropy of the multivariate normal. |
Recommended Posts