如何在 R 中用伽马分布拟合覆盖密度直方图?

How to overlay density histogram with gamma distribution fit in R?

我是 R 的新手,想为我的直方图添加伽玛分布拟合。我希望伽马分布适合覆盖我的直方图。

我可以使用 dgamma 函数和 fitdist 函数计算伽马分布。但是,我无法将此伽马分布叠加到我的直方图上。

这是我试过的代码:

hist(mydata, breaks = 30, freq = FALSE, col = "grey")

lines(dgamma(mydata, shape = 1))

我试过的代码没有将伽马分布拟合覆盖到我的直方图上。我只得到没有拟合的直方图。

看看下面的例子是否可以帮助叠加

  1. 一条黑色的拟合线
  2. 一个红色的 PDF 图,虚线

在直方图上。

首先,创建一个数据集。

set.seed(1234)    # Make the example reproducible
mydata <- rgamma(100, shape = 1, rate = 1)

现在对数据拟合伽玛分布。

param <- MASS::fitdistr(mydata, "gamma")

拟合线需要此向量。

x <- seq(min(mydata), max(mydata), length.out = 100)

并将它们全部绘制出来。

hist(mydata, breaks = 30, freq = FALSE, col = "grey", ylim = c(0, 1))
curve(dgamma(x, shape = param$estimate[1], rate = param$estimate[2]), add = TRUE)
lines(sort(mydata), dgamma(sort(mydata), shape = 1),
      col = "red", lty = "dotted")