Python'da normal dağıtımın kümülatif dağılım işlevinin (CDF) tersini nasıl hesaplayabilirim?Python'da normal kümülatif dağılım işlevinin tersi nasıl hesaplanır?
Hangi kütüphaneyi kullanmalıyım? Muhtemelen scipy? (Bir yorumda)
Python'da normal dağıtımın kümülatif dağılım işlevinin (CDF) tersini nasıl hesaplayabilirim?Python'da normal kümülatif dağılım işlevinin tersi nasıl hesaplanır?
Hangi kütüphaneyi kullanmalıyım? Muhtemelen scipy? (Bir yorumda)
NORMSINV standart normal dağılımın CDF tersidir. scipy
'u kullanarak, bunu scipy.stats.norm
nesnesinin ppf
yöntemiyle hesaplayabilirsiniz. ppf
kısaltması, quantile function için başka bir ad olan percent point function anlamına gelir. o CDF'nin tersi olduğunu
In [20]: from scipy.stats import norm
In [21]: norm.ppf(0.95)
Out[21]: 1.6448536269514722
Kontrol: Varsayılan olarak
In [34]: norm.cdf(norm.ppf(0.95))
Out[34]: 0.94999999999999996
, norm.ppf
"standart" normal dağılım 0 = ortalama ve stddev = 1 kullanır. Sırasıyla loc
ve scale
argümanlarını belirterek farklı bir ortalama ve standart sapma kullanabilirsiniz. Eğer scipy.stats.norm
için kaynak koduna baktığımızda
In [35]: norm.ppf(0.95, loc=10, scale=2)
Out[35]: 13.289707253902945
, sen ppf
yöntem sonuçta scipy.special.ndtri
çağırır olduğunu göreceksiniz.
In [43]: from scipy.special import ndtri
In [44]: ndtri(0.95)
Out[44]: 1.6448536269514722
Her zaman "yüzde puan işlevi" (ppf) 'nin korkunç bir ad olduğunu düşünüyorum. İstatistikteki çoğu kişi "quantile function" kullanmaktadır. –
# 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)
PS: 'Ortalama' ve 'ölçek' olarak 'loc' değerini 'standart sapma' olarak kabul edebilirsiniz. – Suresh2692
sen (ters Gauss dağılımı anlamına mı http://en.wikipedia.org/wiki/: Yani standart normal dağılımın CDF'nin tersini hesaplamak için, doğrudan o fonksiyonu kullanabilirsiniz Inverse_Gaussian_distribution) veya normal dağılımın (http://en.wikipedia.org/wiki/Normal_distribution) kümülatif dağılım fonksiyonunun tersi mi yoksa başka bir şey mi? –
@WarrenWeckesser ikincisi: normal dağılımın kümülatif dağılım fonksiyonunun tersi – Yueyoum
@WarrenWeckesser excel'de "normsinv" fonksiyonunun python versiyonunu kastediyorum. – Yueyoum