这是我的函数pchi <- function(x,df)
。我想让它与x相反。这是我的代码:
pchi <- function(x,df)
{
integrand<-function(x){(1/(2^(df/2)*(gamma(df/2))))*((x^((df/2)-1))*exp(-1*(x/2)))}
ans <- integrate(integrand,lower=0,upper=x)
return(ans)
}
使其反转的过程是什么?
答案 0 :(得分:4)
由于您已从基础R复制了pchisq()
函数,因此可以使用内置的qchisq()
函数:
pchi(5,4)
## 0.7127025 with absolute error < 7.9e-15
pchisq(5,4)
## [1] 0.7127025
qchisq(0.7127025,4)
## [1] 5
答案 1 :(得分:4)
将pchi
结果更改为return(ans$value)
,然后执行反向
qchi = function (y, df) {
uniroot(function (x) pchi(x, df) - y, lower = 0, upper = 10)$root
}
> qchi(0.8,4)
[1] 5.988608
> qchisq(0.8, 4)
[1] 5.988617
不完全相同,但足够接近。除了学习目的,您始终应该使用qchisq
。