28 votos

Varias pruebas de hipótesis de corrección con Benjamini-Hochberg, los valores de p o p-valores?

Dada una lista de los p-valores generados a partir de pruebas independientes, ordenados en orden ascendente, se puede utilizar el Benjamini-Hochberg procedimiento para pruebas múltiples de corrección. Para cada valor de p, el Benjamini-Hochberg procedimiento permite calcular la Tasa de Falso Descubrimiento (FDR) para cada uno de los p-valores. Es decir, en cada "posición" en la lista ordenada de los valores de p, te dirá qué proporción de los que probablemente sean falsos rechazos de la hipótesis nula.

Mi pregunta es, ¿estos FDR valores a ser referido como el "p-valor", o como "corregido los valores de p", o como algo totalmente?

EDITAR 2010-07-12: me gustaría a más de describir en su totalidad el procedimiento de corrección de la que estamos utilizando. En primer lugar, podemos ordenar los resultados de la prueba en orden creciente por sus onu-corregido original p-valor. Entonces, podemos iterar sobre la lista, el cálculo de lo que he venido interpretando como "el FDR se espera que si vamos a rechazar la hipótesis nula para esta y todas las pruebas antes en la lista," el uso de la B-H de corrección, con un alfa igual a lo observado, la onu ha corregido el p-valor para esa iteración. A continuación, tomamos, como lo hemos estado llamando a nuestro "p-valor", la máxima de la anteriormente valor de corrección (FDR en la iteración i - 1) o el valor de la corriente (i), para preservar la monotonía.

A continuación se presenta el 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

19voto

CodingWithoutComments Puntos 9412

Como Robin dijo, tienes la Benjamini-Hochberg método hacia atrás. Con ese método, se establece un valor para P (mayúscula Q; la máxima deseada FDR) y, a continuación, clasifica sus comparaciones en dos montones. El objetivo es que no más del P% de las comparaciones en el "descubrimiento" de la pila son falsas, y por lo tanto al menos el 100%-P% son verdaderas.

Si se calcula un nuevo valor para cada comparación, que es el valor de P en la que las comparaciones serían apenas se trata de un descubrimiento, a continuación, los nuevos valores son p-valores (en minúsculas q; vea el enlace a un artículo de John Storey en la pregunta original).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X