可以输入多元回归方程的最大自变量数

机器算法验证 回归 预测器 重要性 邦费罗尼
2022-01-18 15:40:01

可以在多元回归方程中输入的自变量数量的限制是多少?我有 10 个预测变量,我想根据它们对结果变量的相对贡献来检查它们。我应该使用 bonferroni 校正来调整多个分析吗?

4个回答

您需要考虑“限制”的含义。存在限制,例如当您的预测变量多于案例时,您会在参数估计中遇到问题(请参阅此答案底部的小 R 模拟)。

但是,我想您更多地谈论与统计能力和良好统计实践相关的软限制。在这种情况下,“限制”的语言并不合适。相反,更大的样本量往往会使拥有更多预测变量变得更合理,并且可以说有多少预测变量是合理的阈值落在合理性的连续统一体上。您可能会发现有关多元回归中样本大小的经验法则的讨论,因为许多此类经验法则都参考了预测变量的数量。

几点

  • 如果您更关心整体预测而不是单个预测变量的统计显着性,那么与关注单个预测变量的统计显着性相比,包含更多预测变量可能是合理的。
  • 如果您更关心测试与您的研究问题相关的特定统计模型(例如,在许多社会科学应用程序中很常见),那么您可能有理由包含特定的预测变量。但是,您也可能有机会选择包含哪些预测变量(例如,如果您有多个变量来衡量类似的结构,您可能只包含其中一个)。在进行基于理论的模型测试时,有很多选择,关于包含哪些预测变量的决定涉及您的理论和研究问题之间的密切联系。
  • 我不经常看到研究人员将 bonferroni 校正应用于回归系数的显着性检验。一个合理的原因可能是研究人员对评估模型的整体属性更感兴趣。
  • 如果您对评估预测变量的相对重要性感兴趣,我发现检查预测变量与结果之间的双变量关系以及预测变量与控制其他预测变量的结果之间的关系很有用。如果您包含许多预测变量,则通常更有可能包含高度相关的预测变量。在这种情况下,对双变量和基于模型的重要性指数的解释可能很有用,因为在双变量意义上重要的变量可能会被其他相关预测变量隐藏在模型中(我在此处通过链接对此进行了详细说明)。


一点R模拟

我写了这个小模拟来突出多元回归中样本量和参数估计之间的关系。

set.seed(1)

fitmodel <- function(n, k) {
  # n: sample size
  # k: number of predictors
  # return linear model fit for given sample size and k predictors
  x <- data.frame(matrix( rnorm(n*k), nrow=n))
  names(x) <- paste("x", seq(k), sep="")
  x$y <- rnorm(n)  
  lm(y~., data=x)
}

fitmodel函数采用两个参数n作为样本大小和k预测变量的数量。我没有将常数计算为预测变量,但它是估计的。然后我生成随机数据并拟合回归模型,从k预测变量中预测任意变量并返回拟合。

鉴于您在问题中提到您对 10 个预测变量是否过多感兴趣,以下函数调用显示了当样本量分别为 9、10、11 和 12 时会发生什么。即,样本量比预测变量的数量少一到比预测变量的数量多两

summary(fitmodel(n=9, k=10))
summary(fitmodel(n=10, k=10))
summary(fitmodel(n=11, k=10))
summary(fitmodel(n=12, k=10))

> 摘要(拟合模型(n=9,k=10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
ALL 9 residuals are 0: no residual degrees of freedom!

Coefficients: (2 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.31455         NA      NA       NA
x1           0.34139         NA      NA       NA
x2          -0.45924         NA      NA       NA
x3           0.42474         NA      NA       NA
x4          -0.87727         NA      NA       NA
x5          -0.07884         NA      NA       NA
x6          -0.03900         NA      NA       NA
x7           1.08482         NA      NA       NA
x8           0.62890         NA      NA       NA
x9                NA         NA      NA       NA
x10               NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:     1,  Adjusted R-squared:   NaN 
F-statistic:   NaN on 8 and 0 DF,  p-value: NA 

样本量比预测变量的数量少一。只能估计 9 个参数,其中一个是常数。

> 摘要(拟合模型(n=10,k=10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
ALL 10 residuals are 0: no residual degrees of freedom!

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1724         NA      NA       NA
x1           -0.3615         NA      NA       NA
x2           -0.4670         NA      NA       NA
x3           -0.6883         NA      NA       NA
x4           -0.1744         NA      NA       NA
x5           -1.0331         NA      NA       NA
x6            0.3886         NA      NA       NA
x7           -0.9886         NA      NA       NA
x8            0.2778         NA      NA       NA
x9            0.4616         NA      NA       NA
x10               NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:     1,  Adjusted R-squared:   NaN 
F-statistic:   NaN on 9 and 0 DF,  p-value: NA 

样本大小与预测变量的数量相同。只能估计 10 个参数,其中一个是常数。

> 摘要(拟合模型(n=11,k=10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
ALL 11 residuals are 0: no residual degrees of freedom!

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  -0.9638         NA      NA       NA
x1           -0.8393         NA      NA       NA
x2           -1.5061         NA      NA       NA
x3           -0.4917         NA      NA       NA
x4            0.3251         NA      NA       NA
x5            4.4212         NA      NA       NA
x6            0.7614         NA      NA       NA
x7           -0.4195         NA      NA       NA
x8            0.2142         NA      NA       NA
x9           -0.9264         NA      NA       NA
x10          -1.2286         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:     1,  Adjusted R-squared:   NaN 
F-statistic:   NaN on 10 and 0 DF,  p-value: NA 

样本量比预测变量的数量大一。估计所有参数,包括常数。

> 摘要(拟合模型(n=12,k=10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
        1         2         3         4         5         6         7         8         9        10        11 
 0.036530 -0.042154 -0.009044 -0.117590  0.171923 -0.007976  0.050542 -0.011462  0.010270  0.000914 -0.083533 
       12 
 0.001581 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.14680    0.11180   1.313   0.4144  
x1           0.02498    0.09832   0.254   0.8416  
x2           1.01950    0.13602   7.495   0.0844 .
x3          -1.76290    0.26094  -6.756   0.0936 .
x4           0.44832    0.16283   2.753   0.2218  
x5          -0.76818    0.15651  -4.908   0.1280  
x6          -0.33209    0.18554  -1.790   0.3244  
x7           1.62276    0.21562   7.526   0.0841 .
x8          -0.47561    0.18468  -2.575   0.2358  
x9           1.70578    0.31547   5.407   0.1164  
x10          3.25415    0.46447   7.006   0.0903 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.2375 on 1 degrees of freedom
Multiple R-squared: 0.995,  Adjusted R-squared: 0.9452 
F-statistic: 19.96 on 10 and 1 DF,  p-value: 0.1726 

样本量比预测变量的数量多两个,最终可以估计整体模型的拟合度。

我经常从符合一定数量参数的模型是否可能产生与原始模型开发样本上的预测一样准确的样本外预测来看待这一点。校准曲线、X*Beta 的均方误差和预测辨别指数是一些常用的测量方法。这就是一些经验法则的来源,例如 15:1 规则(每个检查或估计的参数的有效样本大小为 15)。

关于多重性,假设模型成立并且满足分布假设,多重性的完美调整是所有贝塔(截距除外)为零的全局测试。这通常使用似然比或 F 检验进行测试。

有两种模型开发的总体方法往往效果很好。(1) 具有足够的样本量并适合整个预先指定的模型,以及 (2) 使用惩罚性最大似然估计以仅允许回归中的有效自由度与当前样本量支持的一样多。[没有惩罚的逐步变量选择应该不起作用,因为众所周知这是行不通的。]

我将问题改写如下:我有n观察,和p候选预测器。假设真实模型是m之间的变量p候选预测器。是否有上限m(你的限制),这样我仍然可以识别这个模型?直觉上,如果m相比起来太大了n,或者与p,可能很难识别正确的模型。换句话说:模型选择是否有限制?

对于这个问题,Candes 和 Plan 在他们的论文《Near-ideal model selection by1最小化”mKpσ1/log(p), 在哪里σ1是预测变量矩阵的最大奇异值X. 这是一个深刻的结果,虽然它依赖于几个技术条件,但它链接了观察的数量(通过σ1) 和p到我们希望估计的预测变量的数量。

原则上,您可以拥有多少个预测变量本身没有限制。原则上你可以估计 20 亿个“beta”。但在实践中发生的情况是,如果没有足够的数据或足够的先验信息,它不会被证明是一个非常富有成效的练习。不会很好地确定任何特定参数,并且您不会从分析中学到很多东西。

现在,如果您没有关于模型的大量先验信息(模型结构、参数值、噪声等),那么您将需要数据来提供这些信息。这通常是最常见的情况,这是有道理的,因为您通常需要一个很好的理由来收集关于您已经非常了解的事物的数据(并花费 $$$)。如果这是您的情况,那么合理的限制是每个参数有大量的观察值。您有 12 个参数(10 个斜率 beta、1 个截距和一个噪声参数),因此任何超过 100 个观察值都应该能够很好地确定您的参数,从而能够得出一些结论。

但没有“硬性规定”的规则。只有 10 个预测变量,你应该没有计算时间的问题(如果你这样做了,那就买一台更好的计算机)。这主要意味着只是做更多的工作,因为你要吸收 11 个维度的数据——这使得数据很难可视化。只有一个因变量的回归的基本原理并没有那么不同。

bonferroni 校正的问题在于,它是一种在不牺牲太多功效的情况下调整显着性水平的合理方法,您需要您正在校正的假设是独立的(即,学习一个假设为真并不能告诉您是否另一个假设是正确的)。例如,对于系数为零的多元回归中的标准“t 检验”,情况并非如此。检验统计量取决于模型中的其他内容——这是一种迂回的说法,即假设是依赖的。或者,更常见的说法是,以第 i 个预测变量为零为条件的 t 值的采样分布取决于其他哪些参数为零。所以在这里使用 bonferroni 校正实际上可能会给你一个较低的“整体”