2017-09-23 46 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