在多元回归方程中可以输入的自变量的数量限制是多少?我想根据其对结果变量的相对贡献来检查10个预测变量。我应该使用邦费罗尼校正来进行多次分析吗?
在多元回归方程中可以输入的自变量的数量限制是多少?我想根据其对结果变量的相对贡献来检查10个预测变量。我应该使用邦费罗尼校正来进行多次分析吗?
Answers:
您需要考虑“极限”的含义。存在局限性,例如,当预测变量多于案例时,就会遇到参数估计方面的问题(请参阅此答案底部的小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))
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个参数,其中之一是常数。
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个参数,其中之一是常数。
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
样本数量比预测变量的数量大一倍。估计所有参数,包括常数。
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)使用惩罚最大似然估计,以便在回归中仅允许使用当前样本量所支持的有效自由度。[没有惩罚的逐步变量选择将不起作用,因为众所周知这是行不通的。]
原则上,您可以拥有多少个预测变量本身没有限制。原则上,您可以估算出20亿个“ beta”。但是实际上发生的事情是,没有足够的数据或足够的先验信息,这将不会证明是非常有效的做法。不会很好地确定特定的参数,并且您不会从分析中学到很多东西。
现在,如果您没有太多有关模型的先验信息(模型结构,参数值,噪声等),那么您将需要数据来提供此信息。这通常是最常见的情况,这是有道理的,因为您通常需要一个很好的理由来收集有关您已经非常了解的内容的数据(并花费$$$$)。如果这是您的情况,则合理的限制是每个参数具有大量观察值。您有12个参数(10个斜率beta,1个截距和一个噪声参数),因此超过100个观测值的任何事物都应该能够充分确定您的参数,以便得出一些结论。
但是没有“硬性规定”。仅使用10个预测变量,您就不会在计算时间上遇到麻烦(如果这样做的话,请购买一台更好的计算机)。这主要意味着要做更多的工作,因为您要吸收11个维度的数据-使其难以可视化。仅具有1个因变量的回归基本原理并没有太大不同。
bonferroni校正的问题在于,要使其成为一种在不牺牲过多功效的情况下调整显着性水平的合理方法,您需要进行校正的假设是独立的(即,了解一个假设为真,则不会告诉您有关是否另一个假设是正确的)。例如,对于系数为零的多重回归中的标准“ t检验”,情况并非如此。检验统计量取决于模型中的其他内容-这是一种假设假设是相互依赖的回旋方式。或者,一种更常见的说法是,以第i个预测变量为零为条件的t值的采样分布取决于其他什么参数为零。因此,在这里使用bonferroni校正实际上可能会给您较低的“总体”