如何解读不同GGPLOT2密度?(How to interpret the different gg

2019-08-18 01:37发布

我感到困惑的下列变量的含义geom_density在ggplot:

有人可以请解释这四个调用之间的区别:

  1. geom_density(aes_string(x=myvar))
  2. geom_density(aes_string(x=myvar, y=..density..))
  3. geom_density(aes_string(x=myvar, y=..scaled..))
  4. geom_density(aes_string(x=myvar, y=..count../sum(..count..)))

我的理解是:

  • geom_density单独会产生密度下的曲线总和,其面积为1
  • geom_density..density..基本上不相同......?
  • ..count../sum(..count..)将归峰高更像一个标准化直方图,以确保所有的高度之和为1
  • ..count..本身没有分母只是在它的项目#乘以每个区间
  • 所述..scaled..参数将使它这样的密度的最大值为1。

我觉得..scaled..非常违反直觉的,没见过它用,如果我对它的解释是正确的,所以我想忽略。 我主要是寻找一个澄清之间的差异geom_density和一种标准化的密度图,我是这样假设需要...count../...的说法。 谢谢。

(相关: 错误与GGPLOT2映射变量y和使用STAT =“bin”的 )

Answer 1:

为默认的审美stat_density..density.. ,所以通话geom_density它使用stat_density默认情况下,将绘制y = ..density..默认。

你可以看到不同的列是如何通过查看计算值的源代码

..scaled..被定义为

densdf$scaled <- densdf$y / max(densdf$y, na.rm = TRUE)

随意如果你想忽略它。

综观为stat_bin源代码

结果被计算为这样的

res <- within(results, {
    count[is.na(count)] <- 0
    density <- count / width / sum(abs(count), na.rm=TRUE)
    ncount <- count / max(abs(count), na.rm=TRUE)
    ndensity <- density / max(abs(density), na.rm=TRUE)
  })

所以,如果你想比较的结果geom_histogram (使用默认stat = 'bin' ),那么你可以设置y = ..density..它将计算count / sum(count)你(占宽度垃圾箱)

如果你想比较geom_density(aes(y=..scaled..))stat_bin ,那么你可以使用geom_histogram(aes(y = ..ndensity..))

你可以通过让他们以相同的规模..count..在这两个为好,但你会需要调整adjust参数stat_density获得曲线的适当的详细逼近。



文章来源: How to interpret the different ggplot2 densities?
标签: r ggplot2