J'essaie d'appliquer le test exact de Fisher dans un problème génétique simulé, mais les valeurs de p semblent être biaisées vers la droite. En tant que biologiste, je suppose qu'il me manque quelque chose d'évident pour chaque statisticien, donc j'apprécierais grandement votre aide.
Ma configuration est la suivante: (configuration 1, marginaux non fixés)
Deux échantillons de 0 et de 1 sont générés de manière aléatoire dans R. Chaque échantillon n = 500, les probabilités d'échantillonnage 0 et 1 sont égales. Je compare ensuite les proportions de 0/1 dans chaque échantillon avec le test exact de Fisher (juste fisher.test
; j'ai également essayé d'autres logiciels avec des résultats similaires). L'échantillonnage et les tests sont répétés 30 000 fois. Les valeurs p résultantes sont distribuées comme ceci:
La moyenne de toutes les valeurs de p est d'environ 0,55, 5e centile à 0,0577. Même la distribution apparaît discontinue sur le côté droit.
J'ai lu tout ce que je pouvais, mais je ne trouve aucune indication que ce comportement est normal - d'un autre côté, ce ne sont que des données simulées, donc je ne vois aucune source de biais. Y a-t-il un ajustement que j'ai manqué? Échantillons trop petits? Ou peut-être que ce n'est pas censé être distribué uniformément et que les valeurs de p sont interprétées différemment?
Ou devrais-je simplement répéter cela un million de fois, trouver le quantile 0,05 et l'utiliser comme seuil de signification lorsque j'applique cela à des données réelles?
Merci!
Mise à jour:
Michael M a suggéré de fixer les valeurs marginales de 0 et 1. Maintenant, les valeurs de p donnent une distribution beaucoup plus agréable - malheureusement, ce n'est pas uniforme, ni d'aucune autre forme que je reconnais:
ajout du code R réel: (configuration 2, marginaux fixes)
samples=c(rep(1,500),rep(2,500))
alleles=c(rep(0,500),rep(1,500))
p=NULL
for(i in 1:30000){
alleles=sample(alleles)
p[i]=fisher.test(samples,alleles)$p.value
}
hist(p,breaks=50,col="grey",xlab="p-values",main="")
Modification finale: Comme le souligne Whuber dans les commentaires, les zones semblent juste déformées en raison du binning. J'attache les tracés QQ pour la configuration 1 (marginaux libres) et la configuration 2 (marginaux fixes). Des graphiques similaires sont visibles dans les simulations de Glen ci-dessous, et tous ces résultats semblent en fait plutôt uniformes. Merci pour l'aide!
Réponses:
Le problème est que les données sont discrètes, donc les histogrammes peuvent être trompeurs. J'ai codé une simulation avec qqplots qui montrent une distribution uniforme approximative.
la source