调整p值以进行自适应顺序分析(用于卡方检验)?


12

我想知道哪些统计文献与以下问题有关,甚至可能有关于如何解决该问题的想法。

想象以下问题:

对于某些疾病,我们有4种可能的治疗方法。为了检查哪种治疗更好,我们进行了一次特殊的试验。在试验中,我们从没有受试者开始,然后一个接一个地将更多受试者输入试验。每个患者随机分配到4种可能的治疗方法之一。治疗的最终结果是“健康”或“仍然生病”,我们可以立即知道该结果。这意味着,在任何给定的点上,我们都可以创建一个2 x 4的列联表,说明我们有多少受试者属于哪种治疗/最终结果。

在任何时候,我们都可以检查列联表(例如,使用卡方检验),以查看这4种可能的治疗方法之间在统计学上是否存在不同的治疗方法。如果其中一个比较好,那么其余所有-我们将停止试验并选择它作为“优胜者”。如果某个试验被证明比其他三个试验都更糟,我们将把他从试验中删除,并停止提供给将来的患者。

但是,这里的问题是我如何针对可以在任何给定点执行测试,测试之间存在相关性以及过程的自适应性质操纵过程的事实来调整p值。例如,如果发现某些治疗方法“不好”)?


2
Wald提出了他的顺序概率比率检验(SPRT)来创建一个终止规则,即需要证据证明无效的受试者的数量。在这里查看我的解释:stats.stackexchange.com/a/16120/401不过,这仅测试了一个假设。但是,当您提出卡方检验时,那只是一个假设(所有治疗方法都同样有效)。看来您可以调整我的帖子中的“主要” p值以进行多次测试并进行多次测试。我将不得不更多地考虑如何结合治疗方法的变化。
查理

1
我只想指出,存在一个称为“组顺序分析”的变体,它处理多个参数。《临床统计:临床试验简介,生存分析和纵向数据分析》一书可根据各种来源提供帮助,但我从来没有亲自阅读。
steffen '02

1
我不能强调这个问题有多有趣。解决它还将回答很多有关Ab测试的问题(相同的任务,但是错误成本低得可笑)
steffen 2012年

1
Jennison和Turnbull 所著的《组序贯方法及其在临床试验中应用》一书涵盖了许多此类序贯试验设计。我不记得是否涵盖了四种方法的设计(但是我想这只是一个带有三个虚拟变量的逻辑回归模型),但这是一本不错的书,如果您对这样的问题感兴趣的话,非常值得一读。(并且@ steffen,A / B测试(即简单的二项式问题)在书中介绍。)
Karl Ove Hufthammer 2015年

Answers:


2

顺序临床试验的这一领域已在文献中进行了实质性的探索。一些著名的研究人员包括Scott Emerson,Tom Flemming,David DeMets,Stephen Senn和Stuart Pocock。

可以指定“ alpha-spending-rule”。该术语起源于经常性(非Fisherian)测试的性质,在该测试中,增加假阳性结果风险的每个操作都必然会降低保持正确大小测试的能力。但是,大多数此类测试要求根据研究的信息范围预先指定“停止规则”。(提醒一下,当null为false时,更多信息意味着更强大的功能)。

听起来您感兴趣的是一个连续的监视过程,其中每个事件时间都需要对数据进行“观察”。据我所知,这样的测试是无能为力的。可以通过贝叶斯分析来完成,其中后验随时间不断更新,并且使用贝叶斯因子来汇总证据而不是。p

看到

[1] www.rctdesign.org/


+1。我发布了另一个答案,其中我使用模拟来计算建议过程的II型错误率。这允许选择标称alpha,以使测试具有正确的大小。我想知道您对此有何看法。
变形虫说莫妮卡(

1

这听起来像是在进行模拟。

因此,我对您的过程进行了如下模拟:将人一个一地添加到试验中,并随机分配给组之一。对该患者的治疗结果是随机选择的(即,我正在模拟所有效果为零的治疗的无效假设)。添加每个人后,我对列联表进行卡方检验,并检查。如果是这样,那么(并且只有这样),我还要对减少的列联表进行卡方检验,以将每个组与其他三个合并在一起的组进行测试。如果这四项测试中的一项显着(具有相同的N=100044×2pα2×2α),然后检查这种处理方法是否比其他三种方法更好或更差。如果情况更糟,我将取消这种治疗并继续增加人员。如果更好,我将停止审判。如果所有个人都经过添加而没有任何获胜的待遇,则审判结束(请注意,我的分析结果将严重取决于)。NN

现在我们可以进行多次运行,并找出其中一种治疗方法可以胜出,这是错误的肯定。如果我对标称运行1000次,则会得到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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.