Se si dispone di una funzione di distribuzione cumulativa , il calcolo del valore per una determinata statistica è semplicemente . Questo è semplice in R. Se invece hai la funzione di densità di probabilità , allora . Puoi trovare questo integrale analiticamente o numericamente. In R questo sarà simile al seguente: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
Puoi sintonizzarti integrate
per una migliore precisione. Questo, naturalmente, potrebbe non riuscire per casi specifici, quando l'integrale non si comporta bene, ma dovrebbe funzionare per la maggior parte delle funzioni di densità.
Ovviamente puoi passare parametri in pF
, se hai diversi valori di parametro da provare e non vuoi ridefinire dF
ogni volta.
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
Ovviamente puoi anche usare i metodi Monte-Carlo come dettagliato da @suncoolsu, questo sarebbe solo un altro metodo numerico per l'integrazione.