当我知道 R 中的特定累积分布函数时,如何编写代码来查找分布的百分位数?

how to code to find the percentile of a distribution when i know the SPECIFIC cumulative distribution function in R?

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

不知道有没有大神帮忙写下解决这个问题的R代码,谢谢!

参数k1k2n1n2固定与否无关紧要。 正如文中所说,我继续 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
  
}

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