R密度()函数

R density() function

抱歉,如果这个问题很简单,但我看不到解决方案:我一直在频繁使用 density() 函数,总是没有问题,但现在我使用一些数据集 - 让我们称之为选项卡 - 与(很多)相对较小的值突然 density(tab) 给出了类似绝对频率的东西 - 知道我做错了什么吗?

(注意:hist(tab, freq = FALSE) 也为制表符提供了一些奇怪的东西。)

备注:summary(tab)给出:

  Min. /   1st Qu.  /   Median   /    Mean  /   3rd Qu.  /     Max. 

-0.0042810  /0.0002679 / 0.0011750 / 0.0071690 / 0.0049510  /0.5839000 

我也非常感谢任何一般提示,在这种情况下 density() 不提供相对频率作为 y 值。

虽然我无法完全重现您的示例,但在我看来您的数据集中有一个巨大的异常值。即,您的第三个四分位数是 0.005,但最大值是 0.584。在实轴上,从第三个四分位数到最小值的距离为 0.01。从第三个四分位数到最大值的距离超过 0.583。那是 58 倍远!根据我的理解,density 尝试选择适用于所有值的带宽。在这种情况下,带宽可能非常小,因为大多数值聚集在一起接近于 0。在这种情况下,您可能会得到一个非常退化的密度图,有两条垂直线,一条在左边,一条在右边正确的。我能够使用以下方法生成一个这样的图:

plot(density(c(rnorm(100, 0, 0.001), 100)))

我所做的就是从标准差为 0.001 的正态分布中抽取样本,然后向该分布中添加一个离群值 100。然后密度看起来像这样: 密度值看起来肯定会与频率混淆,但事实并非如此。当然,如果我删除离群值,那么估计的密度函数会变成漂亮的钟形:

因此,您似乎需要从数据中删除异常值。