线性回归中的正态分布

统计方法一般都有其适用的条件,或者说是必须满足的统计假设。使用线性回归需要满足线性、独立性、正态性、方差齐性、自变量间不存在多重共线、因变量为连续变量。不考虑前提条件地生搬硬套,也不对模型进行诊断,只能是“Garbage in,garbage out”。今天谈谈线性回归的正态性检验的方法论。

首先要弄清楚线性回归模型中正态分布的概念。有人在进行线性回归模型的正态性检验时,直接将对因变量进行检验,这实际上是对线性回归正态性检验的误解。线性回归模型的正态性指的是模型的残差服从均值为0方差为σ^2(标准化残差服从均数为0,方差为1)的正态分布
当自变量为分类变量、因变量为连续变量时,也是可以采用线性回归的。只是在更多的时候,这种类型的分析我们更关注的是组间差异比较而不是线性回归预测,通常采用方差分析或者t检验,尤其是自变量只有1个对的时候。模型假定不同的组来自同一个总体中的抽样,各组(严格说应该是各个单元格)的残差服从同一个正态分布,不同组的残差均服从同一个均数为0标准差为σ2的正态分布。在实际考察的时候我们往往直接考察 固定的自变量值(不同的组)对应的因变量值是否呈正态分布。比如4个随机分组的方差分析,想要考察的分组变量即为自变量,该自变量有4个水平,可以被赋值为1、2、3、4,此时的分类自变量每个水平都有多个相同的取值,可以分别考察自变量等于1、2、3、4时对应的因变量是否满足正态分布,只有1个因素考察因变量残差与直接考察因变量是一致的。当然我们也可以采用了线性回归进行分析,为了消除赋值带来的误差,多分类的自变量在线性回归模型中需要设置成哑变量,结果同方差分析是一致的。

线性回归中的正态分布

今天我们重点讨论的是第二种情况:当自变量为连续变量时。此时自变量每个“水平”的取值往往只有有限几个甚至只有1个,其对应的因变量观测值也只有几个甚至1个,毕竟每个自变量一次抽样只能对应一个因变量值,很显然这么小的样本量没法直接像自变量为分类变量那样考察每个“水平”的因变量值是否正态。而且连续性变量取值往往较多,即使我们的样本量足够大,自变量的每一个固定值有多个取值,这种考察正态性的工作量也会变的很大。这种情况下,对正态性的考察回归到对所有残差的考察反而更简便。

线性回归中的正态分布

示例:某地方病研究所调查了8名正常儿童的尿肌酐含量(mmol/24h)如表,估计尿肌酐含量(Y)对其年龄(X)的回归方程。

线性回归中的正态分布

这是一个简单线性回归,回归方程并不难求:

Analyze>>Regression>>Linear……

Dependent(因变量):选入Uc;

Independent(自变量):选入age;变量筛选方法(Method)选择ENTER;

Statistics…:除默认的回归系数估计、模型拟合检验外,选中R2改变量;

Plots…:Y选入*ZRESID(标准化残差),X选入*ZPRED(标准化预测值),选中Histogram(标准化残差的直方图)、Normal probability plot(标准化残差的正态概率图)复选框;

Save…:非标准化预测值、标准化预测值、非标准化残差、标准化残差。

主要结果:

模型概要:纳入年龄变量,对模型的改变是有统计学意义的(P=0.004);相关系数R为0.882表明年龄与尿肌酐的回归关系较为密切;决定系数R2为0.778,表明年龄可以解释的变异占总变异的77.8%,即年龄可解释因变量77.8%的变异;校正的决定系数R2主要用于多重线性回归时不同数量的自变量模型间的拟合效果比较,简单线性回归中无实际意义。

线性回归中的正态分布

回归模型方差分析检验:F=20.968,P=0.004<0.05,表明纳入自变量的回归系数不全为0,回归模型有统计学意义。由于本例是只有一个自变量的简单线性回归,其等价于年龄的回归系数具有统计学意义。

线性回归中的正态分布

回归系数:Uc=0.139*age+1.662,年龄每增加1岁,尿肌酐含量平均升高0.139mmol/24h。常数项和年龄的系数的t检验表明两者均有统计学意义(两者都不为0)。注意年龄系数检验统计量t=4.579恰好为模型方差检验统计量F的平方根。

线性回归中的正态分布

正态性考察:注意是对残差的考察,不是因变量,尤其是在多重线性回归当中尤为注意。残差可在线性回归对话框的[保存Save…]按钮直接生成。

【1】图示法:如直方图、Q-Q图、P-P图等。直方图和Q-Q图在上述的线性回归操作中会自动生成,P-P图、Q-Q图也可在菜单生成(分析>>描述性统计量>>P-P图分析>>描述性统计量>>Q-Q图)。从直方图和P-P上看,残差基本满足正态分布。

线性回归中的正态分布

图示法带有较强的主观性,对于界限的问题不同的人有不同的标准,比如Q-Q图,到底数据点离开直线多远就不算正态了?可在Q-Q图上加上95%置信区间,如果数据点均集中在直线附近,也没有超出95%置信区间线,这说明数据呈正态。SPSS可在结果上双击进入图片编辑器手动添加95%置信区间,R和JMP的运行结果如下,结果显示数据呈正态。

线性回归中的正态分布

线性回归中的正态分布

线性回归中的正态分布

附R命令语句清单

setwd("D:/Temp")  #设置工作目录#

library(foreign)  #加载foreign程序包#

normvar<- read.dta("sLR.dta")  #从STATA中导入数据#

norm<-lm(Uc~age,data=normvar)  #以age拟合Uc的直线回归#

library(car)  #加载car程序包#

library(carData)  #加载carData程序包#

qqPlot(norm)  #Q-Q图#

JMP 操作步骤:

分析>>以X拟合Y;

l Y,响应:Uc,X,因子:age,确定;

l 二元拟合,以“age”拟合“Uc”前倒三角菜单>>拟合线;

l 线性拟合前倒三角菜单>>保存残差,保存预测值,标绘残差;

分析>>分布;Y,列:“Uc”残差;确定;

l “Uc”残差前倒三角菜单>>正态分位数图;

l “Uc”残差前倒三角菜单>>连续拟合>>正态。

预测值和残差的散点图也可以大体判断数据是否呈正态。如果数据呈正态分布,散点图中的点应该是随机散布在残差为0的直线上下。本例数据不多,该法不好判断。

线性回归中的正态分布

左上图按上述SPSS操作可以直接生成;

右上图STATA步骤:

统计>>线性模型及相关>>线性回归:[模型]选项卡中因变量选择Uc,自变量选择age,确定;

统计>>线性模型及相关>>回归诊断>>残差对拟合值图,[主要]选项卡中直接点击的确定。

相应的STATA语句命令

use "D:TempsLR.dta"

regress Uc age

rvfplot

【2】当然除了图示法,我们也可以直接利用统计学检验的方法,如Explore过程对保存的残差进行统计学检验(分析(Analyze)>>描述统计量(Descriptive Statistics)>>探索(Explore)),结果如下:两种检测方法均显示残差呈正态分布。同时我们也发现残差和因变量的检验结果是不同的,正如一开始讲的,对线性回归的正态性不正确理解可能会导致不一致的结果甚至错误的结论。

线性回归中的正态分布

如果你不幸碰到了严重偏态的数据,数据变换是常用的一种方法,比如可以采用Box-Cox变换,这个我们在以前谈过。数据如果有异常点,也会导致数据非正态,此时可以考虑稳健回归。另外分位数回归、非参数回归也是可以考虑的选择。

发表评论

匿名网友

拖动滑块以完成验证