逐步回归是否提供总体 r 平方的有偏估计?

机器算法验证 回归 模型选择 偏见 r平方 逐步回归
2022-03-07 22:51:03

在心理学和其他领域,通常采用逐步回归的形式,涉及以下内容:

  1. 查看剩余的预测变量(最初模型中没有)并确定导致最大 r 平方变化的预测变量;
  2. 如果 r 平方变化的 p 值小于 alpha(通常为 0.05),则包含该预测变量并返回步骤 1,否则停止。

例如,请参阅SPSS中的此过程。

由于各种原因,该程序经常受到批评(参见Stata 网站上的讨论和参考资料)。

特别是,Stata 网站总结了 Frank Harrell 的几条评论。我对索赔感兴趣:

[逐步回归] 产生严重偏高的 R 平方值。

具体来说,我目前的一些研究侧重于估计人口 r-square通过总体 r 平方,我指的是总体中由总体数据生成方程解释的方差百分比。我正在审查的许多现有文献都使用了逐步回归程序,我想知道所提供的估计是否有偏差,如果有偏差,偏差有多大。特别是,一项典型的研究将有 30 个预测变量,n = 200,0.05 的 alpha 和 0.50 左右的 r 平方估计。

我所知道的:

  • 渐近地,任何具有非零系数的预测变量都是统计上显着的预测变量,并且 r-square 将等于调整后的 r-square。因此,渐近逐步回归应该估计真实的回归方程和真实的总体 r 平方。
  • 对于较小的样本量,一些预测变量的可能遗漏将导致比模型中包含所有预测变量时更小的 r 平方。但 r-square 对样本数据的通常偏差也会增加 r-square。因此,我幼稚的想法是,这两种相反的力量可能在某些条件下导致无偏的 r 平方。更一般地说,偏差的方向将取决于数据的各种特征和 alpha 包含标准。
  • 设置更严格的 alpha 包含标准(例如,0.01、0.001 等)应该会降低预期的估计 r 平方,因为在任何数据生成中包含任何预测变量的概率都会更小。
  • 一般来说,r-square 是总体 r-square 的向上偏差估计,并且这种偏差的程度随着更多的预测变量和更小的样本量而增加。

问题

所以最后,我的问题:

  • 逐步回归的 r 平方在多大程度上导致对总体 r 平方的估计有偏差?
  • 这种偏差在多大程度上与样本量、预测变量数量、alpha 包含标准或数据属性相关?
  • 有没有关于这个主题的参考资料?
2个回答

在我的书中引用了一篇文献,表明要获得几乎无偏的估计R2在进行变量选择时,需要在公式中插入调整R2候选预测器的数量,而不是“选定”预测器的数量。因此,由变量选择引起的偏差是很大的。也许更重要的是,变量选择导致更差的真实R2并且无法真正找到“正确”的变量。

概述

许多研究人员已经讨论了逐步回归的许多问题(例如,第 4.3 节中的@FrankHarrell (2001))。Harrell 特别指出,“它产生R2偏高的值”(第 56 页)。根据您假设的估计值,该语句有几种可能的解释。如果您假设估计值是某种形式的ρ2,那么可以说:虽然这对于数据生成过程、样本大小、预测变量集和预测变量条目的 p 值标准的某些组合是正确的,但并非在所有情况下都是正确的。

具体来说,R2在估计时,逐步回归并不固有地偏向特定方向ρ2. 逐步回归中预测变量输入的 p 值标准可用于调节逐步回归的期望值R2(即,估计量ρ2)。具体来说,当 entry 的 p 值接近于零时,任何预测变量被包含在最终模型中的概率接近于零,并且 stepwise 的期望值R2将接近零。当输入的 p 值为 1 时,所有预测变量都将被保留,并逐步R2将显示相同的偏差R2显示所有预测变量。偏差与条目的 p 值单调相关。因此,将有一个进入的 p 值,这会导致无偏估计ρ2.

我在不同的条件下运行了一些模拟。产生近似无偏估计的预测变量输入的 p 值通常介于 0.05 和 0.0001 之间。但是,我还没有阅读任何明确探索这一点的模拟或就逐步发布的预期偏差提供建议R2使用给定的条目 p 值和给定数据特征的值。

也就是说,出于实际目的,调整R2专门设计用于估计ρ2. 因此,它更适合于估计ρ2而不是仅仅希望逐步回归中进入的 p 值恰好是正确的,以产生近似无偏的估计

模拟

以下模拟有四个不相关的预测变量,其中总体 r 平方为 40%。两个预测变量各解释 20%,另外两个预测变量解释 0%。模拟生成 1000 个数据集,并估计逐步回归 r-square 作为每个数据集的百分比。

# source("http://bioconductor.org/biocLite.R")
# biocLite("maSigPro") # provides stepwise regression function two.ways.stepfor 
library(maSigPro)
get_data <- function(n=100) {
    x1 <- rnorm(n, 0, 1)
    x2 <- rnorm(n, 0, 1)
    x3 <- rnorm(n, 0, 1)
    x4 <- rnorm(n, 0, 1)
    e  <- rnorm(n, 0, 1)
    y <- 1 * x1 + 1 * x2 + sqrt(3) * e
    data <- data.frame(y, x1, x2, x3, x4)
    data
}

get_rsquare <- function(x, alpha=.05) {
    fit <- two.ways.stepfor(x$y, subset(x, select=-y),  alfa=alpha)
        class(fit) <-'lm'
        summary.lm(fit)$r.square * 100
}

以下代码返回 r-square,其 alpha 为 .01、.001、.0001 和 .00001。

set.seed(1234)
simulations <- 1000
datasets <- lapply(seq(simulations), function(X) get_data(n=100))
rsquares01 <- sapply(datasets, function(X) get_rsquare(X, alpha=.01))
rsquares001 <- sapply(datasets, function(X) get_rsquare(X, alpha=.001))
rsquares0001 <- sapply(datasets, function(X) get_rsquare(X, alpha=.0001))
rsquares00001 <- sapply(datasets, function(X) get_rsquare(X, alpha=.00001))

以下结果表明了五个 alpha 条目中的每一个的偏差。请注意,我已将 r-square 乘以 100,以便更容易看到差异。

mean(rsquares01) - 40 
mean(rsquares001) - 40 
mean(rsquares0001) - 40 
mean(rsquares00001) - 40 
sd(rsquares01)/sqrt(simulations) # approximate standard error in estimate of bias 

结果表明,0.01 和 .001 条目的 alpha 导致正偏差,0.0001 和 .00001 条目的 alpha 导致负偏差。因此,大概 0.0005 左右的 alpha 将导致无偏逐步回归。

> mean(rsquares01) - 40 
[1] 1.128996
> mean(rsquares001) - 40 
[1] 0.8238992
> mean(rsquares0001) - 40 
[1] -0.9681992
> mean(rsquares00001) - 40 
[1] -5.126225
> sd(rsquares01)/sqrt(simulations) # approximate standard error in estimate of bias
[1] 0.2329339

我从中得出的主要结论是,逐步回归并非天生就偏向特定方向。也就是说,除了一个预测变量输入的 p 值之外,它至少会有些偏差。我接受@Peter Flom 的观点,在现实世界中我们不知道数据生成过程。然而,我想更详细地探索这种偏差如何随着 n、输入的 alpha、数据生成过程和逐步回归过程(例如,包括向后传递)而变化,可以大大有助于理解这种偏差。

参考

  • 哈勒尔,FE(2001 年)。回归建模策略:应用于线性模型、逻辑回归和生存分析。施普林格。