Корекція тестування декількох гіпотез з 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.