Ajustando o valor-p para análise sequencial adaptativa (para teste do qui-quadrado)?


12

Desejo saber que literatura estatística é relevante para o seguinte problema, e talvez até uma idéia de como resolvê-lo.

Imagine o seguinte problema:

Temos 4 tratamentos possíveis para algumas doenças. Para verificar qual o melhor tratamento, realizamos um teste especial. No julgamento, começamos por não ter sujeitos e, um por um, mais sujeitos são inseridos no julgamento. Cada paciente é alocado aleatoriamente em um dos 4 tratamentos possíveis. O resultado final de um tratamento é "saudável" ou "ainda está doente", e digamos que podemos saber esse resultado instantaneamente. Isso significa que, a qualquer momento, podemos criar uma tabela de contingência de dois a quatro, dizendo quantos de nossos sujeitos se enquadram em qual tratamento / resultado final.

A qualquer momento, podemos verificar a tabela de contingência (por exemplo, usando um teste do qui quadrado), para verificar se existe um tratamento estatisticamente diferente entre os 4 tratamentos possíveis. Se um deles é melhor do que todo o resto - paramos o julgamento e o escolhemos como o "vencedor". Se algum teste for pior do que os outros três, nós o abandonaremos do teste e deixaremos de administrá-lo a futuros pacientes.

No entanto, o problema aqui é como ajusto o valor-p pelo fato de o teste poder ser executado em um determinado momento, de haver correlação entre os testes e também de que a natureza adaptativa do processo manipula o processo (por Por exemplo, se algum tratamento for considerado "ruim")?


2
Wald apresentou seu teste de razão de probabilidade seqüencial (SPRT) para criar uma regra de parada, o número de sujeitos que você precisa ter evidência contra o nulo. Veja minha explicação aqui: stats.stackexchange.com/a/16120/401 Isso apenas testa uma única hipótese. Porém, quando você propõe um teste do qui-quadrado, essa é apenas uma hipótese (todos os tratamentos são igualmente eficazes). Parece que você pode ajustar o valor de "primário" no meu post para vários testes e fazer vários testes. Eu teria que pensar mais sobre como incorporar a mudança do conjunto de tratamentos.
Charlie

1
Quero apenas observar que existe uma variação chamada "Análise Sequencial de Grupo" que lida com mais de um parâmetro. O livro Estatística Clínica: Introdução de Ensaios Clínicos, Análise de Sobrevivência e Análise Longitudinal de Dados pode ajudar de acordo com várias fontes, mas nunca leia pessoalmente.
Steffen

1
Não posso enfatizar o quão interessante é essa pergunta. Resolvê-lo também irá responder a uma série de perguntas sobre ab-testes (mesma tarefa, mas os custos de erro são ridiculamente baixas)
Steffen

1
O livro Group Sequential Methods with Applications to Clinical Trials, de Jennison e Turnbull, abrange muitos desses projetos de ensaios seqüenciais. Não me lembro se o design de quatro tratamentos é coberto (mas acho que este é apenas um modelo de regressão logística com três variáveis ​​fictícias), mas é um bom livro e vale muito a pena ler se você estiver interessado em problemas como este . (E @steffen, a / B-teste A (ou seja, problema binomial simples) é coberto no livro.)
Karl Ove Hufthammer

Respostas:


2

Esta área de ensaios clínicos sequenciais foi explorada substancialmente na literatura. Alguns dos pesquisadores mais notáveis ​​são Scott Emerson, Tom Flemming, David DeMets, Stephen Senn e Stuart Pocock, entre outros.

É possível especificar uma "regra de gastos alfa". O termo tem sua origem na natureza de testes freqüentistas (não-pescadores), onde cada ação que aumenta o risco de um achado falso positivo deve necessariamente reduzir o poder de manter o teste do tamanho correto. No entanto, a maioria desses testes exige que as "regras de parada" sejam pré-especificadas com base nos limites de informações do estudo. (como lembrete, mais informações significam maior poder quando o nulo é falso).

p

Vejo

[1] www.rctdesign.org/


+1. Postei outra resposta em que utilizo uma simulação para calcular a taxa de erro tipo II do procedimento sugerido. Isso permite escolher um alfa nominal para que o teste tenha o tamanho correto. Eu me pergunto o que você pensa sobre isso.
Ameba diz Reinstate Monica

1

Parece que uma simulação está em ordem.

N=100044×2pα2×2αNN

α=0,050.28

α

αerror rate0.050.280.010.060.0010.008
0.05α0.008

Meu código rápido e sujo no Matlab está abaixo. Observe que esse código está com morte encefálica e não é otimizado; tudo corre em voltas e terrivelmente lento. Provavelmente isso pode ser acelerado muito.

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.