Ich möchte die inverse Gammafunktion in Python testen, sie ist jedoch in scipy [invgamma] implementiert (https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.invgamma.html) [ ^ 1] wurde so konzipiert, dass einer der Parameter nicht manipuliert werden konnte (der Parameter β der Funktion, der im nächsten Abschnitt angezeigt wird, ist auf β = 1 festgelegt: Bitte lassen Sie mich wissen, wenn jemand den Grund kennt). Ich habe es nach dem Training geschafft (beide in Python und Qiita) (einschließlich Memorandum).
Die inverse Gammafunktion ist eine kontinuierliche Wahrscheinlichkeitsverteilung, die in der folgenden Form ausgedrückt wird.
f(x,α,β) = \frac{β^α}{Γ(α)}x^{-α-1}e^{\frac{-β}{x}} (x>0)\\
(Jedoch Γ(α) = \int_{0}^{∞}x^{α-1}e^{-x}Gammafunktion dargestellt durch dx)
Ich bin nicht sicher, warum das Invgamma von scipy auf β = 1 festgelegt ist (ich weiß nicht viel über etwas anderes als mein eigenes Feld ...), aber ich verwende MCMC (Markov-Ketten-Monte-Carlo-Methode), um die Verteilung der Normalverteilung vorzuverteilen. Ich habe diesen Artikel dieses Mal geschrieben, weil ich bei der Verwendung andere als β = 1 verwenden möchte. Wenn Sie mehr über MCMC erfahren möchten, lesen Sie bitte @ pynomis Artikel [^ 2].
from scipy import stats
from scipy.special import gamma
import numpy as np
###Wahrscheinlichkeitsdichtefunktion der inversen Gammaverteilung###
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
###Abtastung aus der inversen Gammafunktion###
invgamma = invgamma(name="invgamma", a=0.0)
sample_from_invgamma = invgamma.rvs(size=1, alpha = 1, beta = 1.0)
So was. (Betriebssystem: Windows10, Python3.7, Entwicklungsumgebung: Es wurde bestätigt, dass Spyder funktioniert, und wenn die Zufallszahl mit β = 1 festgelegt ist, stimmt der Stichprobenwert mit dem Invgamma von scipy überein, sodass ich denke, dass dies wahrscheinlich korrekt ist.)
Beim Schreiben dieses Artikels und Codes habe ich auch auf den [Artikel] von @ physics303 verwiesen (https://qiita.com/physics303/items/93626d32dd1d17388610) [^ 3]. Vielen Dank.
Recommended Posts