【发布时间】:2020-01-08 15:50:29
【问题描述】:
我发现小提琴图非常有用,我使用 python 库“seaborn”。 但是,当应用于正值时,它们几乎总是在低端显示负值。我发现这确实具有误导性,尤其是在处理现实生活中的数据集时。
在seaborn的官方文档中https://seaborn.pydata.org/generated/seaborn.violinplot.html 可以看到带有“total_bill”和“tip”的示例,它们不是是否为负数。 然而,小提琴图显示负值。例如,
import seaborn as sns
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.violinplot(x="day", y="total_bill", hue="smoker",data=tips, palette="muted", split=True)
我明白,那些负值来自高斯核。因此,我的问题是:有没有办法解决这个问题? python中的另一个库?是否可以指定不同的内核?
【问题讨论】:
-
小提琴图是在轴上对齐的两个 KDE 图。您看到的“负”值只是 KDE 的产物。它们是对数据中值的估计。这并不是说您有负数据,而是说您的数据包含非常接近负值的值,即 0。因此,您从数据集中选择负值的估计概率不为零。
-
内核密度定义在从 -infinity 到 +infinity 的整个范围内。
-
我确实了解这些价值观的来源。我正在寻找出路。例如,我可以梦想使用截断的高斯核进行 KDE 估计。我为什么担心? Wenn 使用现实生活中的数据集,我的数据几乎总是很脏,我几乎总是在做一些清理工作。查看带有负值的小提琴图(不久前创建),您永远无法确定,如果您在清理过程中遗漏了什么,或者这是 KDE 的产物
-
检查例如this。为了检查您的数据中是否有负值,请使用
numpy.any(data < 0) -
是的,当然,我一直在这样做。但我想从我的情节中获得直觉。我想向我的业务用户展示这些情节。我希望这种直觉不会误导
标签: python seaborn visualization data-analysis violin-plot