Donc, j'ai passé un certain temps à chercher un moyen d'obtenir des valeurs de p ajustées (alias valeurs de p corrigées, valeurs de q, FDR) en Python, mais je n'ai vraiment rien trouvé. Il y a la fonction R
p.adjust
, mais je voudrais m'en tenir à Python, si possible. Y a-t-il quelque chose de similaire pour Python?
Si c'est en quelque sorte un mauvaise question, désolé à l'avance! J'ai d'abord cherché des réponses, mais n'en ai trouvé aucune (sauf une version Matlab) ... Toute aide est appréciée!
Il est disponible dans les modèles de statistiques.
et quelques explications, exemples et Monte Carlo http://jpktd.blogspot.com/2013/04/multiple-testing-p-value-corrections-in.html
Vous pouvez essayer le module rpy2
qui vous permet d'importer des fonctions R (b.t.w., une recherche de base renvoie Comment implémenter p.adjust de R en Python ).
Une autre possibilité est de regarder les mathématiques et de les refaire vous-même, car c'est encore relativement facile.
Apparemment, il existe une implémentation en cours dans scipy
: http://statsmodels.sourceforge.net/ipdirective/_modules/scikits/statsmodels/sandbox/stats/multicomp.html . Peut-être que c'est déjà utilisable.
Selon le biostathandbook , le BH est facile à calculer.
def fdr(p_vals):
from scipy.stats import rankdata
ranked_p_values = rankdata(p_vals)
fdr = p_vals * len(p_vals) / ranked_p_values
fdr[fdr > 1] = 1
return fdr