为什么geom_density和stat_density(geom="line")会给出不同的结果?

13
在下面的图示中,为什么geom_densitystat_density(geom = "line")会得到不同的结果?
library(ggplot2)

df <- data.frame(
  x.values = c(
    rnorm(100, mean = 1, sd = 1),
    rnorm(100, mean = 4, sd = 1),
    rnorm(100, mean = 7, sd = 1),
    rnorm(100, mean = 10, sd = 1)
  ),
  mean.values = sort(rep(c(1, 4, 7, 10), 100))
)

p <- ggplot(df, aes(x = x.values, color = mean.values, group = mean.values))

p + geom_density()

geom_density results

p + stat_density(geom = "line")

stat_density results

1个回答

14

这是关于position参数的区别。在stat_density中默认为position = "stack",而在geom_density()中为position = "identity"

如果您调用p + stat_density(geom = "line", position = "identity"),则会得到与geom_density()相同的结果:

输入图像描述


有趣,谢谢。我尝试快速将其更改为 p + stat_density(geom = "area", fill = NA),但仍然不能得到与 p + geom_density() 相同的结果。 - Jake Fisher
@JakeFisher 抱歉 - 我分心了,没有注意到“累积”密度线,只看到了面积/线条的差异。这似乎是由于统计和几何图形的position参数不同造成的。 - Gavin Simpson
@GavinSimpson,您能告诉我在位置中identity是什么意思吗? - Naveen Gabriel
@NaveenGabriel 意思是恒等函数,即返回其输入而不做任何改变的函数。我不确定这个术语在统计学以外是否常见,但它会出现在广义线性模型 (GLMs) 的链接函数中。这表示一个带有高斯分布和恒等链接函数的 GLM 包含线性回归 (OLS) 作为一种特殊情况。对于 ggplot2,它只是意味着不调整位置;其他 position 类型会调整位置。 - Gavin Simpson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接