seaborn.objects.KDE#

class seaborn.objects.KDE(bw_adjust=1, bw_method='scott', common_norm=True, common_grid=True, gridsize=200, cut=3, cumulative=False)[源代码]#

计算单变量核密度估计。

参数:
bw_adjust浮动

通过 bw_method 选择的值乘以该因子进行乘法缩放。增加将使曲线更平滑。参见注释。

bw_method字符串、标量或可调用对象

用于确定平滑带宽的方法。直接传递给 scipy.stats.gaussian_kde;有关选项,请参见那里。

common_norm布尔值或变量列表

如果 True,则归一化使得所有曲线的面积总和为 1。如果 False,则独立归一化每条曲线。如果是一个列表,则定义要分组并归一化的变量。

common_grid布尔值或变量列表

如果 True,所有曲线将共享相同的评估网格。如果 False,每个评估网格是独立的。如果是一个列表,定义了要分组并共享网格的变量。

网格大小整数或无

评估网格中的点数。如果为 None,则在原始数据点处评估密度。

剪切浮动

因子,乘以核带宽,决定评估网格在极端数据点之外延伸多远。当设置为0时,曲线在数据极限处被截断。

累积布尔

如果为 True,则估计累积分布函数。需要 scipy。

注释

带宽(bandwidth),即平滑核的标准差,是一个重要参数。与直方图的箱宽类似,使用错误的带宽会产生失真的表示。过度平滑会抹去真实特征,而平滑不足则会创造虚假特征。默认使用一种经验法则,最适合近似钟形分布。通过调整 bw_adjust 来检查默认值是一个好主意。

由于平滑处理是使用高斯核进行的,估计的密度曲线可能会延伸到不合理值的范围。例如,当数据本身为正时,曲线可能会绘制在负值上。可以使用 cut 参数来控制评估范围,但对于在自然边界附近有许多观测值的数据集,使用不同的方法可能会更好。

当数据集自然离散或“尖锐”(包含许多重复的相同值观测)时,可能会出现类似的失真。核密度估计(KDE)总是会产生一条平滑的曲线,这可能会产生误导。

密度轴上的单位是常见的混淆来源。虽然核密度估计产生的是概率分布,但曲线在每一点的高度给出的是密度,而不是概率。只有通过对某一范围内的密度进行积分才能得到概率。曲线被归一化,使得所有可能值的积分是1,这意味着密度轴的刻度取决于数据值。

如果安装了 scipy,将使用其 cython 加速的实现。

示例