Si vous avez une fonction de distribution cumulative , le calcul de la valeur de p pour la statistique T donnée est simplement 1 - F ( T ) . C'est simple dans R. Si vous avez une fonction de densité de probabilité d' autre part, alors F ( x ) = ∫ x - ∞ p ( t ) d t . Vous pouvez trouver cette intégrale analytiquement ou numériquement. Dans R, cela ressemblera à ceci: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
Vous pouvez régler integrate
pour une meilleure précision. Bien sûr, cela peut échouer pour des cas spécifiques, lorsque l'intégrale ne se comporte pas bien, mais cela devrait fonctionner pour la majorité des fonctions de densité.
Vous pouvez bien sûr passer des paramètres à pF
, si vous avez plusieurs valeurs de paramètres à essayer et que vous ne voulez pas redéfinir à dF
chaque fois.
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
Bien sûr, vous pouvez également utiliser les méthodes Monte-Carlo comme détaillé par @suncoolsu, ce ne serait qu'une autre méthode numérique pour l'intégration.