昇順でソートされた独立したテストから生成されたp値のリストが与えられた場合、複数のテストの修正にBenjamini-Hochberg手順を使用できます。各p値について、Benjamini-Hochbergプロシージャを使用すると、各p値のFalse Discovery Rate(FDR)を計算できます。つまり、ソートされたp値のリストの各「位置」で、それらのどの割合が帰無仮説の誤った拒否である可能性が高いかを示します。
私の質問は、これらのFDR値は「q値」、「修正されたp値」、または完全に別のものと呼ばれますか?
編集2010-07-12:私たちが使用している修正手順をより完全に説明したいと思います。まず、未修正の元のp値で昇順にテスト結果を並べ替えます。次に、リストを反復処理し、「これとリストの前のすべての検定について帰無仮説を拒否する場合に予想されるFDR」として解釈されているものを計算します。 、各反復の未修正p値。次に、「q値」と呼んでいるものとして、単調性を維持するために、以前に修正された値(反復i-1でのFDR)または現在の値(i)の最大値を取ります。
以下は、この手順を表すPythonコードです。
def calc_benjamini_hochberg_corrections(p_values, num_total_tests):
"""
Calculates the Benjamini-Hochberg correction for multiple hypothesis
testing from a list of p-values *sorted in ascending order*.
See
http://en.wikipedia.org/wiki/False_discovery_rate#Independent_tests
for more detail on the theory behind the correction.
**NOTE:** This is a generator, not a function. It will yield values
until all calculations have completed.
:Parameters:
- `p_values`: a list or iterable of p-values sorted in ascending
order
- `num_total_tests`: the total number of tests (p-values)
"""
prev_bh_value = 0
for i, p_value in enumerate(p_values):
bh_value = p_value * num_total_tests / (i + 1)
# Sometimes this correction can give values greater than 1,
# so we set those values at 1
bh_value = min(bh_value, 1)
# To preserve monotonicity in the values, we take the
# maximum of the previous value or this one, so that we
# don't yield a value less than the previous.
bh_value = max(bh_value, prev_bh_value)
prev_bh_value = bh_value
yield bh_value
q-valueに関する参照はprojecteuclid.org/…である
—
ロビンギラード
Benjamini-Hochbergの手順はFDRを計算するためではなく、FDRを制御するため(事前に定義されたしきい値以下に維持するため)
—
ロビンギラード
あなたの質問は、現状では理解するのが難しいです。「参照」とはどういう意味ですか?
—
ロビンジラール
@robinコメントありがとうございます。用語の混乱をおforび申し上げます。修正手順のより完全な説明を含むように質問を更新し、説明を提供することを期待しています。q-valueリンクも更新しました。それを教えてくれてありがとう。
—
gotgenes