Koreksi beberapa pengujian hipotesis dengan Benjamini-Hochberg, nilai-p atau nilai-q?


22

Diberikan daftar nilai-p yang dihasilkan dari tes independen, diurutkan dalam urutan menaik, seseorang dapat menggunakan prosedur Benjamini-Hochberg untuk koreksi pengujian ganda . Untuk setiap nilai-p, prosedur Benjamini-Hochberg memungkinkan Anda untuk menghitung False Discovery Rate (FDR) untuk masing-masing nilai-p. Yaitu, pada setiap "posisi" dalam daftar nilai-p yang diurutkan, ia akan memberi tahu Anda berapa proporsi dari mereka yang kemungkinan merupakan penolakan palsu dari hipotesis nol.

Pertanyaan saya adalah, apakah nilai-nilai FDR ini disebut sebagai " nilai-q ", atau sebagai " nilai-p yang dikoreksi ", atau sebagai sesuatu yang lain sama sekali?

EDIT 2010-07-12: Saya ingin lebih menjelaskan prosedur koreksi yang kami gunakan. Pertama, kami mengurutkan hasil tes dalam urutan yang meningkat dengan nilai p aslinya yang tidak diperbaiki. Kemudian, kita mengulangi daftar, menghitung apa yang telah saya tafsirkan sebagai "FDR yang diharapkan jika kita menolak hipotesis nol untuk ini dan semua tes sebelumnya dalam daftar," menggunakan koreksi BH, dengan alfa sama dengan yang diamati , nilai p yang tidak dikoreksi untuk iterasi masing-masing. Kami kemudian mengambil, seperti apa yang kami sebut sebagai "nilai-q" kami, maksimum dari nilai yang sebelumnya dikoreksi (FDR pada iterasi i - 1) atau nilai saat ini (at i), untuk menjaga monotonitas.

Di bawah ini adalah beberapa kode Python yang mewakili prosedur ini:

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

referensi Anda tentang q-value harus projecteuclid.org/...
robin girard

Prosedur Benjamini-Hochberg bukan untuk menghitung FDR, itu untuk mengendalikan FDR (menjaganya di bawah ambang batas yang telah ditentukan)
robin girard

Pertanyaan Anda, memang sulit dipahami. Apa yang Anda maksud dengan "dirujuk"?
robin girard

@robin Banyak terima kasih atas komentar Anda. Saya minta maaf atas kebingungan saya tentang terminologi. Saya telah memperbarui pertanyaan untuk memasukkan deskripsi yang lebih lengkap tentang prosedur koreksi kami, dengan harapan dapat memberikan klarifikasi. Saya juga memperbarui tautan nilai-q; terima kasih telah menunjukkannya pada saya.
Gotgenes

Jawaban:


17

Seperti kata Robin, Anda memiliki metode Benjamini-Hochberg mundur. Dengan metode itu, Anda menetapkan nilai untuk Q (huruf besar Q; FDR maksimum yang diinginkan) dan kemudian mengurutkan perbandingan Anda menjadi dua tumpukan. Tujuannya adalah bahwa tidak lebih dari Q% dari perbandingan dalam tumpukan "penemuan" adalah salah, dan dengan demikian setidaknya 100% -Q% benar.

Jika Anda menghitung nilai baru untuk setiap perbandingan, yang merupakan nilai Q di mana perbandingan hanya dianggap sebagai penemuan, maka nilai-nilai baru itu adalah nilai-q (huruf kecil q; lihat tautan ke makalah oleh John Storey dalam pertanyaan asli).


Kami mengurutkan hasil tes dalam urutan yang meningkat dengan nilai p asli yang tidak terkoreksi, kemudian, mengulangi daftar, menghitung FDR yang diharapkan jika kami menolak hipotesis nol untuk ini dan semua tes sebelumnya dalam daftar, menggunakan BH koreksi menggunakan alpha sama dengan nilai p yang diamati, tidak diperbaiki. Kami kemudian mengambil, seperti apa yang kami sebut sebagai "nilai-q" kami, maksimum dari nilai yang dikoreksi sebelumnya (FDR pada iterasi i - 1) atau nilai saat ini (at i), untuk menjaga monotonitas. Apakah ini terdengar seperti prosedur yang Anda gambarkan pada paragraf kedua Anda?
Gotgenes
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.