web-dev-qa-db-fra.com

Calcul des valeurs de p ajustées dans Python

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 Rp.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!

22
erikfas
20
Josef

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.

4
JulienD

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
2
The Unfun Cat