使用Matplotlib绘制的概率密度直方图没有意义。

8

我刚刚尝试绘制我运行的模拟的概率密度直方图。然而,当我绘制它时,每个bin的概率似乎与频率图的结果不匹配。使用50个bins,我期望每个bin的平均概率为2%,但这在图表中没有反映。

提前致谢。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plntAcres = 88.0
hvstPer = 0.99
hvstAcres = plntAcres*hvstPer
yldAcre = np.random.triangular(47,48,49, 10000)

carryIn = 464
pdn = hvstAcres * yldAcre
imp = 25.0
ttlSup = carryIn + pdn + imp

crush = np.random.uniform(1945, 1990,10000)
expts = np.random.uniform(2085, 2200,10000)
seedRes = 130
ttlDem = crush + expts + seedRes

carryOut = ttlSup - ttlDem

print carryOut

plt.hist(carryOut, bins=50,normed=True)
plt.title("Carry Out Distribution")
plt.xlabel("Value")
plt.ylabel("Probability")
plt.show()

Probability density of Carry out

2个回答

12

hist 函数中,normed 参数不会产生概率,而是概率密度。如果您想要概率本身,请改用 weights 参数(并提供 1 / len(carryOut))。

关键的两行:

weights = np.ones_like(carryOut) / (len(carryOut))
plt.hist(carryOut, bins=50, weights=weights)

0

您的模式是钟形曲线,通常意味着您的随机变量服从正态分布。请查看维基百科正态分布/高斯分布


而且有原因。他正在添加(减去)三个具有可比标准差的随机变量。除非它们相关(在这种情况下不是),结果往往接近高斯分布(大数定律)。 - honza_p
我的主要问题是个别箱子概率似乎不相加为1,我不确定原因。@honza_p - Moj
现在我明白这个问题了。 - honza_p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接