如何解释不同的ggplot2密度?
问题描述:
我感到困惑的geom_density
以下变量的ggplot含义:如何解释不同的ggplot2密度?
能有人请解释这四个调用之间的区别:
- geom_density(aes_string(X = 'MYVAR'))VS
- geom_density(aes_string(x ='myvar',y ='.. density ..'))VS
- geom_density(aes_string(x ='myvar',y ='.. scaled ..'))VS
- 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")
答
为stat_density
默认的审美是..density..
,所以geom_density
调用它默认使用stat_density
,将默认绘制y = ..density..
。
你可以看到不同的列是如何通过看source code
..scaled..
计算值被定义为
densdf$scaled <- densdf$y/max(densdf$y, na.rm = TRUE)
随意,如果你想忽略它。
的结果被计算为这样
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_density
的adjust
参数,以获得曲线的适当的详细逼近。
无关:您确实需要停止引用'aes()'中的变量。除非你使用'aes_string',否则你不应该那样做。 – joran 2013-03-27 16:43:56
@joran:我正在使用'aes_string',对不起,我正在使用rpy2,因此它总是'aes_string' – user248237dfsf 2013-03-28 00:56:06
只是想知道的读者。这个问题已经被编辑,以解决关于'aes'和'aes_string'的问题。这个错误不是这个问题的核心。 – Deleet 2017-01-28 17:27:58