Si tiene un función de distribución acumulativa $F$ y, a continuación, calcular el $p$ -valor para una estadística determinada $T$ es simplemente $1-F(T)$ . Esto es sencillo en R. Si tiene función de densidad de probabilidad por otro lado, entonces $F(x)=\int_{-\infty}^xp(t)dt$ . Puedes encontrar esta integral de forma analítica o numérica. En R esto se verá así:
dF <- function(x)dnorm(x)
pF <- function(q)integrate(dF,-Inf,q)$value
> pF(1)
[1] 0.8413448
> pnorm(1)
[1] 0.8413447
Puedes afinar integrate
para una mayor 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, se pueden pasar parámetros a pF
si tiene varios valores de parámetros para probar y no quiere 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 se pueden utilizar métodos de Monte-Carlo como detalla @suncoolsu, esto sería un método numérico más de integración.