绘制理论逆卡方分布

Plot theoretical inverise-chi-square distribution

我想将我的 'empirical' 数据与理论 逆卡方分布 进行比较。如何绘制理论分布?

假设以下数据:

require(invgamma)
set.seed(10)
y<-rinvchisq(1000, 10)

这导致 'empitical' 分布如下:

as.tibble(y) %>%
  ggplot(aes(y)) +
  geom_histogram(bins=100) 

我的直觉告诉我应该使用 dinvchisq 函数,它可以在 invgamma 包中找到。但无法正确安装。有谁知道如何解决这个问题?

编辑:

添加解决方案,感谢@marvinschmit 和@BenBolker。

require(invgamma)
set.seed(10)
y = rinvchisq(1000, 10)

x = seq(0,1, by=.001)
d = invgamma::dinvchisq(x, df=10)
df = data.frame(x=x,d=d)

as.tibble(y) %>%
  ggplot(aes(x = y)) +
  geom_histogram(bins=100, aes(y=..density..)) +
  geom_line(data = df, aes(x = x, y = d), color = "blue")

您需要 d... 密度函数的分位数向量。我将调用分位数向量 x:

x = seq(0,1, by=.001)
d = dinvchisq(x, df=10)
plot(x,d, type="l")

输出:

请注意,我使用了基本的 R 绘图,因为漂亮的 ggplot 与问题无关。您可以简单地构建一个数据框 df=data.frame(x=x,d=d) 并将其用于漂亮的 ggplot 绘图。

编辑:使用lines()将理论分布叠加到经验直方图上。