【问题标题】:R - ggplot2 plotting lognormal curve on histogramR - ggplot2 在直方图上绘制对数正态曲线
【发布时间】:2017-11-14 15:40:17
【问题描述】:

所以我有一组遵循对数正态分布的数据,我找到了 mu 和 sigma 的值,现在正尝试在对数正态的 PDF 旁边绘制数据的直方图。然而,绘制这条线似乎将其置于 0 以下,这似乎没有意义,我在这里做错了什么,似乎这条线应该高 5 y 值。

谢谢 M

h <- read.table("data.csv", header=TRUE, sep=",", row.names="id")
library("ggplot2")
d <- ggplot(data=h, aes(h$time)) + 
geom_histogram(binwidth = 0.8) + 
stat_function(fun = dlnorm, args = list(meanlog = 2.2, sdlog = 0.44, log = TRUE), colour = "red")
d

生成的图表

【问题讨论】:

  • 你确定要log = TRUE吗?这是采用 log(probabilities) ,因为它们 dlnorm 会给你density。您当前的情节显示计数。

标签: r ggplot2 histogram


【解决方案1】:

为了能够进行比较:

h <- data.frame(time = rlnorm(100, 2.2, .44))
library("ggplot2")
d <- ggplot(data=h) + 
  geom_histogram(binwidth = 0.8, aes(x = time, ..density..)) + 
  stat_function(fun = dlnorm, args = list(meanlog = 2.2, sdlog = 0.44), 
                colour = "red")
d

按照建议,关闭 log = TRUE,然后使用 ..density.. 获取频率而不是计数。

【讨论】:

  • 非常感谢,我很傻,没有意识到 y 轴上升超过 1
猜你喜欢
  • 1970-01-01
  • 2015-05-24
  • 2011-10-21
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 2021-06-02
相关资源
最近更新 更多