r - 确定 R 中分布的高密度区域

标签 r statistics distribution bayesian confidence-interval

背景:

通常,R 会给出众所周知的分布的分位数。在这些分位数中,较低的 2.5% 至较高的 97.5% 覆盖了这些分布下 95% 的区域。

问题:

假设我有一个 F 分布(df1 = 10,df2 = 90)。在 R 中,我如何确定此分布下 95% 的区域,以便这 95% 仅覆盖高密度区域,而不是 R 通常给出的 95%(参见 我的 R 代码低于 )?

注:显然,最高密度是“模式”(下图中的虚线)。所以我想,人们必须从“模式”转向尾部。

enter image description here

这是我的 R 代码:

curve(df(x, 10, 90), 0, 3, ylab = 'Density', xlab = 'F value', lwd = 3)

Mode = ( (10 - 2) / 10 ) * ( 90 / (90 + 2) )

abline(v = Mode, lty = 2)

CI = qf( c(.025, .975), 10, 90)

arrows(CI[1], .05, CI[2], .05, code = 3, angle = 90, length = 1.4, col= 'red' )

points(Mode, .05, pch = 21, bg = 'green', cex = 3)

最佳答案

你有没有试过这个包:https://github.com/robjhyndman/hdrcde ?

按照你的例子:

library(hdrcde)
hdr.den(rf(1000,10,90),prob=95)

F distrib pdf

您可以使用各种高密度区域,它适用于多模态 pdf。

hdr.den(c(rf(1000,10,90),norm(1000,4,1)),prob=c(50,75,95))


multimodal

您甚至可以将其与多元分布一起用于可视化 2D 高密度区域:
hdrs=c(50,75,95)
x=c(rf(1000,10,90),rnorm(1000,4,1))
y=c(rf(1000,5,50),rnorm(1000,7,1) )
par(mfrow=c(1,3))
hdr.den(x,prob=hdrs,xlab="x")
hdr.den(y,prob=hdrs,xlab="y")
hdr.boxplot.2d(x,y,prob=hdrs,shadecol="red",xlab="x",ylab="y")

multivar multimode

关于r - 确定 R 中分布的高密度区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42986446/

相关文章:

r - 如何使用基数 r 将 dbeta 图中的 x 值转换为百分比?

r - 控制 map 图例中的值范围

R 的 grepl() 查找多个字符串存在

algorithm - 计算两个列表之间的相似度

c++ - Armadillo 'cor' 函数返回标量

distribution - julia语言三角分布参数化

R:每月汇总行数

r - 在 R 中排序未正确排序数字

python - 获得 kolmogorov-smirnov 检验所需的临界值

python - 拟合某些参数固定的双峰高斯分布