R中密度图的解释

R中密度图的解释,r,ggplot2,kernel-density,R,Ggplot2,Kernel Density,我有一个以天为单位的年龄列表,我希望在密度图上以年为单位显示它们 我通过两种方式完成了这项工作——将x轴上的标签改为年,并将数据除以365。这些方法给出了不同的密度估计: df <- data.frame(id = 1:80000, age = rnorm(80000, 46, 5) * 365) 绘图看起来相同,但密度范围为0到0.08 我很难理解到底发生了什么——为什么两个地块的密度不同 两个图中的密度不同,因为在一种情况下,水平方向上的单位数是另一个图的365倍,因此垂直单位需要是

我有一个以天为单位的年龄列表,我希望在密度图上以年为单位显示它们

我通过两种方式完成了这项工作——将x轴上的标签改为年,并将数据除以365。这些方法给出了不同的密度估计:

df <- data.frame(id = 1:80000, age = rnorm(80000, 46, 5) * 365)
绘图看起来相同,但密度范围为0到0.08 我很难理解到底发生了什么——为什么两个地块的密度不同


两个图中的密度不同,因为在一种情况下,水平方向上的单位数是另一个图的365倍,因此垂直单位需要是另一个图的1/365,因为概率密度函数(这些曲线下的面积)必须和为1

这更容易用箱子而不是密度曲线来考虑。如果有一个箱子替换365个箱子,则在一个箱子中着陆的概率远远高于在单个箱子中着陆的平均概率

对于您提供的特定样本数据,我们可以通过查看两个函数的峰值来查看垂直单位之间的转换:

> max(density(df$age)$y) # max of density in days, more horizontal units
[1] 0.0002178977
> df$ageinyears <- df$age/365 # create an age-in-years variable
> max(density(df$ageinyears)$y) # max density in years, fewer horizontals
[1] 0.07953267
> max(density(df$age)$y)*365 
[1] 0.07953267

最好的建议是忽略y轴上的刻度标签,它们对解释密度图毫无帮助,正如您所看到的,它们更容易混淆而不是帮助


我倾向于密度图、直方图和任何类似图的默认行为,即不标记y轴记号,因为它们通常没有任何意义,只会分散图中重要部分的注意力,并经常导致混淆。即使将它们缩放为有意义的值,它们对绘图的主要目的也没有帮助,并且仍然会造成混乱(我更改了直方图中的箱子数量,现在我的y记号标签非常不同,惊慌!惊慌!)。不幸的是,在绘制它们时有太多的惯性,我一个人不太可能改变这一点。

你可能会发现频率多边形(
geom\u freqpoly
)更容易解释-我自己很少使用密度图。别这么说-相信你自己!你能行!
ggplot(data = df, aes(x = age/365)) + 
    geom_density(aes(y = ..density..))
> max(density(df$age)$y) # max of density in days, more horizontal units
[1] 0.0002178977
> df$ageinyears <- df$age/365 # create an age-in-years variable
> max(density(df$ageinyears)$y) # max density in years, fewer horizontals
[1] 0.07953267
> max(density(df$age)$y)*365 
[1] 0.07953267
ggplot(data = df, aes(x = age)) + 
    geom_density(aes(x = age/365, y = ..density..))