线性回归中的方差齐性探察

方差齐性,或者叫等方差性、同方差性,字面意思就是两组或多组的方差在统计学上相等,在方差分析或t检验中,取值相同的自变量水平有很多,因变量有充足的信息对方差进行分析。但在直线回归中,每个自变量“水平”的取值往往只有有限几个甚至只有1个,每个自变量一次抽样只能对应一个因变量,其对应的因变量观测值也只有几个甚至1个,每个“水平”的方差可能都没法计算,何来方差齐性呢?而且即使我们的样本量足够大,自变量的每一个“水平”多个取值,但由于自变量有太多的“水平”使得这种考察变得很艰难。线性回归中的等方差指因变量残差不随所有自变量取值水平的变化而变化,其检验实际上只是对因变量残差的一种探察。在自变量与残差或预测值和残差的散点图上,标准化残差随机、均匀的散布在0横线上下两侧,即不论自变量或因变量的预测值如何变化,标准化残差的波动基本保持稳定,可认为方差基本相等,但如果标准残差自变量或预测值增大出现扩散或收敛,则方差可能不齐。当然如果你觉得图示法太主观而不敢下结论,也可以改用统计学检验的方法。

示例采用[线性回归中的正态分布]一文中的示例。本例数据不多,图示法不好判断。

线性回归中的方差齐性探察

左上图为标准化预测值与标准化残差的散点图,在线性回归的SPSS操作可以直接生成,可参见[线性回归中的正态分布]

右上图为自变量与残差的散点图,STATA步骤如下,注意在模型诊断前首先要进行线性回归:

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

统计>>线性模型及相关>>回归诊断>>残差对预测值图,[主要]选项卡中自变量下拉框中选择age,确定。

相应的语句命令如下

use "D:TempsLR.dta"

regress Uc age

rvpplot age

SPSS中仅提供了线性回归等方差判断的图示法,统计学检验方法可在STATA、R等软件中实现。

STATA检验步骤:统计>>线性模型及相关>>回归诊断>>模型检定等。

默认就是异方差检验,有3检验类型(方法)可供选择,以及检验使用的变量(默认采用回归拟合值)。注意在模型诊断前首先要进行线性回归。结果提示,在0.05的检验水准上并不能拒绝“方差相等”的假设(P=0.75>0.05),即可认为方差相等。

线性回归中的方差齐性探察

estat hettest performs three versions of the Breusch-Pagan (1979) and Cook-Weisberg (1983) test for heteroskedasticity. All three versions of this test present evidence against the null hypothesis that t=0 in Var(e)=sigma^2 exp(zt). In the normal version, performed by default, the null hypothesis also includes the assumption that the regression disturbances are independent-normal draws with variance sigma^2.  The normality assumption is dropped from the null hypothesis in the iid and fstat versions, which respectively produce the score and F tests discussed in Methods and formulas in [R] regress postestimation.  If varlist is not specified, the fitted values are used for z.  If varlist or the rhs option is specified, the variables specified are used for z.

在R软件中有很多软件包可提供线性回归等方差的检验。比如程序包lmtest的bptest 函数car程序包的ncvTest函数spreadLevelPlot函数gvlma程序包的gvlma函数等。下面R命令清单提供了直线拟合及4中方差齐性检验方法。

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

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

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

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

summary(var)  #显示拟合模型的详细结果#

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

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

bptest(var)  #Breusch-Pagan检验#

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

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

ncvTest(var)  #得分检验残差是否恒定#

spreadLevelPlot(var)  #分散水平检验,创建含有最佳拟合曲线的拟合值与标准残差绝对值的散点图#

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

gvlma(var)  #线性模型假设的综合检验#

①模型拟合与SPSS结果完全一致:截距为1.66,age系数为0.14,均有统计学意义;决定系数0.78,校正决定系数0.74,加入变量age后,模型的改变有统计学意义(P=0.004)。

线性回归中的方差齐性探察

Breusch-Pagan检验结果:P=0.6536>0.05,方差是不变的(相等的),满足方差齐性。

studentized Breusch-Pagan test

data:  var

BP = 0.20142, df = 1, p-value = 0.6536

得分检验(ncvTest)结果:P=0.7500>0.05,残差不随拟合值的变化而变化,即残差保持恒定。

Non-constant Variance Score Test

Variance formula: ~ fitted.values

Chisquare = 0.1015182, Df = 1, p = 0.75002

分散水平的检验结果:如果方差恒定,图中的点将会在水平线上下随机分布,若方差不恒定则出现非水平曲线。本例数据量太少,本检验结果显示方差不恒定,与前面检验结果不一致。同时结果给出了建议幂转换为-5.0,即在回归方程中对因变量进行-5.0次幂变换,非恒定残差将会变得平稳。如果建议幂转换为0则需要进行对数变换。

Suggested power transformation:  -5.02297 

线性回归中的方差齐性探察

线性假设综合检验结果:结果给出了线性(Linearity)同方差性(Homoscedasticity)不相关(即独立,Uncorrelatedness)正态性(Normality)的综合假设检验结果(Global Validation of Linear Models Assumptions),同时给出了偏度、峰度和异方差检验结果(Package ‘gvlma’ perform a single global test to assess the linear model assumptions, as well as perform specific directional tests designed to detect skewness, kurtosis, a nonlinear link function, and heteroscedasticity)。结果给出了线性回归模型的系数(截距为1.66,age系数为0.14),数据满足线性回归所有的统计检验(P=0.938>0.05),同时单独的异方差检验结果也显示方差相等(P=0.776>0.05)。

线性回归中的方差齐性探察

如果在线性回归建模时出现了残差不齐的情况,可以对因变量进行变换后进行回归,或者采用加权最小二乘法回归,当然非参数回归也可以考虑。

发表评论

匿名网友

拖动滑块以完成验证