Benjamini-Hochberg、p値またはq値による複数の仮説検定修正?


22

昇順でソートされた独立したテストから生成された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


Benjamini-Hochbergの手順はFDRを計算するためではなく、FDRを制御するため(事前に定義されたしきい値以下に維持するため)
ロビンギラード

あなたの質問は、現状では理解するのが難しいです。「参照」とはどういう意味ですか?
ロビンジラール

@robinコメントありがとうございます。用語の混乱をおforび申し上げます。修正手順のより完全な説明を含むように質問を更新し、説明を提供することを期待しています。q-valueリンクも更新しました。それを教えてくれてありがとう。
gotgenes

回答:


17

ロビンが言ったように、あなたはベンジャミニ・ホックバーグ法を逆に持っています。その方法を使用して、Qの値(大文字のQ、必要な最大FDR)を設定し、比較を2つの山にソートします。目標は、「ディスカバリー」パイルの比較のQ%以下が偽であり、したがって少なくとも100%-Q%が真であることです。

各比較の新しい値(Qの値)を計算した場合、その比較はほとんど検出と見なされないため、それらの新しい値はq値(小文字q、John Storeyの論文へのリンクを参照)元の質問で)。


テスト結果を未修正の元のp値で昇順に並べ替えてから、リストを反復処理し、BHを使用して、これとリスト内のすべてのテストの帰無仮説を拒否する場合に予想されるFDRを計算します観測された未修正のp値に等しいアルファを使用した修正。次に、「q-value」と呼んでいるものとして、単調性を維持するために、以前に修正された値(反復時のFDR i - 1)または現在の値(at i)の最大値を取ります。これは、2番目の段落で説明した手順のように聞こえますか?
gotgenes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.