การปรับค่า p สำหรับการวิเคราะห์ลำดับแบบปรับตัว (สำหรับการทดสอบไคสแควร์)?


12

ฉันต้องการทราบว่าวรรณกรรมทางสถิติใดที่เกี่ยวข้องกับปัญหาต่อไปนี้และอาจเป็นแนวคิดในการแก้ไข

ลองนึกภาพปัญหาต่อไปนี้:

เรามีวิธีการรักษา 4 ประการสำหรับโรคบางประเภท เพื่อตรวจสอบว่าการรักษาใดดีกว่าเราทำการทดลองพิเศษ ในการทดลองเราเริ่มโดยไม่มีวิชาจากนั้นหนึ่งต่อหนึ่งวิชาเพิ่มเติมเข้าสู่การทดลอง ผู้ป่วยแต่ละรายจะถูกสุ่มเลือกหนึ่งใน 4 การรักษาที่เป็นไปได้ ผลลัพธ์สุดท้ายของการรักษาคือ "สุขภาพดี" หรือ "ยังป่วย" และให้เราบอกว่าเราสามารถรู้ผลลัพธ์นี้ได้ทันที ซึ่งหมายความว่า ณ จุดใดก็ตามเราสามารถสร้างตารางฉุกเฉินได้สองถึงสี่ตารางโดยบอกว่าอาสาสมัครของเรามีจำนวนเท่าใดที่เข้ารับการรักษา / สิ้นสุดผล

ณ จุดใดก็ตามเราสามารถตรวจสอบตารางฉุกเฉิน (ตัวอย่างเช่นใช้การทดสอบไคสแควร์) เพื่อดูว่ามีการรักษาที่แตกต่างกันทางสถิติระหว่าง 4 การรักษาที่เป็นไปได้หรือไม่ หากหนึ่งในนั้นดีกว่าส่วนที่เหลือทั้งหมด - เราจะหยุดการทดลองและเลือกเป็น "ผู้ชนะ" หากการทดลองบางอย่างแสดงว่าแย่กว่านั้นอีกสามเราจะปล่อยเขาจากการทดลองและหยุดให้มันแก่ผู้ป่วยในอนาคต

อย่างไรก็ตามปัญหานี่คือฉันจะปรับ p-valueสำหรับข้อเท็จจริงได้อย่างไรว่าการทดสอบสามารถดำเนินการได้ทุกจุดว่ามีความสัมพันธ์ระหว่างการทดสอบและลักษณะการปรับตัวของกระบวนการจัดการกระบวนการ (สำหรับ เช่นหากการรักษาบางอย่างพบว่า "ไม่ดี")?


2
Wald มาพร้อมกับการทดสอบอัตราส่วนความน่าจะเป็นต่อเนื่อง (SPRT) ของเขาเพื่อสร้างกฎการหยุดจำนวนของวิชาที่คุณต้องมีหลักฐานต่อโมฆะ ดูคำอธิบายของฉันที่นี่: stats.stackexchange.com/a/16120/401นี่แค่ทดสอบสมมติฐานเดียวเท่านั้น แต่เมื่อคุณเสนอการทดสอบแบบไคสแควร์นั่นเป็นเพียงสมมติฐานเดียว (การรักษาทั้งหมดมีประสิทธิภาพเท่ากัน) ดูเหมือนว่าคุณสามารถปรับค่า p หลักในโพสต์ของฉันสำหรับการทดสอบหลายครั้งและทำการทดสอบหลายอย่าง ฉันต้องคิดเพิ่มเติมเกี่ยวกับวิธีรวมการเปลี่ยนแปลงของชุดการรักษา
Charlie

1
ฉันต้องการทราบว่ามีรูปแบบที่เรียกว่า "การวิเคราะห์ลำดับกลุ่ม" ที่เกี่ยวข้องกับพารามิเตอร์มากกว่าหนึ่งรายการหนังสือสถิติทางคลินิก: การแนะนำการทดลองทางคลินิกการวิเคราะห์การอยู่รอดและการวิเคราะห์ข้อมูลตามยาวสามารถช่วยได้ตามแหล่งต่าง ๆ แต่ฉันไม่เคย อ่านมันเป็นการส่วนตัว
steffen

1
ฉันไม่สามารถเน้นว่าคำถามนี้น่าสนใจแค่ไหน แก้มันก็จะตอบคำถามจำนวนมากเกี่ยวกับ AB-ทดสอบ (งานเดียวกัน แต่ค่าใช้จ่ายข้อผิดพลาดที่มีการขันลด)
Steffen

1
หนังสือกลุ่มวิธีการต่อเนื่องกับการประยุกต์ใช้กับการทดลองทางคลินิกโดย Jennison และ Turnbull ครอบคลุมการออกแบบการทดลองตามลำดับจำนวนมากเช่นนั้น ฉันจำไม่ได้ว่าการออกแบบสี่การรักษานั้นครอบคลุมหรือไม่ (แต่ฉันเดาว่านี่เป็นเพียงรูปแบบการถดถอยโลจิสติกที่มีตัวแปรตัวจำลองสามตัว) แต่มันเป็นหนังสือที่ดีและคุ้มค่าที่จะอ่านถ้าคุณสนใจปัญหาเช่นนี้ . (และ @steffen, A / B-ทดสอบ (เช่นปัญหาทวินามง่าย) จะครอบคลุมในหนังสือเล่มนี้.)
คาร์ล Ove Hufthammer

คำตอบ:


2

พื้นที่ของการทดลองทางคลินิกตามลำดับนี้ได้รับการสำรวจอย่างมากในวรรณคดี นักวิจัยที่มีชื่อเสียงบางคน ได้แก่ Scott Emerson, Tom Flemming, David DeMets, Stephen Senn และ Stuart Pocock

เป็นไปได้ที่จะระบุ "อัลฟ่า - การใช้จ่าย - กฎ" คำที่มีต้นกำเนิดในลักษณะของการทดสอบบ่อยครั้ง (ที่ไม่ใช่ชาวประมง) ที่แต่ละการกระทำที่เพิ่มความเสี่ยงของการค้นพบในเชิงบวกที่ผิดพลาดควรลดอำนาจในการทดสอบขนาดที่ถูกต้อง อย่างไรก็ตามการทดสอบดังกล่าวส่วนใหญ่กำหนดให้ "กฎการหยุด" ได้รับการกำหนดล่วงหน้าตามขอบเขตข้อมูลของการศึกษา (เพื่อเป็นการเตือนความจำข้อมูลเพิ่มเติมหมายถึงพลังที่มากขึ้นเมื่อโมฆะเป็นเท็จ)

ดูเหมือนว่าสิ่งที่คุณสนใจคือกระบวนการตรวจสอบอย่างต่อเนื่องซึ่งแต่ละเหตุการณ์ในเวลารับประกัน "ดู" ลงในข้อมูล เท่าที่ฉันรู้แล้วการทดสอบดังกล่าวไม่มีอำนาจ ก็สามารถทำได้ด้วยการวิเคราะห์แบบเบย์ที่หลังได้รับการปรับปรุงอย่างต่อเนื่องเป็นหน้าที่ของเวลาและปัจจัย Bayes ถูกนำมาใช้เพื่อสรุปหลักฐานมากกว่า -valuesp

ดู

[1] www.rctdesign.org/


+1 ฉันโพสต์คำตอบอื่นโดยใช้การจำลองเพื่อคำนวณอัตราความผิดพลาด Type II ของขั้นตอนที่แนะนำ วิธีนี้ช่วยให้สามารถเลือกอัลฟาที่ระบุว่าการทดสอบมีขนาดที่ถูกต้อง ฉันสงสัยว่าคุณคิดอย่างไร
อะมีบาพูดว่า Reinstate Monica

1

ดูเหมือนว่าการจำลองจะเป็นไปตามลำดับ

ดังนั้นฉันจึงจำลองขั้นตอนของคุณดังนี้:คนถูกเพิ่มเข้าไปในการทดลองแบบหนึ่งต่อหนึ่งโดยสุ่มให้กับหนึ่งในกลุ่ม ผลลัพธ์ของการรักษาสำหรับบุคคลนี้ถูกสุ่มเลือก (เช่นฉันกำลังจำลองสมมุติฐานว่างของการรักษาทั้งหมดที่ไม่มีผลกระทบ) หลังจากเพิ่มแต่ละคนผมดำเนินการทดสอบไคสแควร์ในตารางฉุกเฉินและตรวจสอบว่า\ ถ้าเป็นเช่นนั้น (และจากนั้นเท่านั้น) ฉันทำการทดสอบไคสแควร์เพิ่มเติมในตารางฉุกเฉินที่ลดลงเพื่อทดสอบแต่ละกลุ่มกับอีกสามกลุ่มที่รวมกัน หากหนึ่งในสี่การทดสอบต่อไปนี้ออกมาอย่างมีนัยสำคัญ (ด้วยเดียวกันN=100044×2pα2×2α) จากนั้นฉันจะตรวจสอบว่าการรักษานี้ทำงานได้ดีขึ้นหรือแย่ลงกว่าอีกสามการรวมกัน ถ้าแย่กว่านั้นฉันก็เตะทรีทเม้นต์นี้และเพิ่มคนต่อไป ถ้าดีกว่าฉันหยุดการทดลอง หากมีการเพิ่มคนคนทั้งหมดโดยไม่ได้รับการรักษาใด ๆ การทดลองก็จบลง (โปรดทราบว่าผลการวิเคราะห์ของฉันจะขึ้นอยู่กับ ) อย่างยิ่งNN

ตอนนี้เราสามารถเรียกใช้หลาย ๆ ครั้งและค้นหาว่าส่วนใดของการบำบัดส่วนหนึ่งที่ออกมาในฐานะผู้ชนะ - สิ่งเหล่านี้จะเป็นผลบวกที่ผิดพลาด หากฉันเรียกใช้ 1,000 ครั้งสำหรับค่าเล็กน้อยฉันจะได้รับผลบวกปลอม 282 อัตราเช่นข้อผิดพลาดประเภท IIα=0.050.28

เราสามารถทำซ้ำการวิเคราะห์ทั้งหมดนี้สำหรับหลาย ๆและดูว่าอัตราความผิดพลาดที่เราได้รับคืออะไร:ดังนั้นหากคุณต้องการให้อัตราความผิดพลาดจริงที่ระดับคุณควรเลือกค่าเล็กน้อยประมาณ - แต่แน่นอนว่ามันจะดีกว่าถ้าเรียกใช้ การจำลองที่ยาวขึ้นเพื่อประมาณค่าแม่นยำยิ่งขึ้นα

αerror rate0.050.280.010.060.0010.008
0.05α0.008

รหัสที่รวดเร็วและสกปรกของฉันใน Matlab อยู่ด้านล่าง โปรดทราบว่ารหัสนี้ไม่เหมาะสำหรับสมอง ทุกอย่างทำงานในลูปและช้าอย่างน่ากลัว นี่อาจเร่งได้มาก

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.