LoginSignup
2
1

More than 5 years have passed since last update.

FDR制御(BH法) を実装してみた

Last updated at Posted at 2018-10-12

BH法

FDR制御のためにBH法を実装してみたので自分用にメモ

与えるpvalueの配列にnanが入っていると事故るので注意。
最後にfor使ってるのがダサい気がするが、他にいい方法が見つからない。

参考にしたサイトはこちら

qvalue.py

import numpy as np

def adjust_bh(p_values):
    p_values=np.array(p_values)
    m=len(p_values) 
    sorted_idx=np.argsort(p_values) #後で元の順番に戻すのに使う
    sorted_p=p_values[sorted_idx]
    one_to_m=np.arange(1,m+1)
    q_prime=m*sorted_p/one_to_m
    q_values=np.zeros(m)
    q_values[m-1]=q_prime[m-1]
    for i in range(m-2,-1,-1):
        q_values[i]=np.min([q_prime[i],q_values[i+1]])

    return q_values[np.argsort(sorted_idx)] #元の順番に戻してから返す
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1