使用引导程序计算 p 值

机器算法验证 引导程序 p 值
2022-03-11 15:25:09

我有一个相对复杂的模型拟合程序,其输出是一组系数β(一个用于训练集中的每个特征)和一组超参数λ(控制正则化的量)。

我想计算每个特征的 p 值。目前,我的程序是这样的:

  1. 确定超参数的良好值λ=λ使用交叉验证。
  2. 用这些超参数在整个数据集上拟合模型,得到β=β
  3. 对于每个功能i
    • 为了j=1n
      • 打乱特征的值i产生一个新的数据集Xj
      • 使模型适合Xj与超参数λ获得βj
    • 计算次数的比例|βij|>|βi|并将其称为特征的 p 值i

这符合我对 p 值是什么的直观理解(即每次改组都会产生一个数据集,其中零假设βi=0成立,因为我已经随机化了所有的依赖)但我想知道它是多么“规范”。我可以想到其他几种方法来做到这一点,例如:

  1. 重新拟合超参数以及每个内部循环上的系数。
  2. 使用带替换的采样来生成新的数据集,而不是改组。

哪一个更好?

而且,更重要的是,我生成的数字可以被解释为具有任何可靠性的 p 值吗?

1个回答

用于引发讨论的大量替代方案!

1)您的主要建议实际上是一种排列测试而不是引导程序,并且确实会生成 p 值。p 值在可交换性假设下是准确的,我无法用特定于您的模型的术语来描述它,因为我不知道您的模型,并且如果您可以进行所有可能的排列。在线性回归中,假设残差是独立同分布的,足以保持可交换性。但是,在循环内重新调整超参数是合适的。

请注意,在缺少单元的不平衡 ANOVA 问题中,由于可交换性要求,可能无法设计置换测试(例如, Good,第 138 页。)

2) 使用带放回抽样将置换检验转变为基于非参数自举的检验。再一次,在循环内重新调整超参数是合适的,但不需要可交换性。

通常,非参数引导测试既不精确也不保守,并且不如置换测试强大,所以我更喜欢置换测试(如果我有选择的话。)还有参数引导测试可以在分布时使用原假设下的检验统计量是已知的。这些比它们的非参数表亲更强大。在你的情况下,如果你有一个线性回归并且你愿意假设 iid 正态残差,那么分布β^在零假设下是已知的,您可以使用该事实来构建参数引导。不过,您不会通过排列测试。

一个很好的参考是Permutation, Parametric, and Bootstrap Tests of Hypotheses (Good)