微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

绘制理论逆卡方分布

如何解决绘制理论逆卡方分布

我想将我的“经验”数据与理论反卡方分布进行比较。如何绘制理论分布?

假设数据如下:

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

导致“经验”分布如下:

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

enter image description here

我的直觉告诉我,我应该使用 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")

输出:

output: chisq density

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。