在Python中分离对数正态分布

时间:2017-10-22 22:14:59

标签: python numpy distribution

假设我有一个由

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

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

1 个答案:

答案 0 :(得分:0)

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

Numpy,在大多数(所有?)案例中仅支持抽样方法,而不支持pdf计算。所需要的肯定取决于用例。

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

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

输出:

enter image description here