Wie berechne ich die Umkehrung der kumulativen Verteilungsfunktion (CDF) der Normalverteilung in Python?
Welche Bibliothek soll ich benutzen? Möglicherweise scipy?
python
scipy
normal-distribution
Yueyoum
quelle
quelle
Antworten:
NORMSINV (in einem Kommentar erwähnt) ist die Umkehrung der CDF der Standardnormalverteilung. Mit
scipy
können Sie dies mit derppf
Methode desscipy.stats.norm
Objekts berechnen . Das Akronymppf
steht für die Prozentpunktfunktion , die ein anderer Name für die Quantilfunktion ist .In [20]: from scipy.stats import norm In [21]: norm.ppf(0.95) Out[21]: 1.6448536269514722
Überprüfen Sie, ob es sich um die Umkehrung der CDF handelt:
In [34]: norm.cdf(norm.ppf(0.95)) Out[34]: 0.94999999999999996
norm.ppf
Verwendet standardmäßig mean = 0 und stddev = 1, was die "Standard" -Normalverteilung ist. Sie können die durch die Angabe eine unterschiedliche Mittelwert und Standardabweichung verwendenloc
undscale
jeweils Argumente.In [35]: norm.ppf(0.95, loc=10, scale=2) Out[35]: 13.289707253902945
Wenn Sie sich den Quellcode ansehen
scipy.stats.norm
, werden Sie feststellen, dass dieppf
Methode letztendlich aufruftscipy.special.ndtri
. Um die Umkehrung der CDF der Standardnormalverteilung zu berechnen, können Sie diese Funktion direkt verwenden:In [43]: from scipy.special import ndtri In [44]: ndtri(0.95) Out[44]: 1.6448536269514722
quelle
# given random variable X (house price) with population muy = 60, sigma = 40 import scipy as sc import scipy.stats as sct sc.version.full_version # 0.15.1 #a. Find P(X<50) sct.norm.cdf(x=50,loc=60,scale=40) # 0.4012936743170763 #b. Find P(X>=50) sct.norm.sf(x=50,loc=60,scale=40) # 0.5987063256829237 #c. Find P(60<=X<=80) sct.norm.cdf(x=80,loc=60,scale=40) - sct.norm.cdf(x=60,loc=60,scale=40) #d. how much top most 5% expensive house cost at least? or find x where P(X>=x) = 0.05 sct.norm.isf(q=0.05,loc=60,scale=40) #e. how much top most 5% cheapest house cost at least? or find x where P(X<=x) = 0.05 sct.norm.ppf(q=0.05,loc=60,scale=40)
quelle
Ab
Python 3.8
dem Start stellt die Standardbibliothek dasNormalDist
Objekt als Teil desstatistics
Moduls bereit .Es kann verwendet werden, um die inverse kumulative Verteilungsfunktion (
inv_cdf
- inverse voncdf
) zu erhalten, die auch als Quantilfunktion oder Prozentpunktfunktion für einen bestimmten Mittelwert (mu
) und eine bestimmte Standardabweichung (sigma
) bezeichnet wird:from statistics import NormalDist NormalDist(mu=10, sigma=2).inv_cdf(0.95) # 13.289707253902943
Was für die Standardnormalverteilung (
mu = 0
undsigma = 1
) vereinfacht werden kann :NormalDist().inv_cdf(0.95) # 1.6448536269514715
quelle