Benjamini-Hochberg, p-değerleri veya q-değerleri ile çoklu hipotez testi düzeltmesi?


22

Artan sıraya göre sıralanan bağımsız testlerden elde edilen p değerlerinin bir listesi göz önüne alındığında, birden fazla test düzeltmesi için Benjamini-Hochberg prosedürü kullanılabilir . Her p değeri için, Benjamini-Hochberg prosedürü, her p değeri için Yanlış Keşif Oranını (FDR) hesaplamanıza izin verir. Yani, sıralanan p-değerleri listesindeki her "pozisyonda", bunların ne kadarının sıfır hipotezinin yanlış reddedilmesi muhtemel olduğunu size söyleyecektir.

Sorum şu, bu FDR değerleri " q değerleri " veya " düzeltilmiş p değerleri " olarak mı yoksa tamamen başka bir şey olarak mı anılacak ?

EDIT 2010-07-12: Kullandığımız düzeltme prosedürünü daha ayrıntılı olarak açıklamak istiyorum. İlk olarak, test sonuçlarını düzeltilmemiş orijinal p-değerlerine göre sıralamasını arttırıyoruz. Daha sonra, BH düzeltmesini kullanarak, gözlenen değere eşit bir alfa ile bu listedeki boş hipotezi ve listedeki önceki tüm testleri reddetmemiz durumunda beklenen FDR'yi bekliyoruz ”olarak yorumladığım şeyi hesaplayarak listeyi tekrarlıyoruz. , ilgili yineleme için düzeltilmemiş p değeri. Daha sonra, "q-değerimiz" olarak adlandırdığımız şey olarak, monotoniteyi korumak için önceden düzeltilmiş değerin (i - 1 yinelemesinde FDR) veya mevcut değerin (i) en yüksek değerini alırız.

Aşağıda bu işlemi temsil eden bir Python kodu verilmiştir:

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-değeri ile ilgili referansınız projecteuclid.org/…
robin girard

Benjamini-Hochberg prosedürü FDR'yi hesaplamak için değildir, FDR'yi kontrol etmek içindir (önceden tanımlanmış bir eşiğin altında tutulması)
robin girard

Sorunuz olduğu gibi, anlaşılması zor. "Sözde" ile ne demek istiyorsunuz?
robin girard

@robin Yorumlarınız için çok teşekkürler. Terminolojinin karışıklığından dolayı özür dilerim. Açıklamada, açıklama prosedürü hakkında daha ayrıntılı bir açıklama içerecek şekilde, açıklama sağlaması umuduyla güncelleme yaptım. Ayrıca q-değer bağlantısını da güncelledim; Beni ona gösterdiğin için teşekkürler.
Gotgenes

Yanıtlar:


17

Robin'in dediği gibi, Benjamini-Hochberg yöntemini geriye doğru aldınız. Bu yöntemle, Q için bir değer belirlersiniz (büyük harf Q; istenen maksimum FDR) ve karşılaştırmalarınızı iki küme halinde sıralar. Amaç, "keşif" yığınındaki karşılaştırmaların% Q'dan fazlasının yanlış olmaması ve bu nedenle en az% 100 -% Q'nun doğru olmasıdır.

Her karşılaştırma için yeni bir değer hesapladıysanız, ki bu, karşılaştırmaların ancak keşif sayılabilecek bir değer olarak bulunacağı Q değeridir, o zaman bu yeni değerler q değerleridir (küçük harf q; John Storey'in bir makalesine bakınız. orijinal soruda).


Test sonuçlarını, düzeltilmiş orijinal p-değerlerine göre artan sırayla sıralıyoruz, ardından listeyi tekrar ederek, BH için buradaki boş hipotezi ve listedeki önceki tüm testleri reddedersek beklenen FDR'yi hesaplıyoruz. gözlemlenen, düzeltilmemiş p değerine eşit bir alfa kullanarak düzeltme. Daha sonra, "q-değer" dediğimiz şey olarak , monotoniteyi korumak için önceden düzeltilmiş değerin (yinelemede FDR i - 1) veya mevcut değerin (at i) en yüksek değerini alırız. Bu ikinci paragrafınızda anlattığınız prosedüre benziyor mu?
Gotgenes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.