Mis*_*ter 30 python matplotlib seaborn
我有一些几何分布的数据.当我想看一下时,我会用
sns.distplot(data, kde=False, norm_hist=True, bins=100)
Run Code Online (Sandbox Code Playgroud)
结果是一张图片:
但是,箱柜高度不等于1,这意味着y轴不显示概率,它是不同的.相反,我们使用
weights = np.ones_like(np.array(data))/float(len(np.array(data)))
plt.hist(data, weights=weights, bins = 100)
Run Code Online (Sandbox Code Playgroud)
y轴应显示概率,因为箱高度总和为1:
这里可以更清楚地看到:假设我们有一个列表
l = [1, 3, 2, 1, 3]
Run Code Online (Sandbox Code Playgroud)
我们有两个1,两个3和一个2,所以它们各自的概率是2/5,2/5和1/5.当我们使用带有3个箱子的seaborn histplot时:
sns.distplot(l, kde=False, norm_hist=True, bins=3)
Run Code Online (Sandbox Code Playgroud)
我们得到:
如您所见,第1和第3个bin总和达到0.6 + 0.6 = 1.2,已经大于1,因此y轴不是概率.当我们使用
weights = np.ones_like(np.array(l))/float(len(np.array(l)))
plt.hist(l, weights=weights, bins = 3)
Run Code Online (Sandbox Code Playgroud)
我们得到:
并且y轴是概率,如预期的那样为0.4 + 0.4 + 0.2 = 1.
对于每种情况下使用的两种方法,这两种情况中的箱的数量是相同的:对于几何分布的数据,100个箱,对于具有3个可能值的小阵列l,3个箱.所以箱子数量不是问题.
我的问题是:在用norm_hist = True调用的seaborn distplot中,y轴是什么意思?
Pra*_*ann 21
x 轴是变量的值,就像在直方图中一样,但 y 轴到底代表什么?
ANS->密度图中的 y 轴是核密度估计的概率密度函数。但是,我们需要小心地指定这是概率密度而不是概率。区别在于概率密度是 x 轴上每单位的概率。要转换为实际概率,我们需要找到 x 轴上特定区间的曲线下面积。有点令人困惑,因为这是概率密度而不是概率,y 轴可以取大于 1 的值。密度图的唯一要求是曲线下的总面积积分为 1。我通常倾向于将密度图上的 y 轴视为仅用于不同类别之间相对比较的值。
来自https://towardsdatascience.com/histograms-and-density-plots-in-python-f6bda88f5ac0的参考
Ion*_*ons 19
从文档:
norm_hist:bool,可选
如果为True,则直方图高度显示密度而不是计数.如果绘制KDE或拟合密度,则暗示这一点.
因此,您还需要考虑您的箱宽,即计算曲线下面积,而不仅仅是箱高的总和.
| 归档时间: |
|
| 查看次数: |
15725 次 |
| 最近记录: |