Wie man aus einer Wahrscheinlichkeitsdichtefunktion in Python tastet

~~ MCMC sollte gemacht werden! Es gibt kein Tsukkomi.

Wie Sie wissen, verfügt scipy über viele vordefinierte Wahrscheinlichkeitsdichtefunktionen, mit denen Sie problemlos Wahrscheinlichkeitsdichtefunktionen abtasten, zeichnen und vieles mehr können.

Zum Beispiel

stats.norm.rvs(loc=50, scale=20, size=1000)

In diesem Fall können 1000 Proben aus einer Normalverteilung mit einem Durchschnitt von 50 und einer Standardabweichung von 20 erhalten werden.

x = np.linspace(0, 100, 100)
px = stats.norm.pdf(x, loc=50, scale=20)
plt.plot(x, px)

Dann können Sie auch die Normalverteilung mit $ 0 <x <100 $ veranschaulichen.

Wie können Sie also aus Ihrer eigenen Wahrscheinlichkeitsdichtefunktion eine Stichprobe erstellen, die in scipy nicht vordefiniert ist? Im Fall der diskreten Verteilung wird es in Artikel von @ yk-tanigawa eingeführt, daher werden wir uns hier mit dem Fall der kontinuierlichen Verteilung befassen.

Unter der Annahme, dass die Normalverteilung nicht in scipy.stats definiert ist (sie ist tatsächlich definiert), finden Sie hier ein Beispiel, wie Sie sie selbst definieren und abtasten. Sie schreiben einfach die Funktion, die Sie definieren möchten, in die Funktion _pdf und erben von rv_continous.

from scipy import stats
import math

class gaussian(stats.rv_continuous):

    def _pdf(self, x, mu, sigma):
        normalize_factor = 1.0/(2.0*math.pi*sigma**2)**(1/2)
        px = normalize_factor * math.exp(-(x-mu)**2/(2*sigma**2))

        return px

gaussian = gaussian(name="gaussian", a=0.0)    
sample_from_gaussian = gaussian.rvs(size=1, mu=10.0, sigma=1.0) 

Bitte beachten Sie, dass die von Ihnen selbst definierte Wahrscheinlichkeitsdichtefunktion standardisiert werden muss. Wenn Sie es nicht standardisiert haben, können Sie [Rejection Sampling] verwenden (https://www.iwanttobeacat.com/entry/2018/03/24/225348).

(Selbst wenn Sie sich [Dokumentation] ansehen (https://docs.scipy.org/doc/scipy-1.2.1/reference/generated/scipy.stats.rv_continuous.html), gibt es viele Gründe, warum a = 0 erforderlich ist. Ich weiß es nicht ...)

Recommended Posts

Wie man aus einer Wahrscheinlichkeitsdichtefunktion in Python tastet
Wie man in Python entwickelt
So laden Sie Dateien von Selenium of Python in Chrome herunter
Führen Sie die Python-Funktion von Powershell aus (wie Sie Argumente übergeben).
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
[Python] Wie man PCA mit Python macht
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So extrahieren Sie einen Termin in Google Kalender mit Python
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
So greifen Sie über Python auf Wikipedia zu
Verwendung der Zip-Funktion von Python
Umgang mit Japanisch mit Python
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
So aktualisieren Sie Google Sheets von Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
Beispielskript zum Überfüllen von Signalen in Python
[Python] Verwendung von __command__, Funktionserklärung
So arbeiten Sie mit BigQuery in Python
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
Zugriff auf RDS von Lambda (Python)
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
Verwendung regulärer Ausdrücke in Python
In Python von Markdown in HTML konvertieren
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
[Python] So fügen Sie eine beliebige Anzahl von Standardeingaben in die Liste ein
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
Verwendung der C-Bibliothek in Python
So empfangen Sie Befehlszeilenargumente in Python
Registrieren Sie Funktionsargumente automatisch in argparse in Python
So öffnen Sie einen Webbrowser über Python
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
Studie aus Python Hour7: Verwendung von Klassen
Zusammenfassung zum Importieren von Dateien in Python 3
So vereinfachen Sie die eingeschränkte Polypoly-Anpassung in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
So implementieren Sie Shared Memory in Python (mmap.mmap)
So erhalten Sie Ergebnisse von id in Celery
So erstellen Sie eine JSON-Datei in Python
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So generieren Sie ein Python-Objekt aus JSON
Zusammenfassung der Verwendung von MNIST mit Python
So geben Sie die TLS-Version in Python-Anforderungen an