적응 형 순차 분석을위한 p- 값 조정 (카이 제곱 테스트)?


12

다음 문제와 관련된 통계 문헌이 무엇인지, 그리고 해결 방법에 대한 아이디어를 알고 싶습니다.

다음과 같은 문제를 상상해보십시오.

일부 질병에는 4 가지 치료법이 있습니다. 어떤 치료가 더 나은지 확인하기 위해 특별한 시험을 수행합니다. 시험에서 우리는 과목이없는 것으로 시작한 다음, 더 많은 과목이 시험에 참여합니다. 각 환자는 4 가지 가능한 치료 중 하나에 무작위로 할당됩니다. 치료의 최종 결과는 "건강한"또는 "아픈 병"이며,이 결과를 즉시 알 수 있다고 말해주십시오. 즉, 어떤 시점에서 우리는 얼마나 많은 대상이 어떤 치료 / 종료 결과에 빠졌는지 말하는 2x4 우연의 표를 만들 수 있습니다.

언제든 우발 사태 표 (예 : 카이 제곱 검정 사용)를 확인하여 4 가지 가능한 처리간에 통계적으로 다른 처리가 있는지 확인할 수 있습니다. 그들 중 하나가 더 나은 경우 나머지는 모두-우리는 재판을 중지하고 "승자"로 선택합니다. 일부 시험이 다른 3 가지 시험보다 더 나쁘면 시험에서 제외하고 향후 환자에게 제공하는 것을 중단 할 것입니다.

그러나 여기서의 문제는 주어진 시점에서 테스트를 수행 할 수 있고 테스트 사이에 상관 관계가 있으며 프로세스의 적응 특성이 프로세스를 조작한다는 사실에 대해 p- 값조정 하는 방법입니다. 예를 들어, 일부 치료가 "나쁜"것으로 판명 된 경우)?


2
Wald는 SPRT (Sequential Probability Ratio Test)를 사용하여 널 (null)에 대한 증거가 필요한 주제 수인 중지 규칙을 작성했습니다. 내 설명을 참조하십시오 : stats.stackexchange.com/a/16120/401 이것은 단일 가설 만 테스트합니다. 그러나 카이 제곱 검정을 제안 할 때는 단일 가설 일뿐입니다 (모든 처리가 동일하게 효과적 임). 여러 테스트를 위해 내 게시물의 "기본"p- 값을 조정하고 여러 테스트를 수행 할 수있는 것으로 보입니다. 치료 세트의 변화를 통합하는 방법에 대해 더 생각해야 할 것입니다.
Charlie

1
하나 이상의 매개 변수를 다루는 "그룹 순차 분석"이라는 변형이 있습니다. 임상 통계 : 임상 시험 소개, 생존 분석 및 경도 데이터 분석 은 다양한 출처에 따라 도움이 될 수 있지만 개인적으로 읽으십시오.
steffen

1
이 질문이 얼마나 흥미로운 지 강조 할 수 없습니다. 이 문제를 해결하면 ab-test에 관한 많은 질문에 답할 수 있습니다 (같은 작업이지만 오류 비용이 엄청나게 낮습니다)
steffen

1
이 책은 임상 시험에 응용 프로그램과 함께 그룹 순차 방법 Jennison 및 턴불에 의해 많은 같은 순차적 시험 설계를 다룹니다. 4 개 처리 설계가 적용되는지 기억이 나지 않지만 (이것은 3 개의 더미 변수가있는 로지스틱 회귀 모델 일뿐입니다.) 좋은 책이며, 이와 같은 문제에 관심이 있다면 읽을 가치가 있습니다. . (@steffen 그리고, A / B 테스트 (즉, 간단한 이항 문제는) 되어 책에 덮여있다.)
칼 비켜 Hufthammer

답변:


2

이러한 순차적 임상 시험 영역은 문헌에서 실질적으로 탐구되었다. 주목할만한 연구원 중 일부는 Scott Emerson, Tom Flemming, David DeMets, Stephen Senn 및 Stuart Pocock입니다.

"알파 지출 규칙"을 지정할 수 있습니다. 이 용어는 잦은 (비 피셔 인) 테스트의 특성에서 비롯된 것으로서, 오 탐지의 위험을 증가시키는 각각의 행동은 반드시 정확한 크기의 테스트를 유지하기위한 힘을 줄여야합니다. 그러나 이러한 테스트의 대부분은 연구의 정보 범위를 기반으로 "중지 규칙"을 미리 지정해야합니다. (알림으로, 더 많은 정보는 null이 false 일 때 더 큰 힘을 의미합니다).

p

보다

[1] www.rctdesign.org/


+1. 제안 된 절차의 유형 II 오류율을 계산하기 위해 시뮬레이션을 사용하는 또 다른 답변을 게시했습니다. 이것은 테스트가 올바른 크기를 갖도록 공칭 알파를 선택할 수있게합니다. 나는 당신이 그것에 대해 어떻게 생각하는지 궁금합니다.
amoeba는 Reinstate Monica

1

시뮬레이션 순서대로 들립니다.

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

α=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.