Wenn Sie eine kumulative Verteilungsfunktion , ist die Berechnung des p- Wertes für eine gegebene Statistik T einfach 1 - F ( T ) . Dies ist in R einfach. Wenn Sie andererseits eine Wahrscheinlichkeitsdichtefunktion haben , dann ist F ( x ) = ∫ x - ∞ p ( t ) d t . Sie finden dieses Integral analytisch oder numerisch. In R wird dies so aussehen: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
Sie können integrate
für eine bessere Genauigkeit abstimmen. Dies kann natürlich in bestimmten Fällen fehlschlagen, wenn sich das Integral nicht gut verhält, es sollte jedoch für die Mehrzahl der Dichtefunktionen funktionieren.
Sie können natürlich Parameter übergeben pF
, wenn Sie mehrere Parameterwerte zum Ausprobieren haben und nicht dF
jedes Mal neu definieren möchten .
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
Natürlich können Sie auch Monte-Carlo-Methoden verwenden, wie in @suncoolsu beschrieben. Dies wäre nur eine weitere numerische Methode für die Integration.