这是p-hacking吗?

机器算法验证 假设检验 方差分析 t检验 卡方检验 黑客攻击
2022-03-29 05:45:51

我目前正在使用来自玻璃门的数据(通过 kaggle 找到)调查性别薪酬差距。该数据集包含性别、年龄、员工绩效评估、资历、薪酬等列。

背景:在过去的几年里,我学习了很多数据科学/机器学习/编程,并且在申请工作之前,我只是在做一些我自己的基本投资组合项目以进行实践。

我做了一个相当幼稚的t检验,比较男性的平均工资和女性的平均工资。我现在正在寻找添加控件,比较相似的年龄组、资历、教育水平等。我想做更多的 t 检验,以及查看卡方分布和/或 ANOVA。

当我做多个测试 A/B 测试时,我想避免 p-hacking。我有一些假设,例如,我预计老年群体的薪酬差距会更大。但这主要是探索数据,我没有要为整个研究证明的单一假设,也没有政治议程。

只要我选择要进行的比较并报告所有内容,我不确定它是否真的算作 p-hacking。如果我选择报告哪个 t 检验结果来帮助证明假设,我认为这只是 p-hacking。这公平吗?

还有一个问题(暂时忘记我的数据),使用方差分析,因为它一次比较多个组以寻找意义,这不是 p-hacking 吗?

3个回答

如果您正在进行探索性分析,那么您就不会关心 p 值。您所做的是搜索任何模式。P 值用于验证假设,但您没有。

但是,如果在您的探索性分析之后,您将使用相同的数据执行一些假设检验,那么如果假设是由相同的数据创建的,那么这会给出错误的 p 值。

如果您只有一个可用的数据集,那么您可以将数据分成两个子集,一个用于分析,另一个用于后续研究,以验证发现的模式是否与抽样中的统计变化有很大不同。


您似乎正在通过使用假设检验和 p 值来搜索模式。如果您仅将 p 值视为模式识别(搜索异常)的帮助,而不是与实验相关的报告值以验证某种效果,那么这不是 p-hacking。

您必须小心,但不要将含义从模式识别中使用的统计量转换为表达实验的统计显着性以测量效果的值。

它看起来像 p-hacking。请记住,标准检验(例如 t 检验)是为检验单个假设而设计的。特别是,如果您获得多个 p 值,则这些值并不是相互独立的,尤其是在您寻找子组之间的效应异质性时。这通常会导致 p-hacking(或数据窥探)。

每当您测试多个假设时,您都应该小心,并考虑到多个假设测试(例如,Bonferroni校正)和错误发现或者,依靠预先分析计划,在其中预先指定要测试的(少数)假设。

如果您想了解有关 p-hacking 的更多详细信息,我建议您轻松阅读上一届诺贝尔经济学奖获得者 Guido Imbens: Imbens (2021) 的文章(大约 40 分钟,完全不是技术性的)如果您对治疗效果异质性感兴趣, Athey 和 Imbens (2016)提出了一种数据驱动的替代预分析计划和数据窥探的方法

关于方差分析,我同意@Dave 在提出不同问题时的评论。

P-hacking 意味着证明特定类型假设的议程,并且为了推进该议程,测试了几个相关的假设。然后,如果发现其中一个具有“统计显着性”,则仅报告该测试及其 p 值。例如,如果我声称自己是通灵者,我可能会测试我可以比机会更好地猜测卡片颜色的假设,以及我可以猜测卡片价值的假设等。然后,如果这些测试中的任何一个是统计显着,我忽略其他。这忽略了这样一个事实,即任何假设的误报总概率大于任何特定假设的误报概率。即 P(A 或 B) > P(A)。

在这里,您似乎没有议程,并且您可能没有发布您的结果,所以您不应该太担心 p-hacking,除了您检查的假设越多,概率越高的事实得到至少一个误报。如果这与您有关,您可以做的是选择一个整体 alpha 值(对于任何产生误报的测试,您愿意接受多少概率),然后为各个测试选择较小的调整 alpha 以获得整体误报概率足够低。一种有点过于保守的方法(也就是说,它不是很正确,但在避免误报方面是错误的),但实现起来很简单,就是将整体 alpha 除以测试的数量(或乘以 p-数值)。例如,100组合,其中一个的 p 值为0.001,您可以将其视为其 p 值为0.1(如果你想知道“等等,这是否意味着我可以得到一个大于1?”,嗯,这就是我所说的近似值的一部分)。

虽然 ANOVA 测试涉及多重比较,但它们最终只输出一个 p 值。“p-hacking”一词类似于“樱桃采摘”。如果你只有一颗樱桃,你就不能挑选樱桃。