python - 对数正态分布
问题描述
当定义一个平均值为 15.1466、标准差为 0.3738 的对数正态函数时,您应该得到的结果如下:
但是,当我使用 python 运行以下代码时,我得到的结果是不一样的。
mu, sigma = 15.1466, 0.3738
s = np.random.lognormal(mu, sigma, 10000)
count, bins, ignored = plt.hist(s, 30,
density=True,
color='blue')
x = np.linspace(min(bins),
max(bins), 10000)
pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))
/ (x * sigma * np.sqrt(2 * np.pi)))
plt.plot(x, pdf, color='black')
plt.grid()
plt.show()
解决方案
均值和标准差与对数正态分布参数 mu 和 sigma 不同
检查维基
基本上,给定均值和 std.dev,您计算均值和方差,然后求解两个方程组以找到 mu 和 sigma
只有这样你才能将 mu 和 sigma 输入到采样、PDF 等例程中
推荐阅读
- ruby - 如何在不影响日语字符集的情况下过滤掉不可见字符?
- ruby-on-rails - 作业推送到队列,但不处理
- bash - Bash If else 从文件中读取
- angular - 如何将一个数值乘以 10 到 angular7 中 json 的值
- sql - 在 Hive 中计算百分位数时处理 Null
- ios - 当通过单独的方法更改值时,SwiftUI @State 不会触发更新
- php - 基于自定义分类法的 Wordpress tax_query 未显示任何结果
- erlang - 如何在 Erlang 中读取 2 字节浮点数?
- c# - 如何在 .net core 2.2 中自定义问题细节以进行异常处理
- python - OperationalError:学生表没有名为 Fecha 的列