J'ai essayé d'implémenter la fonction gamma inverse en python

introduction

Je veux échantillonner à partir de la fonction gamma inverse en Python, mais elle est implémentée dans scipy invgamma [ ^ 1] a été conçu pour que l'un des paramètres ne puisse pas être altéré (le paramètre β de la fonction qui apparaît dans la section suivante est fixé à β = 1: si quelqu'un connaît la raison, merci de me le faire savoir). Je l'ai fait après l'entraînement (à la fois en postant sur python et Qiita) (y compris le mémorandum).

Qu'est-ce qu'une fonction gamma inverse?

La fonction gamma inverse est une distribution de probabilité continue exprimée sous la forme suivante.

f(x,α,β) = \frac{β^α}{Γ(α)}x^{-α-1}e^{\frac{-β}{x}}   (x>0)\\
(Cependant, Γ(α) = \int_{0}^{∞}x^{α-1}e^{-x}Fonction gamma représentée par dx)

Je ne sais pas pourquoi l'invgamma de scipy est fixé à β = 1 (je ne sais pas grand chose d'autre que mon propre domaine ...), mais j'utilise MCMC (Markov Chain Monte Carlo Method) pour pré-distribuer la distribution de la distribution normale. J'ai écrit cet article cette fois parce que je veux utiliser autre chose que β = 1 lors de son utilisation. Si vous voulez en savoir plus sur MCMC, veuillez consulter l '[article] de @ pynomi (https://qiita.com/pynomi/items/75ac937fc4ed0b39e3d5) [^ 2].

Je l'ai vraiment écrit

from scipy import stats
from scipy.special import gamma
import numpy as np

###Fonction de densité de probabilité de la distribution gamma inverse###
class invgamma(stats.rv_continuous):

    def _pdf(self, x,alpha,beta):
        
        px = (beta**alpha)/gamma(alpha)*x**(-alpha-1)*np.exp(-beta/x)
        
        return px

###Échantillonnage à partir de la fonction gamma inverse###
invgamma = invgamma(name="invgamma", a=0.0)    
sample_from_invgamma = invgamma.rvs(size=1, alpha = 1, beta = 1.0) 

Comme ça. (OS: Windows10, Python3.7, Environnement de développement: Opération confirmée avec Spyder, lorsque le nombre aléatoire est fixé avec β = 1, la valeur d'échantillonnage correspond à l'invgamma de scipy, donc je pense que c'est probablement correct.)

Citation

En écrivant cet article et ce code, j'ai également fait référence à l '[article] de @ physics303 (https://qiita.com/physics303/items/93626d32dd1d17388610) [^ 3]. Merci beaucoup.

Recommended Posts

J'ai essayé d'implémenter la fonction gamma inverse en python
J'ai écrit la pile en Python
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Prenez la somme logique de List en Python (fonction zip)
J'ai essayé d'implémenter la régression logistique de Cousera en Python
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
J'ai essayé d'implémenter le filtre anti-spam bayésien de Robinson avec python
Implémentation de SimRank en Python
J'ai essayé la méthode des moindres carrés en Python
Implémentation de Shiritori en Python
J'ai essayé d'implémenter Human In The Loop - Partie ① Tableau de bord -
Je veux afficher la progression en Python!
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
J'ai essayé d'implémenter la recherche de priorité de largeur avec python (file d'attente, dessin personnalisé)
J'ai essayé de représenter graphiquement les packages installés en Python
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
Je veux utiliser le jeu de données R avec python
J'ai implémenté une commande de remplacement de type Vim dans Slackbot #Python
Que signifie le dernier () dans une fonction en Python?
J'ai écrit python en japonais
Créer une fonction en Python
Utiliser la fonction de rappel en Python
Trouver des erreurs en Python
Fonction ntile (décile) en python
À propos de la fonction enumerate (python)
Modélisation de fonctions non linéaires en Python
Dessiner la fonction Yin en python
Implémentation de Supreme Solver dans Python 3
Fonction immédiate (lie) en python
Je comprends Python en japonais!
Ce que j'ai appris en Python
J'ai téléchargé la source python
Dans Python3.8 et versions ultérieures, le mod inverse peut être calculé avec la fonction intégrée pow.
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai vérifié le package Python pré-installé dans Google Cloud Dataflow
Avoir le graphique d'équation de la fonction linéaire dessiné en Python
Implémentation de l'algorithme de "Algorithm Picture Book" en Python3 (Bubble Sort)
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai essayé d'implémenter l'algorithme de calcul séquentiel non biaisé de Donald Knuth en Python
Implémentation de l'algorithme «Algorithm Picture Book» en Python3 (tri sélectif)
J'ai implémenté N-Queen dans différentes langues et mesuré la vitesse
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
Implémenter la fonction power.prop.test de R en python
Avertissement de tri dans la fonction pd.concat
Obtenir l'API arXiv en Python
Définition du type d'argument de fonction en python
Je me suis perdu dans le labyrinthe
Implémentation de la segmentation d'image en python (Union-Find)
Notation inclusive dans l'argument de la fonction Python
Python dans le navigateur: la recommandation de Brython
Enregistrez le fichier binaire en Python
Frappez l'API Sesami en Python
Ecrire une fonction AWS Lambda en Python
J'ai participé au tour de qualification ISUCON10!
[Python] J'ai essayé d'implémenter un échantillonnage de Gibbs marginalisé
Mesurer le temps d'exécution de la fonction en Python