我怎样才能使我的函数在r中反转?

时间:2015-03-09 01:55:34

标签: r

这是我的函数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)
}

使其反转的过程是什么?

2 个答案:

答案 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