Uyarlamalı ardışık analiz için p-değerinin ayarlanması (ki kare testi için)?


12

Aşağıdaki problemle ilgili istatistiksel literatürün ne olduğunu bilmek istiyorum ve hatta nasıl çözüleceğine dair bir fikir bile istiyorum.

Aşağıdaki sorunu düşünün:

Bazı hastalıklar için 4 olası tedavimiz var. Hangi tedavinin daha iyi olduğunu kontrol etmek için özel bir deneme yapıyoruz. Denemede, hiç denek olmamakla başlıyoruz, daha sonra denemeye birer birer daha fazla denek giriliyor. Her hasta rastgele 4 olası tedaviden birine tahsis edilir. Tedavinin sonucu "sağlıklı" veya "hala hasta" dır ve bu sonucu anında bildiğimizi söyleyelim. Bu, herhangi bir noktada, deneklerimizden kaçının hangi tedaviye / nihai sonuca düştüğünü söyleyerek iki ila dört olasılık tablosu oluşturabileceğimiz anlamına gelir.

Herhangi bir noktada, olası 4 tedavi arasında istatistiksel olarak farklı bir tedavi olup olmadığını görmek için beklenmedik durum tablosunu (örneğin, ki kare testi kullanarak) kontrol edebiliriz. Eğer onlardan biri daha iyi ise geri kalanını - denemeyi durdurur ve "kazanan" olarak seçeriz. Eğer bir denemenin diğer üçünden daha kötü olduğu gösteriliyorsa, onu denemeden çıkaracağız ve gelecekteki hastalara vermeyi bırakacağız.

Ancak, burada bir sorundur ki buradaki p-değeri ayarlamak nasıl orada testleri arasında bir ilişki vardır, ve bu test herhangi bir noktada gerçekleştirilebilir gerçeği de bu süreç manipüle işlem uyarlanabilir doğası (için Örneğin, bazı tedavilerin "kötü" olduğu tespit edilirse)?


2
Wald, bir sıfırlama kuralı oluşturmak için sıralı olasılık oranı testi (SPRT) ile geldi. Açıklamamı burada görebilirsiniz: stats.stackexchange.com/a/16120/401 Bu, yalnızca tek bir hipotezi test eder. Ancak, ki-kare testi önerdiğinizde, bu sadece tek bir hipotezdir (tüm tedaviler eşit derecede etkilidir). Birden fazla test için yazımda "birincil" p değerini ayarlayabildiğiniz ve birkaç test yapabileceğiniz anlaşılıyor. Tedavi setinin değiştirilmesinin nasıl dahil edileceği hakkında daha fazla düşünmek zorunda kalacağım.
Charlie

1
Ben sadece "Grup Sıralı Analizi" Birden fazla parameter.The kitabı ile uğraşan denilen bir varyasyon olduğunu not etmek istiyorum Klinik İstatistik: Klinik Araştırmalar Tanıtımı yaşam analizleri ve Boyuna Veri Analizi çeşitli kaynaklara göre yardımcı olabilir, ama asla kişisel olarak okuyun.
steffen

1
Bu sorunun ne kadar ilginç olduğunu vurgulayamıyorum. Çözülmesi aynı zamanda ab-testleri ile ilgili birçok soruyu cevaplayacaktır (aynı görev, ancak hata maliyetleri gülünç derecede daha düşük)
steffen

1
Jennison ve Turnbull'un Klinik Araştırmalara Başvurduğu Grup Sıralı Yöntemler kitabı bu tür sıralı deneme tasarımlarını kapsar. Dört tedavi tasarımının kapsanıp kapandığını hatırlamıyorum (ama bu sadece üç kukla değişkenli bir lojistik regresyon modeli), ancak güzel bir kitap ve bu tür sorunlarla ilgileniyorsanız okumaya değer . (@Steffen Ve A / B testi (yani basit binom sorun) olduğu kitapta kaplı.)
Karl Ove Hufthammer

Yanıtlar:


2

Bu sıralı klinik araştırma alanı literatürde büyük ölçüde araştırılmıştır. Dikkate değer araştırmacıların bazıları Scott Emerson, Tom Flemming, David DeMets, Stephen Senn ve Stuart Pocock'dur.

Bir "alfa harcama kuralı" belirtmek mümkündür. Terimin kökenleri, sık rastlanan (Balıkçı olmayan) testlerin doğasında vardır; burada, yanlış pozitif bulgu riskini artıran her eylemin, doğru boyuttaki testi tutmak için gücü mutlaka azaltması gerekir. Bununla birlikte, bu tür testlerin çoğu, çalışmanın bilgi sınırlarına dayanarak "durdurma kuralları" nın önceden belirlenmesini gerektirir. (hatırlatma olarak, daha fazla bilgi null değeri yanlış olduğunda daha fazla güç anlamına gelir).

p

Görmek

[1] www.rctdesign.org/


+1. Önerilen prosedürün tip II hata oranını hesaplamak için bir simülasyon kullandığım başka bir cevap yayınladım. Bu, testin doğru boyuta sahip olacağı şekilde nominal bir alfa seçilmesine izin verir. Bunun hakkında ne düşündüğünü merak ediyorum.
amip diyor Reinstate Monica

1

Bu bir simülasyonun sırası gibi geliyor.

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

α=0.050.28

α

αerror rate0.050.280.010.060.0010.008
0.05α0.008

Matlab'daki hızlı ve kirli kodum aşağıda. Lütfen bu kodun ölü olduğunu ve hiç optimize edilmediğini unutmayın; her şey döngüler halinde çalışır ve korkunç derecede yavaştır. Bu muhtemelen çok hızlandırılabilir.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.