Si tiene una función de distribución acumulativa , entonces calcular el valor p para la estadística T dada es simplemente 1 - F ( T ) . Esto es sencillo en R. Si, por otro lado, tiene la función de densidad de probabilidad , entonces F ( x ) = ∫ x - ∞ p ( t ) d t . Puede encontrar esta integral analítica o numéricamente. En R esto se verá así: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
Puede sintonizar integrate
para una mejor precisión. Por supuesto, esto puede fallar en casos específicos, cuando la integral no se comporta bien, pero debería funcionar para la mayoría de las funciones de densidad.
Por supuesto, puede pasar parámetros a pF
, si tiene varios valores de parámetros para probar y no desea redefinir 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
Por supuesto, también puede usar los métodos de Monte-Carlo como detalla @suncoolsu, este sería solo otro método numérico para la integración.