¿Ajustar el valor p para el análisis secuencial adaptativo (para la prueba de chi cuadrado)?


12

Deseo saber qué literatura estadística es relevante para el siguiente problema, y ​​tal vez incluso una idea sobre cómo resolverlo.

Imagine el siguiente problema:

Tenemos 4 posibles tratamientos para alguna enfermedad. Para verificar qué tratamiento es mejor, realizamos una prueba especial. En la prueba, comenzamos por no tener sujetos, luego, uno por uno, se ingresan más sujetos en la prueba. Cada paciente se asigna aleatoriamente a uno de los 4 tratamientos posibles. El resultado final de un tratamiento es "saludable" o "aún enfermo", y digamos que podemos conocer este resultado al instante. Esto significa que en cualquier punto dado, podemos crear una tabla de contingencia de dos por cuatro, que indique cuántos de nuestros sujetos cayeron en qué tratamiento / resultado final.

En cualquier momento podemos verificar la tabla de contingencia (por ejemplo, usando una prueba de chi cuadrado), para ver si hay un tratamiento estadísticamente diferente entre los 4 tratamientos posibles. Si uno de ellos es mejor que el resto, detenemos la prueba y la elegimos como el "ganador". Si se demuestra que algún ensayo es peor que los otros tres, lo retiraremos del ensayo y dejaremos de dárselo a futuros pacientes.

Sin embargo, el problema aquí es cómo ajusto el valor p por el hecho de que la prueba se puede realizar en cualquier punto dado, que existe una correlación entre las pruebas y también que la naturaleza adaptativa del proceso manipula el proceso (para ejemplo, si se encuentra que algún tratamiento es "malo")?


2
A Wald se le ocurrió su prueba de razón de probabilidad secuencial (SPRT, por sus siglas en inglés) para crear una regla de detención, el número de sujetos que necesita para tener evidencia contra el nulo. Vea mi explicación aquí: stats.stackexchange.com/a/16120/401 Sin embargo, esto solo prueba una sola hipótesis. Pero, cuando propone una prueba de ji cuadrado, esa es solo una hipótesis (todos los tratamientos son igualmente efectivos). Parece que podría ajustar el valor p "primario" en mi publicación para múltiples pruebas y hacer varias pruebas. Tendría que pensar más sobre cómo incorporar el cambio del conjunto de tratamientos.
Charlie

1
Solo quiero señalar que hay una variación llamada "Análisis secuencial de grupo" que trata con más de un parámetro. El libro Estadísticas clínicas: Introducción de ensayos clínicos, Análisis de supervivencia y Análisis de datos longitudinales podría ayudar de acuerdo con varias fuentes, pero nunca he Léelo personalmente.
steffen

1
No puedo enfatizar lo interesante que es esta pregunta. Resolverlo también responderá muchas preguntas con respecto a las pruebas ab (misma tarea, pero los costos de error son ridículamente más bajos)
steffen

1
El libro Group Sequential Methods with Applications to Clinical Trials de Jennison y Turnbull cubre muchos de estos diseños de ensayos secuenciales. No recuerdo si el diseño de cuatro tratamientos está cubierto (pero supongo que esto es solo un modelo de regresión logística con tres variables ficticias), pero es un buen libro y vale la pena leerlo si está interesado en problemas como este . (Y @steffen, la prueba A / B (es decir, un problema binomial simple) está cubierta en el libro)
Karl Ove Hufthammer

Respuestas:


2

Esta área de ensayos clínicos secuenciales ha sido explorada sustancialmente en la literatura. Algunos de los investigadores notables son Scott Emerson, Tom Flemming, David DeMets, Stephen Senn y Stuart Pocock, entre otros.

Es posible especificar una "regla de gasto alfa". El término tiene su origen en la naturaleza de las pruebas frecuentistas (no pesqueras) donde, cada acción que aumenta el riesgo de un hallazgo falso positivo necesariamente debe reducir el poder para mantener la prueba del tamaño correcto. Sin embargo, la mayoría de estas pruebas requieren que las "reglas de detención" se especifiquen previamente en función de los límites de información del estudio. (como recordatorio, más información significa mayor poder cuando el valor nulo es falso).

Parece que lo que le interesa es un proceso de monitoreo continuo en el que cada evento requiere una "revisión" de los datos. Que yo sepa, tal prueba no tiene poder. Se puede hacer con análisis bayesiano donde la parte posterior se actualiza continuamente en función del tiempo, y los factores de Bayes se usan para resumir la evidencia en lugar de los valores .p

Ver

[1] www.rctdesign.org/


+1. Publiqué otra respuesta donde uso una simulación para calcular la tasa de error de tipo II del procedimiento sugerido. Esto permite elegir un alfa nominal tal que la prueba tenga el tamaño correcto. Me pregunto qué piensas al respecto.
ameba dice Reinstate Monica

1

Esto suena como una simulación en orden.

Entonces simulé su procedimiento de la siguiente manera: personas se agregan a la prueba una por una, asignadas aleatoriamente a uno de los grupos. El resultado del tratamiento para esta persona se elige al azar (es decir, estoy simulando una hipótesis nula de que todos los tratamientos tienen un efecto cero). Después de agregar a cada persona, realizo una prueba de chi cuadrado en la tabla de contingencia y verifico si . Si es así, entonces (y solo entonces) adicionalmente realizo pruebas de chi cuadrado en las tablas de contingencia reducidas para probar cada grupo contra otros tres grupos agrupados. Si una de estas cuatro pruebas adicionales resulta significativa (con el mismo4 4 × 2 p α 2 × 2 α N NN=100044×2pα2×2α), luego verifico si este tratamiento funciona mejor o peor que los otros tres juntos. Si es peor, dejo este tratamiento y continúo agregando personas. Si es mejor, detengo el juicio. Si se agregan todas las personas sin ningún tratamiento ganador, la prueba termina (tenga en cuenta que los resultados de mi análisis dependerán en gran medida de ).NN

Ahora podemos ejecutar esto muchas veces y descubrir en qué fracción de ejecuciones sale uno de los tratamientos como ganador: estos serían falsos positivos. Si lo ejecuto 1000 veces para nominal , obtengo 282 falsos positivos, es decir, tasa de error tipo II.0.28α=0.050.28

Podemos repetir todo este análisis para varios nominales y ver qué tasa de error real obtenemos: Entonces, si desea que la tasa de error real se mantenga en un nivel de , debe elegir el nominal de alrededor de , pero, por supuesto, es mejor ejecutar un simulación más larga para estimar esto con mayor precisión.α tasa de error 0.05 0.28 0.01 0.06 0.001 0.008 0.05 α 0.008α

αerror rate0.050.280.010.060.0010.008
0.05α0.008

Mi código rápido y sucio en Matlab está debajo. Tenga en cuenta que este código tiene muerte cerebral y no está optimizado en absoluto; todo corre en bucles y horriblemente lento. Esto probablemente se puede acelerar mucho.

function seqAnalysis()
    alphas = [0.001 0.01 0.05];
    for a = 1:length(alphas)
        falsePositives(a) = trials_run(1000, 1000, alphas(a));
    end
    display(num2str([alphas; falsePositives]))
end

function outcome = trials_run(Nrep, N, alpha)
    outcomes = zeros(1,Nrep);
    for rep = 1:Nrep
        if mod(rep,10) == 0
            fprintf('.')            
        end
        outcomes(rep) = trial(N, alpha);
    end
    fprintf('\n')
    outcome = sum(outcomes);
end


function result = trial(N, alpha)
    outcomes = zeros(2,4);

    result = 0;
    winner = [];

    %// adding subjects one by one
    for subject = 1:N
        group = randi(size(outcomes,2));
        outcome = randi(2);    
        outcomes(outcome, group) = outcomes(outcome, group) + 1;

        %// if groups are significantly different
        if chisqtest(outcomes) < alpha
            %// compare each treatment against the rest
            for group = 1:size(outcomes,2)
                contrast = [outcomes(:, group) ...
                            sum(outcomes(:, setdiff(1:size(outcomes,2), group)),2)];
                %// if significantly different
                if chisqtest(contrast) < alpha
                    %// check if better or worse
                    if contrast(1,1)/contrast(2,1) < contrast(1,2)/contrast(2,2)
                        %// kick out this group
                        outcomes = outcomes(:, setdiff(1:size(outcomes,2), group));
                    else
                        %// winner!
                        winner = group;
                    end
                    break
                end
            end
        end

        if ~isempty(winner)
            result = 1;    
            break
        end
    end
end

function p = chisqtest(x)
    e = sum(x,2)*sum(x)/sum(x(:));
    X2 = (x-e).^2./e;
    X2 = sum(X2(:));
    df = prod(size(x)-[1 1]);
    p = 1-chi2cdf(X2,df);
end
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.