当拟合线性回归模型时,人们经常报告的一个数量是R平方值。这可以通过协变量/预测变量来解释结果Y中变化的比例。如果R平方接近于1(在我的工作中不常见),则意味着协变量可以共同解释结果Y的变化。这意味着可以使用协变量准确地预测Y(在某种意义上)。相反,低R平方意味着Y由协变量预测不佳。当然,效果可能具有实质性的重要性,但不一定能解释大量的变异 - 血压会影响心血管疾病的风险,但它并不足以解释结果的大量变异。 

大多数统计数据包呈现两个R平方测量值。在R中,线性模型命令给出“多重R平方”和“调整后的R平方”。有什么区别,我们应该使用哪个?我们先来看看'多重R平方'。这是通过将模型平方和除以线性预测变量的可变性的估计值除以平方总和得到的总体R平方值的估计值: 为了检查这一点,我们可以在R中模拟一个简单的数据集,如下所示:

Call:lm(formula = y ~ x)Residuals:    Min      1Q  Median      3Q     Max -1.2575 -0.7416  0.2801  0.4595  0.9286 Coefficients:            Estimate Std. Error t value Pr(>|t|)(Intercept)  0.06486    0.28430   0.228    0.825x           -0.05383    0.25122  -0.214    0.836Residual standard error: 0.8464 on 8 degrees of freedomMultiple R-squared:  0.005707,  Adjusted R-squared:  -0.1186 F-statistic: 0.04591 on 1 and 8 DF,  p-value: 0.8357> anova(mod)Analysis of Variance TableResponse: y          Df Sum Sq Mean Sq F value Pr(>F)x          1 0.0329 0.03289  0.0459 0.8357Residuals  8 5.7310 0.71637> 0.0329/(0.0329+5.7310)[1] 0.005707941 

该代码从分布中独立地模拟两个向量X和Y. 然后它适合Y的线性模型,X作为协变量。摘要中的R平方值为0.005707,表明(正确地说)X不是Y的良好预测器。然后我们使用anova命令提取模型的方差表分析,并检查'​​Multiple R -ququared'数字等于模型与总平方和的比率。

标准R平方估计的偏差

不幸的是,这个R平方的估计是有偏见的。偏差的大小取决于可用于拟合模型的观察数量以及相对于该样本大小的协变量的数量。对于小样本量和适度数量的协变量,偏差可能特别大。为了说明这种偏差,我们可以在R中进行小型模拟研究。为此,我们将重复(1000次)生成协变量X,Z1,Z2,Z3,Z4(独立)的数据。然后,我们将生成结果Y,其仅取决于X,并且以这样的方式使得真实的R平方为0.01(1%)。然后,我们将模型拟合到每个数据集,并记录R平方估计:

 n <- 20simulations <- 1000R2array <- array(0, dim=simulations)for (i in 1:simulations) { z <- array(rnorm(n*4), dim=c(n,4)) mod <- lm(y~x+z)R2array[i] <- summary(mod)$r.squared}t.test(R2array)

运行此代码,我得到R2array的平均值为0.266,95%CI从0.257到0.274。这与真实的R平方值0.1相比。由于相对于观察的大量预测因子,这里简单的R平方估计量是严重偏差的。

为什么标准的R平方估计量不能无偏见

为什么R平方的标准估计(估计量)有偏差?一种看待为什么不能无偏见的方法是,根据其定义,估计值总是介于0和1之间。从一个角度来看,这是一个非常吸引人的特性 - 因为真实的R平方位于0和1之间,估计值在外面这个范围不会很好(这可能发生在调整后的R平方)。然而,假设真实的R平方为0 - 即协变量完全独立于结果Y.在重复样本中,R平方估计值将高于0,因此它们的平均值将高于0.因为偏差是两者之间的差异。重复样本中的估计值的平均值和真值(这里为0),简单的R平方估计量必须是正偏差的。

顺便提一下,我们使用的很多估算器都不是不偏不倚的(后面的帖子中更多的是这个),所以缺乏无偏见并不是它自己关注的问题。问题在于,对于某些设计,偏差可能很大,其中协变量的数量相对于用于拟合模型的观察数量较大。

 

©著作权归作者所有:来自51CTO博客作者拓端小助手的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 指针
  2. C++基础学习---->变量与运算操作
  3. 每日一学——4
  4. 2.2 Variable变量
  5. 变量的类型转换方式 变量值传递与值引用的区别 变量的作用域 p
  6. PHP入门之 变量与常量
  7. 1. 变量的类型转换方式 2. 变量值传递与值引用的区别 2. 变量的
  8. 210426 PHP 输出方法,数据类型,变量,作用域,常量
  9. 如何在定义局部变量时赋初始值

随机推荐

  1. 移动互联
  2. Android(安卓)3.0 r1中文API文档(103) —
  3. Android中通过浏览器打开一个网页
  4. 把android平板USB上输出LOG方法
  5. android和js之间的简单交互
  6. android统计图绘制
  7. Android(安卓)listview下拉刷新 上拉加载
  8. Android按键消息传播流程
  9. Android触控
  10. Android 发送短信 源代码