如何解释不同的ggplot2密度?

如何解释不同的ggplot2密度?

问题描述:

我感到困惑的geom_density以下变量的ggplot含义:如何解释不同的ggplot2密度?

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

  1. geom_density(aes_string(X = 'MYVAR'))VS
  2. geom_density(aes_string(x ='myvar',y ='.. density ..'))VS
  3. geom_density(aes_string(x ='myvar',y ='.. scaled ..'))VS
  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../...参数。谢谢。

(相关:Error with ggplot2 mapping variable to y and using stat="bin"

+3

无关:您确实需要停止引用'aes()'中的变量。除非你使用'aes_string',否则你不应该那样做。 – joran 2013-03-27 16:43:56

+0

@joran:我正在使用'aes_string',对不起,我正在使用rpy2,因此它总是'aes_string' – user248237dfsf 2013-03-28 00:56:06

+0

只是想知道的读者。这个问题已经被编辑,以解决关于'aes'和'aes_string'的问题。这个错误不是这个问题的核心。 – Deleet 2017-01-28 17:27:58

stat_density默认的审美是..density..,所以geom_density调用它默认使用stat_density,将默认绘制y = ..density..

你可以看到不同的列是如何通过看source code

..scaled..计算值被定义为

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

随意,如果你想忽略它。

望着source code for 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..以及让他们以相同的规模,但是你需要调整stat_densityadjust参数,以获得曲线的适当的详细逼近。