Se você possui uma função de distribuição cumulativa , o cálculo do valor- para a estatística dada é simplesmente . Isso é direto em R. Se você possui a função de densidade de probabilidade, por outro lado, então . Você pode encontrar essa integral analiticamente ou numericamente. Em R, será assim:FpT1−F(T)F(x)=∫x−∞p(t)dt
dF <- function(x)dnorm(x)
pF <- function(q)integrate(dF,-Inf,q)$value
> pF(1)
[1] 0.8413448
> pnorm(1)
[1] 0.8413447
Você pode ajustar integrate
para uma melhor precisão. É claro que isso pode falhar em casos específicos, quando a integral não se comporta bem, mas deve funcionar para a maioria das funções de densidade.
É claro que você pode passar parâmetros para pF
, se tiver vários valores de parâmetros para testar e não quiser redefinir a dF
cada vez.
dF <- function(x,mean=0,sd=1)dnorm(x,mean=mean,sd=sd)
pF <- function(q,mean=0,sd=1)integrate(dF,-Inf,q,mean=mean,sd=sd)$value
> pF(1,1,1)
[1] 0.5
> pnorm(1,1,1)
[1] 0.5
Obviamente, você também pode usar os métodos Monte-Carlo, conforme detalhado por @suncoolsu, este seria apenas outro método numérico para integração.