Вы можете написать свою собственную целевую функцию, которая вычисляет квадратичное отклонение между вычисленными квантилями для определенного набора параметров обратной гаммы и целевых квантилей:
library(invgamma)
objfun <- function(p,target) {
qq <- qinvgamma(c(0.025,0.975),shape=p[1],rate=p[2])
sum((qq-target)^2)
}
Затем используйте optim()
, чтобы минимизировать:
## example
tt <- qinvgamma(c(0.025,0.975), shape=2,rate=2)
optim(par=c(1,4), ## starting values; must be sensible
fn=objfun,
target=tt)
$par
[1] 1.980279 1.948050
$value
[1] 9.0741e-05
$counts
function gradient
61 NA
$convergence
[1] 0
$message
NULL