【问题标题】:Discretizing lognormal distribution in Python在 Python 中离散对数正态分布
【发布时间】:2017-10-22 22:14:58
【问题描述】:

假设我有一个由

给出的网格
import numpy as np
grid = np.linspace(0,20,1000)

我想得到一个 1000×1 的向量 p,这样如果要绘制点 (grid[i], p[i]) 该图看起来像对数正态分布的密度。

【问题讨论】:

    标签: python numpy distribution


    【解决方案1】:

    使用 scipy 的 stats 获取概率分布的 pdf!

    Numpy,在大多数(全部?)情况下仅支持采样方法,而不支持 pdf 计算。需要什么肯定取决于用例。

    通常 pdf 在实际的仅采样实现中不起作用,例如在这种情况下,采样减少到 normal-distribution sampling(通常减少到与其他函数结合的均匀采样),然后是指数函数 (@987654323 @):

    double rk_lognormal(rk_state *state, double mean, double sigma)
    {
        return exp(rk_normal(state, mean, sigma));
    }
    

    请务必阅读以上文档以了解如何使用这些文档!

    示例代码:

    import numpy as np
    import scipy.stats as spt
    import matplotlib.pyplot as plt
    
    rv = spt.lognorm(0.954)  # "frozen" RV (shape-param fixed)
    x_points = np.linspace(1,20,1000, dtype=int)  # 0 excluded
    plt.scatter(x_points, rv.pdf(x_points))
    plt.show()
    

    输出:

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 2015-09-21
      • 2014-12-11
      • 1970-01-01
      • 2020-01-03
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多