首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中找到给定的HDI区间的CI?

在R中找到给定的HDI区间的CI?
EN

Stack Overflow用户
提问于 2020-02-06 20:43:37
回答 1查看 61关注 0票数 0

我正在寻找一种方法来计算给定的模式范围内的CI值。例如,如果我的模式(或最高的KDE值)为50,并且我在模式周围建立了一个可接受的10范围,那么我的等效CI是什么?

我成功地跟踪了来自https://rdrr.io/cran/HDInterval/man/hdi.html的HDI内容,找到了基于给定CI的范围,但我试图逆转这个过程。为了便于用数据进行测试,从站点复制到本帖的代码示例:

代码语言:javascript
复制
# for a vector:
tst <- rgamma(1e5, 2.5, 2)
hdi(tst)
hdi(tst, credMass=0.8)
# For comparison, the symmetrical 80% CrI:
quantile(tst, c(0.1,0.9))

# for a density:
dens <- density(tst)
hdi(dens, credMass=0.8)

我的蛮力法会考虑类似于计算不同CI输入的上/下值之间的差异,直到我为给定的上、下增量找到一个最大CI。我肯定还有更好的办法?

这样做的目的是比较CI如何在相同的值范围内跨不同的数据集变化。数据往往是多模的,并试图避免对分布拟合的限制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 15:53:26

这似乎是一种蛮力的方法:

代码语言:javascript
复制
      buffer <- 100
      ci_x <- 1
      ci_hdi = NULL
      while (buffer > 10){
        ci_hdi <- ci(data$x, method = "HDI", ci = ((100-ci_x)/100))
        buffer = ci_hdi$CI_high - ci_hdi$CI_low
        ci_x = ci_x+1
      }
      print(buf)

基本上,它通过值进行计数,直到我找到符合标准(例如10)的缓冲区(可接受值的范围),然后报告CI (100-ci_x)满足此条件的内容。在最初的测试中,我看到紧密分布的CI值很大,然后更接近50,并且是不稳定的分布。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60103225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档