Menyesuaikan nilai-p untuk analisis sekuensial adaptif (untuk uji chi square)?

12

Saya ingin tahu literatur statistik apa yang relevan untuk masalah berikut ini, dan mungkin bahkan sebuah ide tentang bagaimana menyelesaikannya.

Bayangkan masalah berikut ini:

Kami memiliki 4 kemungkinan perawatan untuk beberapa penyakit. Untuk memeriksa perawatan mana yang lebih baik, kami melakukan uji coba khusus. Dalam uji coba, kita mulai dengan tidak memiliki subjek, lalu, satu per satu, lebih banyak subjek dimasukkan ke dalam uji coba. Setiap pasien dialokasikan secara acak ke salah satu dari 4 perawatan yang mungkin. Hasil akhir dari perawatan adalah "sehat" atau "masih sakit", dan katakanlah kita dapat mengetahui hasil ini secara instan. Ini berarti bahwa pada suatu titik tertentu, kita dapat membuat tabel kontingensi dua dengan empat, dengan mengatakan berapa banyak dari subyek kita yang termasuk dalam perawatan / hasil akhir.

Pada titik mana pun kita dapat memeriksa tabel kontingensi (misalnya, menggunakan uji chi square), untuk melihat apakah ada perlakuan yang berbeda secara statistik antara 4 kemungkinan perawatan. Jika salah satu dari mereka lebih baik dari yang lain - kami menghentikan uji coba dan memilihnya sebagai "pemenang". Jika beberapa percobaan terbukti lebih buruk dari ketiga lainnya, kami akan menjatuhkannya dari percobaan dan berhenti memberikannya kepada pasien di masa depan.

Namun, masalahnya di sini adalah bagaimana cara menyesuaikan nilai-p untuk fakta bahwa tes dapat dilakukan pada titik tertentu, bahwa ada korelasi antara tes, dan juga bahwa sifat adaptif dari proses memanipulasi proses (untuk Misalnya, jika beberapa pengobatan ditemukan "buruk")?

Tal Galili
sumber
2
Wald datang dengan uji rasio probabilitas berurutan (SPRT) untuk membuat aturan berhenti, jumlah subjek yang Anda butuhkan untuk memiliki bukti terhadap nol. Lihat penjelasan saya di sini: stats.stackexchange.com/a/16120/401 Ini hanya menguji hipotesis tunggal. Tetapi, ketika Anda mengusulkan tes chi-squared, itu hanya hipotesis tunggal (semua perawatan sama efektifnya). Tampaknya Anda dapat menyesuaikan nilai p "primer" di posting saya untuk beberapa pengujian dan melakukan beberapa pengujian. Saya harus berpikir lebih banyak tentang bagaimana menggabungkan perubahan set perawatan.
Charlie
1
Saya hanya ingin mencatat bahwa ada variasi yang disebut "Analisis Sekuensial Kelompok" yang berurusan dengan lebih dari satu parameter. Buku Statistik Klinis: Memperkenalkan Uji Klinis, Analisis Kelangsungan Hidup, dan Analisis Data Longitudinal dapat membantu sesuai dengan berbagai sumber, tetapi saya belum pernah membacanya secara pribadi.
steffen
1
Saya tidak bisa menekankan betapa menariknya pertanyaan ini. Mengatasinya juga akan menjawab banyak pertanyaan mengenai ab-tes (tugas yang sama, tetapi biaya kesalahan jauh lebih rendah)
steffen
1
Buku Kelompok Metode Berurutan dengan Aplikasi untuk Uji Klinis oleh Jennison dan Turnbull mencakup banyak desain percobaan berurutan tersebut. Saya tidak ingat apakah desain empat perawatan tercakup (tapi saya kira ini hanya model regresi logistik dengan tiga variabel dummy), tapi ini buku yang bagus, dan sangat layak dibaca jika Anda tertarik dengan masalah seperti ini . (Dan @steffen, A / B-test (yaitu, masalah binomial sederhana) yang dibahas dalam buku ini.)
Karl Ove Hufthammer

Jawaban:

2

Area uji klinis sekuensial ini telah dieksplorasi secara substansial dalam literatur. Beberapa peneliti terkenal adalah Scott Emerson, Tom Flemming, David DeMets, Stephen Senn, dan Stuart Pocock.

Dimungkinkan untuk menentukan "aturan belanja alpha". Istilah ini berawal pada sifat pengujian frequentist (non-Fisherian) di mana, setiap tindakan yang meningkatkan risiko temuan positif palsu harus selalu mengurangi daya untuk menjaga pengujian ukuran yang benar. Namun, sebagian besar dari tes tersebut mensyaratkan bahwa "aturan berhenti" ditentukan sebelumnya berdasarkan batas informasi penelitian. (sebagai pengingat, lebih banyak informasi berarti kekuatan lebih besar ketika nol adalah salah).

p

Lihat

[1] www.rctdesign.org/

AdamO
sumber
+1. Saya memposting jawaban lain di mana saya menggunakan simulasi untuk menghitung tingkat kesalahan tipe II dari prosedur yang disarankan. Hal ini memungkinkan untuk memilih alpha nominal sehingga tes memiliki ukuran yang benar. Saya ingin tahu apa yang Anda pikirkan tentang itu.
Amuba kata Reinstate Monica
1

Ini terdengar seperti simulasi.

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

α=0.050.28 tingkat kesalahan tipe II.

Kita dapat mengulangi seluruh analisis ini untuk beberapa nominal dan melihat berapa tingkat kesalahan aktual yang kita dapatkan: tingkat kesalahan α 0,05 0,28 0,01α

αerror rate0.050.280.010.060.0010.008
0.05α0.008

Kode cepat dan kotor saya di Matlab ada di bawah. Harap perhatikan bahwa kode ini mati otak dan tidak dioptimalkan sama sekali; semuanya berjalan dalam loop dan sangat lambat. Ini mungkin bisa dipercepat banyak.

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
amuba kata Reinstate Monica
sumber