Calcul de la valeur de p à partir d'une distribution arbitraire


14

J'espère que ce n'est pas une question idiote. Disons que j'ai une distribution continue arbitraire. J'ai également une statistique, et j'aimerais utiliser cette distribution arbitraire pour obtenir une valeur de p pour cette statistique.

Je me rends compte que dans R, il est facile de le faire tant que votre distribution correspond à l'une des intégrées, comme si c'était normal. Mais existe-t-il un moyen facile de le faire avec une distribution donnée, sans faire ce genre d'hypothèse?

Réponses:


12

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:FpT1F(T)F(x)=xp(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 integratepour 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 à dFchaque 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.


Je pense que votre méthode est beaucoup plus facile que ce que j'ai suggéré, surtout s'il n'y a aucune restriction sur la fonction que vous intégrez. Je ne connais pas la technologie numérique. dans R.
suncoolsu

Oui, je pense que cela correspond davantage à mes capacités actuelles. Merci!
Alan H.

En fait, je ne suis pas sûr de bien comprendre comment ces fonctions fonctionnent. Les exemples donnent des résultats pour une distribution normale, mais où dois-je brancher ma fonction de densité de probabilité?
Alan H.12

(J'ai fait des tests, et mes données ne semblent pas être à distance normales.)
Alan H.

@Alan H., branchez votre fonction de densité dans dF. Cela dFdevrait renvoyer la valeur de la fonction de densité à l'argument donné.
mpiktas

9

Oui, il est possible d'utiliser n'importe quelle distribution arbitraire pour obtenir une valeur de p pour n'importe quelle statistique . Théoriquement et pratiquement, vous pouvez calculer la valeur de p (unilatérale) par cette formule.

pvalue=P[T>Tobserved|H0holds]

TTobserved

TH0T

La seule hypothèse que vous faites ici est - vous connaissez la distribution nulle de T (qui peut ne pas être dans les formats standard de générateur de nombres aléatoires R). C'est tout - tant que vous connaissez la distribution nulle, la valeur de p peut être calculée.


1
Je dois remarquer - c'est l'une des raisons pour lesquelles les valeurs p sont si populaires et faciles à comprendre. (À
mon humble avis

Ok, ça a du sens. J'ai ce que je crois être une bonne estimation de la distribution nulle. Des conseils sur la façon de mettre en œuvre cela dans R? Merci!
Alan H.

1
@Alan - Savez-vous comment générer des valeurs aléatoires à partir de votre distribution nulle? Si oui, supposons - T = c (T1, ..., TN) sont des tirages de la distribution nulle - p-value = sum (T> T_obs) / N. Si vous ne savez pas comment générer, vous devrez peut-être utiliser l'échantillonnage Metropolis ou l'échantillonnage Gibbs pour obtenir T1 ... TN, mais c'est très faisable.
suncoolsu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.