いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】p値を補正したい

・お題:多重検定したので、p値を補正したい。

 

・多重比較検定をすると、familywise error rateが上昇してしまうことが知られている。詳しくは以下を参照。

www.med.osaka-u.ac.jp

・そこで、得られたp値を補正したい。

Pythonでp値を補正するには、statsmodels.stats.multitest.multipletestsを使うみたい(詳しくは以下)。

www.statsmodels.org

 

・とりあえず、やってみる。

p_value=[0.001, 0.01, 0.02, 0.03, 0.05, 0.06, 0.07]

import statsmodels.stats.multitest as multi
multi.multipletests(p_value, alpha=0.05, method="bonferroni") 

(array([ True, False, False, False, False, False, False]),
 array([0.007, 0.07 , 0.14 , 0.21 , 0.35 , 0.42 , 0.49 ]),
 0.007300831979014655,
 0.0071428571428571435)

確かに、p値が7倍され、bonferroni法で補正されたらしい。

・他の手法も試してみる。

multi.multipletests(p_value, alpha=0.05, method="holm") 

(array([ True, False, False, False, False, False, False]),
 array([0.007, 0.06 , 0.1  , 0.12 , 0.15 , 0.15 , 0.15 ]),
 0.007300831979014655,
 0.0071428571428571435)

multi.multipletests(p_value, alpha=0.05, method="fdr_bh") 

(array([ True,  True,  True, False, False, False, False]),
 array([0.007, 0.035, 0.04666667, 0.0525, 0.07, 0.07, 0.07]),
 0.007300831979014655,
 0.0071428571428571435)

・ちなみに、統計解析ライブラリのpingouinでもできる。

pingouin-stats.org

import pingouin as pg
pg.multicomp(p_value,alpha=0.05,method="fdr_bh")

(array([ True, False, False, False, False, False, False]),
 array([0.007, 0.07 , 0.14 , 0.21 , 0.35 , 0.42 , 0.49 ]))

 

・便利かも。

 

おわり。