当我知道 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代码,谢谢!
参数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
}
然后它不是那么精确,但让 x = seq(-0.9,1,by = 0.001)
是从 -0.9
到 1
到 0.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
将是一个答案。
对于给定的 $k_2$ 和 $n_2$ ,当我知道这个累积分布函数时如何求解分布的百分位数
不知道有没有大神帮忙写下解决这个问题的R代码,谢谢!
参数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
}
然后它不是那么精确,但让 x = seq(-0.9,1,by = 0.001)
是从 -0.9
到 1
到 0.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
将是一个答案。