【问题标题】:truncated normal distribution with scipy in python在 python 中使用 scipy 截断正态分布
【发布时间】:2017-05-10 00:32:35
【问题描述】:

我正在尝试在 Python3 中使用带有scipy 的截断正态分布。我想做一些简单的事情:绘制以 0.5 为中心且范围从 0 到 1 的截断法线的 pdf。我有以下代码行

from scipy import truncnorm
import matplotlib.pyplot as plt
plt.plot([truncnorm.pdf(p,0,1, loc=0.5) for p in np.arange(0,1.1,0.1)])

但是,这并没有给出我期望的漂亮的钟形概率分布函数。相反,它在 0.5 之前等于 0,我不知道为什么。对此有何建议?

【问题讨论】:

    标签: python python-3.x matplotlib scipy normal-distribution


    【解决方案1】:

    这是根据truncnorm的文档要遵循的过程。

    # user input
    myclip_a = 0
    myclip_b = 1
    my_mean = 0.5
    my_std = 0.3
    
    a, b = (myclip_a - my_mean) / my_std, (myclip_b - my_mean) / my_std
    x_range = np.linspace(-1,2,1000)
    plt.plot(x_range, truncnorm.pdf(x_range, a, b, loc = my_mean, scale = my_std))
    

    【讨论】: