ggplot2中的geom_density和base R中的density的区别

3

我有一个 R 数据如下:

  bag_id location_type            event_ts
2     155        sorter 2012-01-02 17:06:05
3     305       arrival 2012-01-01 07:20:16
1     155      transfer 2012-01-02 15:57:54
4     692       arrival 2012-03-29 09:47:52
10    748      transfer 2012-01-08 17:26:02
11    748        sorter 2012-01-08 17:30:02
12    993       arrival 2012-01-23 08:58:54
13   1019       arrival 2012-01-09 07:17:02
14   1019        sorter 2012-01-09 07:33:15
15   1154      transfer 2012-01-12 21:07:50

其中类(event_ts)为POSIXct类型。

我想要找出不同时间每个位置的袋子密度。

我使用了命令geom_density(ggplot2),画出来的图非常漂亮。我想知道density(base)和这个命令之间有没有任何区别。我是指它们使用的方法、默认的带宽等是否有差异。

我需要将密度添加到我的数据框中。如果我使用函数density(base),我知道如何使用函数approxfun将这些值添加到我的数据框中,但我想知道当我使用geom_density(ggplot2)时是否一样。

1个回答

7
快速查看 ggplot2 中的 geom_density() 文档,可以发现它将 stat_density() 的功能包装起来。其中的第一个参数引用了来自基本函数 density()adjust 参数。因此,针对你的直接问题 - 它们都是基于相同的函数构建的,但使用的确切参数可能不同。你可以对设置这些参数进行一定控制,但可能无法获得所需的灵活性。

使用 geom_density() 之外的一种选择是,在 ggplot() 之外计算所需的密度,然后使用 geom_line() 进行绘制。例如:

library(ggplot2)
#100 random variables
x <- data.frame(x = rnorm(100))
#Calculate own density, set parameters as you desire
d <- density(x$x)
x2 <- data.frame(x = d$x, y = d$y)

#Using geom_density()
ggplot(x, aes(x)) + geom_density()
#Using home grown density
ggplot(x2, aes(x,y)) + geom_line(colour = "red")

在这里,它们提供了几乎相同的图表,但是根据您的数据和设置,它们可能会有更显著的差异。

文档链接失效了吗? - Matifou
@Matifou - 更新了链接...这个问题已经在2013年得到解答了...在那之后,R语言世界有所发展。 - Chase

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