【问题标题】:standard normal distribution in pythonpython中的标准正态分布
【发布时间】:2018-03-04 16:08:48
【问题描述】:

我希望在 python 中创建标准正态分布(均值 = 0,标准偏差 = 1)曲线,然后在 z 分数的左侧、右侧和中间创建阴影区域。我还想用阴影区域打印 z 分数和相关概率。

比如说,我感兴趣的阴影区域是:

概率(z

概率(z > 0.75)

概率(-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()

【问题讨论】:

    标签: python matplotlib normal-distribution


    【解决方案1】:

    您必须使用fill_between 函数绘制两条曲线之间的区域,在这种情况下,在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')
    

    输出:


    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')
    

    输出:


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

    输出:

    【讨论】: