Regolazione del valore p per l'analisi sequenziale adattiva (per il test del chi quadro)?


12

Vorrei sapere quale letteratura statistica è rilevante per il seguente problema e forse anche un'idea su come risolverlo.

Immagina il seguente problema:

Abbiamo 4 possibili trattamenti per alcune malattie. Al fine di verificare quale trattamento è meglio, eseguiamo una prova speciale. Nel processo, iniziamo senza avere soggetti, quindi, uno per uno, vengono inseriti più soggetti nel processo. Ogni paziente viene assegnato in modo casuale a uno dei 4 possibili trattamenti. Il risultato finale di un trattamento è "sano" o "ancora malato" e diciamo che possiamo conoscere questo risultato all'istante. Ciò significa che in un dato momento, possiamo creare una tabella di contingenza due per quattro, che indica quanti dei nostri soggetti rientrano in quale trattamento / risultato finale.

In qualsiasi momento possiamo controllare la tabella di contingenza (ad esempio, usando un test del chi quadro), per vedere se esiste un trattamento statisticamente diverso tra i 4 possibili trattamenti. Se uno di questi è migliore di tutto il resto, interrompiamo il processo e lo scegliamo come "vincitore". Se si dimostra che un certo processo è peggiore di tutti gli altri tre, lo abbandoneremo dallo studio e smetteremo di somministrarlo a pazienti futuri.

Tuttavia, il problema qui è come adattare il valore p per il fatto che il test può essere eseguito in un dato punto, che esiste una correlazione tra i test e anche che la natura adattiva del processo manipola il processo (per esempio, se un trattamento risulta "cattivo")?


2
Wald ha inventato il suo test del rapporto di probabilità sequenziale (SPRT) per creare una regola di arresto, il numero di soggetti di cui hai bisogno per avere prove contro il nulla. Vedi la mia spiegazione qui: stats.stackexchange.com/a/16120/401 Questo però verifica solo una singola ipotesi. Ma quando proponi un test chi-quadro, questa è solo una singola ipotesi (tutti i trattamenti sono ugualmente efficaci). Sembra che tu possa adattare il valore p "primario" nel mio post per più test e fare diversi test. Dovrei pensare di più a come incorporare il cambiamento del set di trattamenti.
Charlie,

1
Voglio solo notare che esiste una variante chiamata "Analisi sequenziale di gruppo" che tratta di più di un parametro. Il libro Statistiche cliniche: l'introduzione di studi clinici, analisi di sopravvivenza e analisi dei dati longitudinali potrebbe aiutare secondo varie fonti, ma non ho mai leggilo personalmente.
Steffen,

1
Non posso sottolineare quanto sia interessante questa domanda. Risolverlo risponderà anche a molte domande riguardanti gli ab-test (stesso compito, ma i costi dell'errore sono ridicolmente inferiori)
steffen,

1
Il libro Group Sequential Methods with Applications to Clinical Trials di Jennison e Turnbull tratta molti di questi progetti di studi sequenziali. Non ricordo se il progetto a quattro trattamenti è coperto (ma immagino che questo sia solo un modello di regressione logistica con tre variabili fittizie), ma è un bel libro, e vale la pena leggere se sei interessato a problemi come questo . (E @steffen, il test A / B (cioè il semplice problema binomiale) è trattato nel libro.)
Karl Ove Hufthammer,

Risposte:


2

Questa area di studi clinici sequenziali è stata esplorata sostanzialmente in letteratura. Alcuni dei principali ricercatori sono Scott Emerson, Tom Flemming, David DeMets, Stephen Senn e Stuart Pocock, tra gli altri.

È possibile specificare una "regola di spesa alfa". Il termine ha le sue origini nella natura di test frequentatori (non per i pescatori) in cui, ogni azione che aumenta il rischio di un risultato falso positivo dovrebbe necessariamente ridurre il potere per mantenere il test della dimensione corretta. Tuttavia, la maggior parte di tali test richiede che le "regole di interruzione" siano prespecificate in base ai limiti di informazione dello studio. (come promemoria, più informazioni significano maggiore potenza quando il null è falso).

p

Vedere

[1] www.rctdesign.org/


+1. Ho pubblicato un'altra risposta in cui utilizzo una simulazione per calcolare il tasso di errore di tipo II della procedura suggerita. Ciò consente di scegliere un'alfa nominale in modo tale che il test abbia dimensioni corrette. Mi chiedo cosa ne pensi.
ameba dice Ripristina Monica il

1

Sembra che una simulazione sia in ordine.

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

α=0.050.28

α

αerror rate0.050.280.010.060.0010.008
0.05α0.008

Il mio codice rapido e sporco in Matlab è sotto. Si noti che questo codice è cerebrale e non ottimizzato affatto; tutto scorre in loop e orribilmente lento. Questo probabilmente può essere accelerato molto.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.