有时,当我使用seaborn的displaot函数创建直方图时,norm_hist=True,y轴小于1,这是PDF的预期值。其他时候,它的值大于1
例如,如果我跑步
sns.set();
x = np.random.randn(10000)
ax = sns.distplot(x)
然后直方图上的y轴从0.0变为0.4,如预期,但如果数据不正常,即使norm_hist=True,y轴也可能大至30
关于直方图函数的规范化参数,我遗漏了什么,例如sns.distplot的norm_hist?即使我自己通过创建一个新变量来规范化数据,因此:
new_var = data/sum(data)
因此,无论norm_hist参数是否为真,y轴仍将显示远大于1的值(例如30)
当y轴的范围如此大时,我可以给出什么解释
我认为现在发生的是我的数据集中在零附近,所以为了使数据的面积等于1(例如在kde下),直方图的高度必须大于1…但是由于概率不能大于1,结果意味着什么
还有,我怎样才能让这些函数显示y轴上的概率
规则不是所有的条加起来都是一条。规则是所有条的所有面积总和应为一。当这些条非常窄时,尽管它们的面积加起来只有一个,但它们的总和可能相当大。条的高度乘以其宽度是某个值全部在该范围内的概率。要使高度等于概率,需要宽度为1的条
这里有一个例子来说明发生了什么
左边的图使用了
0.001
米宽的箱子。最高的箱子(红色)大约有40
高。值落入该存储单元的概率为40*0.001 = 0.04
右边的绘图使用完全相同的数据,但测量单位为毫米。现在垃圾箱的宽度是
1 mm
。最高的bin大约为0.04
高。由于1
的仓位宽度,值落入该仓位的概率也是0.04
PS:作为概率密度函数区域大于1的分布示例,请参见Pareto distribution和
α = 3
相关问题 更多 >
编程相关推荐