¿Corrección de pruebas de hipótesis múltiples con Benjamini-Hochberg, valores p o valores q?

22

Dada una lista de valores p generados a partir de pruebas independientes, ordenadas en orden ascendente, se puede usar el procedimiento de Benjamini-Hochberg para la corrección de pruebas múltiples . Para cada valor p, el procedimiento Benjamini-Hochberg le permite calcular la tasa de descubrimiento falso (FDR) para cada uno de los valores p. Es decir, en cada "posición" en la lista ordenada de valores p, le dirá qué proporción de ellos es probable que sean rechazos falsos de la hipótesis nula.

Mi pregunta es, ¿estos valores FDR se denominarán " valores q ", o " valores p corregidos ", o como algo completamente diferente?

EDITAR 2010-07-12: Me gustaría describir más completamente el procedimiento de corrección que estamos utilizando. Primero, clasificamos los resultados de la prueba en orden creciente por su valor p original no corregido. Luego, iteramos sobre la lista, calculando lo que he estado interpretando como "el FDR esperado si rechazáramos la hipótesis nula para esta y todas las pruebas anteriores en la lista", utilizando la corrección BH, con un alfa igual al observado , valor p no corregido para la iteración respectiva. Luego tomamos, como lo que hemos estado llamando nuestro "valor q", el máximo del valor previamente corregido (FDR en la iteración i - 1) o el valor actual (en i), para preservar la monotonicidad.

A continuación se muestra un código de Python que representa este procedimiento:

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
fuente
su referencia sobre el valor q debe ser projecteuclid.org/…
robin girard
El procedimiento Benjamini-Hochberg no es para calcular el FDR, es para controlar el FDR (mantenerlo por debajo de un umbral predefinido)
robin girard
Su pregunta, tal como está, es difícil de entender. ¿Qué quieres decir con "referido"?
robin girard
@robin Muchas gracias por tus comentarios. Pido disculpas por mi confusión de terminología. He actualizado la pregunta para incluir una descripción más completa de nuestro procedimiento de corrección, con la esperanza de que proporcione aclaraciones. También he actualizado el enlace de valor q; gracias por señalarme eso
gotgenes

Respuestas:

17

Como dijo Robin, tienes el método Benjamini-Hochberg al revés. Con ese método, establece un valor para Q (Q mayúscula; el FDR máximo deseado) y luego clasifica sus comparaciones en dos montones. El objetivo es que no más del Q% de las comparaciones en la pila de "descubrimiento" sean falsas y, por lo tanto, al menos 100% -Q% sean verdaderas.

Si calculó un nuevo valor para cada comparación, que es el valor de Q en el que esas comparaciones apenas se considerarían un descubrimiento, entonces esos nuevos valores son valores q (minúscula q; vea el enlace a un artículo de John Storey en la pregunta original).

Harvey Motulsky
fuente
Ordenamos los resultados de la prueba en orden creciente por su valor p original no corregido, luego, iterando sobre la lista, calculamos el FDR esperado si rechazáramos la hipótesis nula para esta y todas las pruebas anteriores en la lista, usando el BH corrección usando un alfa igual al valor p no corregido observado. Luego tomamos, como lo que hemos estado llamando nuestro "valor q", el máximo del valor corregido previamente (FDR en la iteración i - 1) o el valor actual (at i), para preservar la monotonicidad. ¿Suena esto como el procedimiento que describiste en tu segundo párrafo?
gotgenes