2017-09-23 271 views
0

我正在尋找在python中創建標準正態分佈(平均值= 0,Std Deviation = 1)曲線,然後在左側,右側和z-分數中間創建陰影區域。我還想打印陰影區域的z分數和相關概率。Python中的標準正態分佈

比方說,在陰影區,我感興趣的是:

概率(Z < -0.75)

Probability(z < -0.75)

概率(Z> 0.75)

Probability(z > 0.75)

概率(-0.75 < z < 0.75)

Probability(-0.75 < z < 0.75)

我用下面的行來創建標準正態分佈曲線。如何爲相關的z分數添加陰影區域並將z分數與概率一起打印?

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.stats import norm 

range = np.arange(-3,3,0.001) 
plt.plot(range, norm.pdf(range, 0, 1)) 
plt.show() 
+0

'arrange' or'arange',is typo? – eyllanesc

+0

arange。對不起......我修好了。 – arqchicago

+0

它的工作原理!謝謝! – arqchicago

回答

2

您必須使用fill_between功能,吸引了2條曲線之間的面積,在這種情況下y = 0y = normal distribution之間,以方便任務已創建了以下功能:

def draw_z_score(x, cond, mu, sigma, title): 
    y = norm.pdf(x, mu, sigma) 
    z = x[cond] 
    plt.plot(x, y) 
    plt.fill_between(z, 0, norm.pdf(z, mu, sigma)) 
    plt.title(title) 
    plt.show() 

例如:

x = np.arange(-3,3,0.001) 
z0 = -0.75 
draw_z_score(x, x<z0, 0, 1, 'z<-0.75') 

產量:

enter image description here


x = np.arange(-3,3,0.001) 
z0 = 0.75 
draw_z_score(x, (-z0 < x) & (x < z0), 0, 1, '-0.75<z<0.75') 

輸出:

enter image description here


x = np.arange(-3,3,0.001) 
z0 = 0.75 
draw_z_score(x, x > z0, 0, 1, ' z> 0.75') 

輸出:

enter image description here