Корекція тестування декількох гіпотез з Benjamini-Hochberg, p-значеннями або q-значеннями?


22

З огляду на перелік p-значень, отриманих незалежними тестами, відсортований у порядку зростання, можна використовувати процедуру Бенджаміні-Гохберга для корекції багаторазового тестування . Для кожного p-значення процедура Бенджаміні-Хохберга дозволяє обчислити показник помилкового виявлення (FDR) для кожного з p-значень. Тобто, при кожній "позиції" у відсортованому списку p-значень воно скаже вам, яка частка цих випадків може бути помилковим відхиленням нульової гіпотези.

Моє запитання: чи слід називати ці значення FDR як " q-значення ", або як " виправлені p-значення ", або як щось інше цілком?

EDIT 2010-07-12: Я хотів би більш детально описати процедуру виправлення, яку ми використовуємо. По-перше, ми сортуємо результати тестів у порядку збільшення за їх непоправленим вихідним p-значенням. Потім ми повторюємо список, обчислюючи те, що я інтерпретував як "очікуваний FDR, якщо ми будемо відкинути нульову гіпотезу для цього та всіх тестів, попередніх у списку", використовуючи корекцію BH, з альфа-рівним спостережуваним , непоправлене р-значення для відповідної ітерації. Потім ми беремо, як те, що ми називали нашим «значенням q», максимум попередньо відкоригованого значення (FDR при ітерації i - 1) або поточного значення (at 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 має бути projecteuclid.org/…
robin girard

Процедура Бенджаміні-Хохберга не є для обчислення FDR, це для контролю FDR (утримання її за попередньо визначеним порогом)
Робін Жирард

Ваше запитання, як воно є, важко зрозуміти. Що ви маєте на увазі під "посиланням"?
Робін Жирард

@robin Дякую за ваші коментарі. Прошу вибачення за те, що я плутаю термінологію. Я оновив це питання, щоб включити більш повний опис нашої процедури виправлення, сподіваючись, що він надасть роз'яснення. Я також оновив посилання q-значення; дякую, що вказали мені на це.
gotgenes

Відповіді:


17

Як сказав Робін, ви отримали метод Бенджаміні-Хохберга назад. За допомогою цього методу ви встановлюєте значення Q (верхній регістр Q; максимально бажаний FDR), а потім сортуєте ваші порівняння у дві палі. Мета полягає в тому, що не більше Q% порівнянь в купі "виявлення" є хибними, і, таким чином, принаймні 100% -Q% є істинними.

Якщо ви обчислили нове значення для кожного порівняння - це значення Q, при якому ці порівняння ледве вважалися б відкриттям, то ці нові значення - це значення q (нижній регістр q; див. Посилання на документ Джона Сторі в оригінальному питанні).


Ми сортуємо результати тестів у зростаючому порядку за їх непоправленим початковим p-значенням, потім, повторюючи список, обчислюємо очікуваний FDR, якщо ми відкинемо нульову гіпотезу для цього та всіх тестів, попередніх у списку, використовуючи BH корекція за допомогою альфа, що дорівнює спостережуваному, некоректованому p-значенню. Потім ми беремо, як те, що ми називали нашим «значенням q», максимум раніше скорегованого значення (FDR при ітерації i - 1) або поточного значення (at i), щоб зберегти монотонність. Це звучить як процедура, яку ви описали у другому абзаці?
gotgenes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.