数据“探索”与数据“窥探”/“折磨”?

机器算法验证 多重比较 解释 探索性数据分析
2022-01-21 21:40:02

很多次我都遇到过关于“数据窥探”的非正式警告(这里有一个有趣的例子),我想我对这意味着什么以及为什么它可能是一个问题有了一个直观的了解。

另一方面,“探索性数据分析”在统计学中似乎是一个非常受人尊敬的过程,至少从具有该标题的仍然被尊崇为经典这一事实来判断。

在我的工作中,我经常遇到在我看来猖獗的“数据窥探”,或者将其描述为“数据折磨”更好,尽管这样做的人似乎将同样的活动视为完全合理且没有问题的“探索” ”。

这是典型的场景:进行了昂贵的实验(没有过多考虑后续分析),最初的研究人员无法轻易地从收集的数据中辨别出“故事”,有人被请来应用一些“统计魔法”,而谁,在对数据进行各个方面的切片和切块之后,最终设法从中提取了一些可发布的“故事”。

当然,最终报告/论文中通常会进行一些“验证”,以表明统计分析处于上升阶段,但其背后公然不惜一切代价发表的态度让我感到怀疑。

不幸的是,我对数据分析的注意事项的有限理解使我无法超越这种模糊的怀疑,所以我的保守反应是基本上无视这些发现。

我希望不仅更好地理解探索和窥探/折磨之间的区别,而且更重要的是,更好地掌握检测何时越过这条线的原则和技术,这将使我能够评估这些发现一种可以合理地解释不太理想的分析程序的方法,因此能够超越我目前对一揽子怀疑的相当简单的反应。


编辑:谢谢大家非常有趣的评论和答案。从他们的内容来看,我想我可能没有很好地解释我的问题。我希望此更新能够澄清问题。

我在这里的问题不是应该做些什么来避免折磨我的数据(尽管这也是我感兴趣的一个问题),而是:我应该如何看待(或评估)我知道的事实已经通过的结果这样的“数据折磨”。

在那些(非常罕见的)案例中,情况变得更加有趣,此外,在这些“发现”提交出版之前,我可以就这些“发现”发表意见。

在这一点上,我能做的最多就是说“我不知道我能对这些发现给予多少信任,考虑到我对获得这些发现的假设和程序的了解。” 这太模糊了,甚至不值得一提。 想要超越这种模糊性是我发帖的动机。

公平地说,我在这里的怀疑不仅仅是基于看似可疑的统计方法。事实上,我认为后者更多是更深层次问题的结果:对实验设计的漫不经心的态度与对公布结果的明确承诺(即没有任何进一步的实验)的结合。当然,后续项目总是在设想中,但不可能有一篇论文出自“装满 100,000 个样本的冰箱”之类的。

统计数据只是作为实现这一最高目标的一种手段。锁定统计数据的唯一理由(在整个场景中都是次要的)是对“不惜一切代价出版”假设的正面挑战是毫无意义的。

事实上,在这种情况下,我只能想到一种有效的反应:提出一些真正测试分析质量的统计测试(不需要额外的实验)。但我只是没有统计数据。我的希望(回想起来很天真)是找出我可以研究的东西,这可能使我能够提出这样的测试......

当我写这篇文章时,我突然意识到,如果它不存在,世界可以使用一个新的统计分支,专门用于检测和暴露“数据酷刑”的技术。(当然,我并不是说被“折磨”的比喻冲昏了头脑:问题不在于“数据折磨”本身,而是它可能导致的虚假“发现”。)

4个回答

有时没有得到足够重视的区别,即假设生成与假设检验,或探索性分析与假设检验。您可以使用世界上所有肮脏的技巧来提出您的想法/假设。但是当你以后测试它时,你必须无情地杀死你的宝贝。

我是一名一直在处理高通量数据的生物学家,是的,我经常这样做“切片和切块”。实验进行的大多数案例都没有经过精心设计;或者也许那些计划它的人没有考虑到所有可能的结果。或者规划时的一般态度是“让我们看看里面有什么”。我们最终得到了昂贵、有价值且本身很有趣的数据集,然后我将其转来转去,想出一个故事。

但是,这只是一个故事(可能是就寝时间)。在你选择了几个有趣的角度之后——这是关键点——你不仅必须使用独立的数据集或独立的样本来测试它,而且最好使用独立的方法、独立的实验系统。

最后这件事的重要性——独立的实验装置,不仅仅是独立的测量或样本集——经常被低估。然而,当我们测试 30,000 个变量的显着差异时,经常发生的情况是,虽然来自同一队列的相似(但不同)样本并用相同的方法进行分析,但不会拒绝我们基于前一组的假设。但随后我们转向另一种类型的实验和另一个队列,我们​​的发现结果证明是方法偏差的结果,或者它们的适用性受到限制。

这就是为什么我们经常需要几位独立研究人员的几篇论文才能真正接受一个假设或模型。

所以我认为这样的数据折磨是好的,只要你记住这个区别,记住你在做什么,你处于科学过程的哪个阶段。只要您对数据进行独立验证,您就可以使用月相或重新定义 2+2。把它放在图片上:

在此处输入图像描述

不幸的是,有些人在进行了几次实验但没有出现任何故事后,订购了微阵列来收集论文,希望高通量分析能显示一些东西。或者他们对整个假设检验与生成的事情感到困惑。

赫尔曼弗里德曼,我最喜欢的研究生院教授,曾经说过

“如果你不感到惊讶,那你什么都没学到”

除了对先验定义的假设进行最严格的测试之外,严格避免任何事情都会严重限制您感到惊讶的能力。

我认为关键是我们对我们正在做的事情诚实。如果我们处于高度探索模式,我们应该这样说。在另一端,我认识的一位教授告诉她的学生改变她的假设,因为最初的假设并不重要。

让我补充几点:

  • 首先,假设生成是科学的重要组成部分。并且可以发布非预测性(探索性/描述性)结果

  • 恕我直言,问题本身并不是在数据集上使用数据探索,并且只发布了这些发现的一部分。问题是

    • 没有描述尝试了多少
    • 然后得出结论,好像该研究是对某些预测模型/假设检验研究的验证研究
  • 科学和方法开发是一种迭代过程,其方式远比仅仅产生假设 - 测试 - 产生新假设 - 测试......恕我直言,在什么阶段需要什么样的适当行为是专业判断的问题(参见示例以下)。

我做什么:

  • 尝试让人们意识到导致的乐观偏见
    当我有机会时,我也会人们展示这会产生多大的不同(对于同一问题的较低级别的情况,大多数情况下是可行的,例如将独立于患者的验证数据与内部绩效进行比较超参数优化例程的估计,比如网格搜索SVM参数,“组合模型”比如PCA-LDA等等。对于真实的数据挖掘来说不太可行,因为到目前为止,没有人给我钱合理规模研究的真实复制……)
  • 对于我合着的论文:坚持讨论结论的局限性。确保结论没有以比研究允许的更普遍的方式制定。
  • 鼓励同事利用他们关于研究主题和数据生成过程的专业知识来决定如何处理数据,而不是执行昂贵的(就您需要正确执行该操作的样本量而言)优化模型-“超”-参数(例如使用什么样的预处理)。
  • 并行:尝试让人们意识到,如果做得好,这个优化业务的成本是多少(这是否称为探索无关,如果做错了,也会产生类似数据疏浚的结果),例如Beleites, C. 和 Neugebauer , U. 和 Bocklitz, T. 和 Krafft, C. 和 Popp, J.:分类模型的样本量规划。Anal Chim Acta, 2013, 760, 25-33。DOI: 10.1016/j.aca.2012.11.007
    arXiv 上接受的手稿: 1211.1323
  • 这是一项研究,发现这种盲目尝试也常常是徒劳的,例如
    J. Engel、J. Gerretzen、E. Szymańska、JJ Jansen、G. Downey、L. Blanchet、LMC Buydens:打破预处理趋势? TraC 分析化学趋势,2013, 50, 96-106。DOI:10.1016/j.trac.2013.04.015
    (他们尝试了大量的预处理步骤组合,发现很少有比完全没有预处理更好的模型)

  • 强调我并没有过多地折磨我的数据:
    示例

    所有预处理都是专门使用光谱知识决定的,没有进行数据驱动的预处理。

    使用相同数据作为(不同)理论发展示例的 后续论文读取

    所有的预处理都是由光谱知识决定的,不包括数据驱动的步骤,也没有进行参数优化。然而,我们检查了光谱的 PLS 投影 [45] 到 25 个潜在变量上作为 LR 训练的预处理不会导致预测的轻微变化(参见补充图 S.2)。

    因为与此同时,我被明确要求(在 CILS 杂志的一位编辑的会议上)将模型与 PLS 预处理进行比较。

  • 采取实际的观点:例如在上面链接的星形细胞瘤研究中,当然我在查看数据后仍然决定了一些要点(例如什么强度阈值对应于从样本外部进行的测量 - 然后被丢弃)。我知道不重要的其他决定(线性与二次基线:我对这类数据的经验表明这实际上并没有太大变化——这也与 Jasper Engel 在类似类型的不同数据上发现的完全一致,所以我不认为通过查看数据来决定基线类型会产生很大的偏差(论文给出了一个论点,为什么这是明智的)。
    根据我们所做的研究,我们现在可以说出下一步应该解决什么以及应该改变什么。而且由于我们仍处于方法开发的相对早期阶段(查看离体样本),因此在该方法可以在体内使用之前完成所有最终需要的“作业”是值得的。例如,在星形细胞瘤分级的现阶段,重采样验证是比外部测试集更明智的选择。我仍然强调,在某些时候需要进行真正的外部验证研究,因为某些性能特征只能通过这种方式进行测量(例如仪器漂移的影响/证明我们可以纠正这些)。但现在我们还在玩ex-vivo样本并正在解决大问题的其他部分(在链接的论文中:如何处理临界案例),从适当的离体验证研究中获得的有用知识太低,不值得付出努力(恕我直言:除非这样做是为了测量由于数据疏浚引起的偏差)。

  • 我曾经读过一篇关于统计和报告标准的论点,以及是否应该决定期刊是否需要这样做(不记得是哪一个),这让我信服:那里表达的想法是编辑没有必要尝试同意并执行一些标准(这将引起很多徒劳的讨论),因为:

    • 使用正确技术的人通常对此非常了解/自豪,因此将(并且应该)详细报告所做的事情。
    • 如果没有明确说明某一点(例如数据挖掘、验证不独立于患者水平),则审稿人/读者的默认假设是该研究没有遵守该问题中的正确原则(可能是因为他们没有)不知道更好)

有时你所看到的“数据折磨”并不是真的。在你看到之前,你并不总是清楚你将如何处理数据以给出你认为是实验的真实结果。

例如,对于决策任务的反应时间数据,您通常希望拒绝与决策无关的时间(即,当它们进行得如此之快时,它们显然只是在猜测而不是做出决定)。您可以根据 RT 绘制决策的准确性,以查看猜测通常发生在哪里。但是,在您测试了该特定范式之前,您无法知道截止点在哪里(及时,而不是准确性)。对于一些观察者来说,这样的过程看起来像是在折磨数据,但只要它与假设检验没有任何直接关系(你不是根据测试调整它),那么它就不会折磨数据。

只要以正确的方式完成,实验期间的数据窥探是可以的。把你的实验放在一个黑匣子里,只在计划的受试者数量已经运行后才进行分析,这可能是不道德的。有时在您查看数据之前很难判断实验是否存在问题,您应该尽快查看一些数据。数据窥视受到强烈贬低,因为它等同于查看 p < 0.05 并决定继续。但是有很多标准可以让您决定继续收集,这些标准不会对您的错误率造成任何损害。

假设您想确保您的方差估计在已知的可能范围内。小样本的方差估计值可能非常大,因此您需要收集额外的数据,直到您知道样本更具代表性。在下面的模拟中,我希望每个条件下的方差为 1。我将做一些非常疯狂的事情,对每个组独立采样 10 个样本,然后添加受试者直到方差接近 1。

Y <- replicate(1000, {
    y1 <- rnorm(10)
    while(var(y1) < 0.9 | var(y1) > 1.1) y1 <- c(y1, rnorm(1))
    y2 <- rnorm(10)
    while(var(y2) < 0.9 | var(y2) > 1.1) y2 <- c(y2, rnorm(1))
    c( t.test(y1, y2, var.equal = TRUE)$p.value, length(y1), length(y2) )
    })
range(Y[2,]) #range of N's in group 1
[1]   10 1173
range(Y[3,]) #range of N's in group 2
[1]   10 1283
sum(Y[1,] < 0.05) / ncol(Y)
[1] 0.045

所以,我刚刚对抽样感到疯狂,并使我的方差接近预期,但我仍然不会对 alpha 产生太大影响(它略低于 0.05)。像 N 这样的更多约束在每组中必须相等,并且不能超过 30,并且 alpha 在 0.05 上几乎是正确的。但是SE呢?如果我改为尝试使 SE 成为给定值怎么办?这实际上是一个非常有趣的想法,因为我反过来提前设置了 CI 的宽度(但不是位置)。

se <- function(x) sqrt(var(x) / length(x))
Y <- replicate(1000, {
        y1 <- rnorm(10)
        y2 <- rnorm(10)
        while(se(y1) > 0.2 | se(y2) > 0.2) {
            y1 <- c(y1, rnorm(1)); y2 <- c(y2, rnorm(1))
        }
        c( t.test(y1, y2, var.equal = TRUE)$p.value, length(y1) )
        })
range(Y[2,]) #range of N's in group 1 and 2 (they're equal now)
[1] 10 46
sum(Y[1,] < 0.05) / ncol(Y)
[1] 0.053

同样,即使我允许 N 基于数据侦听从最初的 10 个漫游到 46 个,alpha 也发生了少量变化。更重要的是,SE 在每个实验中都落在一个狭窄的范围内。如果这是一个问题,很容易进行小的 alpha 调整来解决这个问题。关键是,一些数据窥探几乎没有危害,甚至可以带来好处。

(顺便说一句,我所展示的并不是什么灵丹妙药。从长远来看,您实际上并没有减少受试者的数量,因为不同 N 的模拟的功率与平均 N 的模拟大致相同)

以上都与最近关于在实验开始后添加受试者的文献相矛盾。在这些研究中,他们查看了在进行假设检验后添加受试者以降低 p 值的模拟。这仍然很糟糕,并且可以极大地夸大阿尔法。此外,我真的很喜欢一月和彼得弗洛姆的回答。我只是想指出,在收集数据时查看数据,甚至在收集时更改计划的 N,不一定是坏事。