Comment échantillonner à partir de n'importe quelle fonction de densité de probabilité en Python

~~ MCMC devrait être fait! Il n’existe pas de Tsukkomi.

Comme vous le savez, scipy dispose de nombreuses fonctions de densité de probabilité prédéfinies que vous pouvez utiliser pour facilement échantillonner, tracer des fonctions de densité de probabilité, etc.

Par exemple

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

Si tel est le cas, 1000 échantillons peuvent être obtenus à partir d'une distribution normale avec une moyenne de 50 et un écart type de 20.

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

Ensuite, vous pouvez également illustrer la distribution normale avec $ 0 <x <100 $.

Alors, comment échantillonner à partir de votre propre fonction de densité de probabilité qui n'est pas prédéfinie dans scipy? Dans le cas de la distribution discrète, elle est introduite dans Article par @ yk-tanigawa, donc ici nous traiterons le cas de la distribution continue.

À titre d'exemple, en supposant que la distribution normale n'est pas définie dans scipy.stats (elle est en fait définie), voici un exemple de définition et d'échantillonnage. Il vous suffit d'écrire la fonction que vous souhaitez définir dans la fonction _pdf, héritant de 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) 

Veuillez noter que la fonction de densité de probabilité que vous définissez vous-même doit être normalisée. Si vous ne l'avez pas standardisé, vous pouvez utiliser Échantillonnage de rejet.

(Cependant, même si vous regardez Documentation, il y a de nombreuses raisons pour lesquelles a = 0 est nécessaire. Je ne sais pas ...)

Recommended Posts

Comment échantillonner à partir de n'importe quelle fonction de densité de probabilité en Python
Comment développer en Python
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
Exécuter la fonction Python à partir de Powershell (comment passer des arguments)
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
[Python] Comment faire PCA avec Python
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment accéder à wikipedia depuis python
Comment utiliser la fonction zip de python
Comment gérer le japonais avec Python
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Comment mettre à jour Google Sheets à partir de Python
[Itertools.permutations] Comment créer une séquence en Python
Exemple de script pour piéger les signaux en Python
[python] Comment utiliser __command__, explication des fonctions
Comment utiliser BigQuery en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
Comment accéder à RDS depuis Lambda (python)
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
Comment utiliser les expressions régulières en Python
Convertir de Markdown en HTML en Python
Obtenez la probabilité de précipitation de XML avec Python
Comment afficher Hello World en python
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
Comment utiliser la bibliothèque C en Python
Comment recevoir des arguments de ligne de commande en Python
Enregistrer automatiquement les arguments de fonction dans argparse en Python
Comment ouvrir un navigateur Web à partir de python
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Étude de Python Hour7: Comment utiliser les classes
Résumé de la façon d'importer des fichiers dans Python 3
Comment simplifier l'ajustement polymorphe restreint en python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment implémenter la mémoire partagée en Python (mmap.mmap)
Comment obtenir les résultats de l'identifiant dans Celery
Comment créer un fichier JSON en Python
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment générer un objet Python à partir de JSON
Résumé de l'utilisation de MNIST avec Python
Comment spécifier la version TLS dans les requêtes python