首页 > 解决方案 > 当我知道 R 中的特定累积分布函数时,如何编码以找到分布的百分位数?

问题描述

对于给定的 $k_2$ 和 $n_2$ ,当我知道这个累积分布函数时,如何求解分布的百分位数

特定的累积分布函数

我想知道是否有人可以帮助写下R代码来解决这个问题,THX!

标签: rquantile

解决方案


参数k1, k2, n1,n2是否固定并不重要。正如它在文本中所说,我继续F作为 beta 分布的 pdf。stats::integrate功能有助于整合功能。

cdf <- function(t, k1, k2, n1, n2){
  dummy_func <- function(x) {
    pbeta(x+t, k1 + .5, n1 - k1 + .5) * x^(k2 - .5) * (1 - x)^(n2 - k2 - .5)
  }
   1/beta(k2 + .5, n2 - k2 + .5) * integrate(dummy_func, lower = 0, upper = 1)$value
  
}

然后它不是那么精确,但 letx = seq(-0.9,1,by = 0.001)是序列 from-0.91by的向量0.001。在这种情况下,我让这个函数的支持为 (0.9,1)。我们可以获得 中元素的累积x概率y <- sapply(x, function(t) cdf(t,1,1,1,1))。然后找到任何你想要的分位数,例如 80%,让z <- data.frame(cbind(x,y))then z$x[which.min(abs(z$y - 0.8))]=0.281将是一个答案。


推荐阅读