Multiple Hypothesentestkorrektur mit Benjamini-Hochberg, p-Werten oder q-Werten?

22

Ausgehend von einer Liste von p-Werten, die aus unabhängigen Tests in aufsteigender Reihenfolge generiert wurden, kann das Benjamini-Hochberg-Verfahren für die Korrektur mehrerer Tests verwendet werden . Mit dem Benjamini-Hochberg-Verfahren können Sie für jeden p-Wert die False Discovery Rate (FDR) berechnen. Das heißt, an jeder "Position" in der sortierten Liste der p-Werte wird angegeben, welcher Anteil davon wahrscheinlich falsche Ablehnungen der Nullhypothese sind.

Meine Frage ist, sind diese FDR-Werte als " q-Werte " oder als " korrigierte p-Werte " oder als etwas ganz anderes zu bezeichnen?

EDIT 2010-07-12: Ich möchte das Korrekturverfahren, das wir verwenden, genauer beschreiben. Zunächst sortieren wir die Testergebnisse in aufsteigender Reihenfolge nach ihrem nicht korrigierten ursprünglichen p-Wert. Dann iterieren wir über die Liste und berechnen, was ich als "den FDR erwartet habe, wenn wir die Nullhypothese für diese und alle Tests vor der Liste ablehnen", wobei wir die BH-Korrektur mit einem Alpha gleich dem beobachteten verwenden , unkorrigierter p-Wert für die jeweilige Iteration. Wir nehmen dann, wie wir es als unseren "q-Wert" bezeichnet haben, das Maximum des zuvor korrigierten Wertes (FDR bei Iteration i - 1) oder den aktuellen Wert (bei i), um die Monotonie zu erhalten.

Nachfolgend finden Sie einen Python-Code, der diese Prozedur darstellt:

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
gotgenes
quelle
Ihre Referenz zu q-value sollte projecteuclid.org/… sein
robin girard
Das Benjamini-Hochberg-Verfahren dient nicht zur Berechnung des FDR, sondern zur Steuerung des FDR (unter einem vordefinierten Schwellenwert)
Robin Girard
Ihre Frage ist derzeit schwer zu verstehen. Was meinst du mit "bezeichnet"?
Robin Girard
@robin Vielen Dank für Ihre Kommentare. Ich entschuldige mich für meine verwirrende Terminologie. Ich habe die Frage aktualisiert, um eine vollständigere Beschreibung unseres Korrekturverfahrens aufzunehmen, in der Hoffnung, dass es Klarheit schafft. Ich habe auch den q-value-Link aktualisiert. danke, dass du mich darauf hingewiesen hast.
Gotgenes

Antworten:

17

Wie Robin sagte, haben Sie die Benjamini-Hochberg-Methode rückwärts. Mit dieser Methode setzen Sie einen Wert für Q (Großbuchstaben Q; der maximal gewünschte FDR) und sortieren dann Ihre Vergleiche in zwei Stapel. Das Ziel ist, dass nicht mehr als Q% der Vergleiche im "Entdeckungs" -Stapel falsch sind und somit mindestens 100% -Q% wahr sind.

Wenn Sie für jeden Vergleich einen neuen Wert berechnet haben, bei dem es sich um den Wert von Q handelt, bei dem diese Vergleiche kaum als Entdeckung gewertet würden, handelt es sich bei diesen neuen Werten um q-Werte (Kleinbuchstaben q; siehe den Link zu einem Artikel von John Storey) in der ursprünglichen Frage).

Harvey Motulsky
quelle
Wir sortieren die Testergebnisse in aufsteigender Reihenfolge nach ihrem nicht korrigierten ursprünglichen p-Wert und berechnen dann durch Iteration über die Liste den erwarteten FDR, wenn wir die Nullhypothese für diesen und alle vorherigen Tests in der Liste mit dem BH ablehnen Korrektur unter Verwendung eines Alphas, das dem beobachteten, nicht korrigierten p-Wert entspricht. Wir nehmen dann, wie wir es als unseren "q-Wert" bezeichnet haben, das Maximum des zuvor korrigierten Wertes (FDR bei Iteration i - 1) oder den aktuellen Wert (at i), um die Monotonie zu erhalten. Klingt dies nach der Vorgehensweise, die Sie in Ihrem zweiten Absatz beschrieben haben?
Gotgenes