@Rstat
2016-10-27T09:09:13.000000Z
字数 31815
阅读 19016
多元统计分析及R语言建模
【基本要求】由于回归分析在统计学实际发展中的重要地位,以及学生在前期统计学课程中对(一元)相关与回归分析和相关统计内容的初步了解,在学生已具有的(一元)相关与回归分析的基础知识上,掌握和应用多元线性相关与回归分析。
【基本内容】变量间的关系分析,简单相关与回归分析。多元相关回归分析的目的和基本思想,多元回归分析的数学模型、基本假定和最小二乘求法,回归系数的假设检验,变量选择及逐步回归分析方法以及非线性回归模型的计算。
变量间的关系:一类是变量间存在着完全确定性的关系,这类变量间的关系称为函数关系;另一类是变量间关系不存在完全的确定性关系,不能用精确的数学公式来表示,这些变量间都存在着十分密切的关系,但不能由一个或几个变量的值精确地求出另一个变量的值。这些变量间的关系称为相关关系,把存在相关关系的变量称为相关变量。
相关变量间的关系:一种是平行关系,即两个或两个以上变量之间相互影响。另一种是依存关系,即一个变量的变化受另一个或几个变量的影响;相关分析是研究呈平行关系的相关变量之间的关系,而回归分析是研究呈依存关系的相关变量间的关系。表示原因的变量称为自变量,表示结果的变量称为因变量。
变量间的关系及分析方法:
相关分析就是要通过对大量数字资料的观察,消除偶然因素的影响,探求现象之间相关关系的密切程度和表现形式。研究现象之间相关关系的理论方法就称为相关分析法。
在经济系统中,各个经济变量常常存在密切的关系。例如,经济增长与财政收入,人均收入与消费支出等。在这些关系中,有一些是严格的函数关系,这类关系可以用数学表达式表示出来。例如,在价格一定的条件下,商品销售额与销售量的依存关系;还有一些是非确定的关系,一个变量产生变动会影响其他变量,使其产生变化。其变化具有随机的特性,但是仍然遵循一定的规律。对于函数关系可以很容易地解决,而对那些非确定的相关关系,才是我们所关心的问题。因为在经济系统中,绝大多数经济变量之间的关系是非严格的、不确定的。
相关分析以现象之间是否相关、相关的方向和密切程度等为主要研究内容,它不区别自变量与因变量,对各变量的构成形式也不关心。其主要分析方法有绘制相关图、计算相关系数和检验相关系数。
在所有相关分析中,最简单的是两个变量之间的线性相关,它只涉及两个变量。而且一变量数值发生变动,另一变量的数值随之发生大致均等的变动,从平面图上观察其各点的分布近似地表现为一直线,这种相关关系就为直线相关(也叫线性关系)。
线性相关分析是用相关系数来表示两个变量间相互的线性关系,并判断其密切程度的统计方法。总体相关系数通常用表示。其计算公式为:
x1=c(171,175,159,155,152,158,154,164,168,166,159,164) #身高
x2=c(57,64,41,38,35,44,41,51,57,49,47,46) #体重
plot(x1,x2) #做散点图lxy<-function(x,y){n=length(x);sum(x*y)-sum(x)*sum(y)/n} #建立离均差乘积和函数
lxy(x1,x1) #x1的离均差平方和
556.9
lxy(x2,x2) #x1的离均差平方和
813
lxy(x1,x2) #x1的离均差乘积和
645.5
(r=lxy(x1,x2)/sqrt(lxy(x1,x1)*lxy(x2,x2))) #显示用离均差乘积和计算的相关系数
0.9593
这里为正值,说明该组人群的身高与体重之间呈现正的线性相关关系。至于相关系数是否显著,尚需进行假设检验。下面是R语言中自带的求相关系数的函数,
相关系数计算函数cor()的用法 |
---|
cor(x, y = NULL, method = c("pearson", "kendall", "spearman")) |
x 数值向量、矩阵或数据框,y 空或数值向量、矩阵或数据框 |
method 计算方法,包括"pearson", "kendall"或"spearman"三种,默认pearson |
cor(x1,x2) #计算相关系数
0.9593
与其它统计指标一样,也有抽样误差。从同一总体内抽取若干大小相同的样本,各样本的相关系数总有波动。要判断不等于0的值是来自总体相关系数的总体还是来自的总体,必须进行显著性检验。
由于来自的总体的所有样本相关系数呈对称分布,故的显著性可用检验来进行。对例4.1资料,对进行检验的步骤为:
(1) 建立检验假设:
(2) 计算相关系数的t值:
n=length(x1) #向量的长度
tr=r/sqrt((1-r^2)/(n-2)) #相关系数假设检验t统计量
tr
10.74
(3) 计算值和值,作结论。
相关系数检验函数cor.test()的用法 |
---|
cor.test(x, y,alternative = c("two.sided", "less", "greater"), method = c("pearson", "kendall", "spearman"), ...) |
x, y:数据向量(长度相同) |
alternative:备择假设,"two.sided"(双侧),"greater"(右侧)或"less"(左侧) |
method:计算方法,包括"pearson", "kendall"或"spearman"三种 |
cor.test(x1,x2) #相关系数假设检验
Pearsons product-moment correlation
data: x and y
t = 10.74, df = 10, p-value = 8.21e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.8575 0.9888
sample estimates:
cor
0.9593
由于,于是在水准上拒绝,接受的,可认为该人群身高与体重呈现正的线性关系。
注意:相关系数的显著性与自由度有关,如值时,虽然,却为不显著;若时,即使,亦为显著。因此不能只看的值就下结论,还需看其样本量大小。
回归分析研究两变量之间的依存关系,变量区分出自变量和因变量,并研究确定自变量和因变量之间的具体关系的方程形式。分析中所形成的这种关系式称为回归模型,其中以一条直线方程表明两变量依存关系的模型叫单变量(一元)线性回归模型。其主要步骤包括:建立回归模型、求解回归模型中的参数、对回归模型进行检验等。
在因变量和自变量所作的散点图中如果趋势大致呈直线型,则可拟合一条直线方程。
总体直线方程模型:
直线方程的模型为:
式中,表示因变量的估计值,为自变量的实际值,为待估参数,其几何意义是:是直线方程的截距,是斜率。其经济意义是:是当为零时的估计值,是当每增加一个单位时,增加的数量,也叫回归系数。
配合回归直线的目的是要求找到一条理想的直线,用直线上的点来代表所有的相关点。数理统计证明,用最小平方法配合的直线最理想,最具有代表性。计算与常用最小二乘估计的方法。
由散点图可见,虽然与间有直线趋势存在,但并不是一一对应的。每一个值与对用回归方程估计的值(即直线上的点)或多或少存在一定的差距。这些差距可以用来表示,称为估计误差或残差。要使回归方程比较“理想”,很自然会想到应该使这些估计误差尽量小一些。也就是使估计误差平方和
由散点图观察实测样本资料是否存在一定的协同变化趋势,这种趋势是否是直线的。根据是否有直线趋势确定应拟合直线还是曲线。由本例资料绘制的散点图可见,身高与体重之间存在明显的线性趋势,所以可考虑建立直线回归方程。
要考察与之间的数量关系,需建立线性回归方程,以便进行分析、估计和预测,步骤如下:
【例4.2】下面仍以一个例2.2的数据来介绍建立直线回归的步骤:
x=x1 #自变量,数据来自例2.2
y=x2 #因变量,数据来自例2.2
b=lxy(x,y)/lxy(x,x) #线性回归方程斜率
a=mean(y)-b*mean(x) #线性回归方程截距
c(a=a,b=b) #显示线性回归方程估计值
a b
-140.364 1.159
于是得回归方程:
建立回归方程后,一般应将回归方程在散点图上表示出来,也就是作回归直线。作图时可在自变量的实测范围内任取两个相距相对较远的数值、代入回归方程,计算得到、,用、两点即可作回归直线。
plot(x,y) #做散点图
lines(x,a+b*x) #添加估计方程线
由样本资料建立回归方程的目的是对两变量的回归关系进行推断,也就是对总体回归方程作估计。由于抽样误差,样本回归系数往往不会恰好等于总体回归系数。如果总体回归系数,那么是常数,无论如何变化,不会影响,回归方程就没有意义。当总体回归系数时,由样本资料计算得到的样本回归系数不一定为0,所以有必要对估计得到的样本回归系数进行检验。检验一般常用方差分析或检验,两者的检验结果是等价的。方差分析主要是针对整个模型的,而检验是关于回归系数的。
经回归分析,因变量实测值的离均差平方和,被分解成两个部分。第一部分,其本质是估计误差的平方和,这部分反映了这组实测值扣除了对的线性影响后剩下的变异。另一部分反映了对的线性影响,称为回归平方和或回归贡献,不难证明: 。
根据方差分析的原理,对回归贡献是否有意义可以用方差分析进行检验。这时总变异的自由度为:;由于只有一个自变量,所以回归自由度df_R=1;误差自由度.有了离差平方和与自由度,即可分别计算回归均方与误差均方,进而得到值。计算公式如下:
SST=lxy(y,y) #因变量的离均差平方和
SSR=b*lxy(x,y) #回归平方和
SSE=SST-SSR #误差平方和
MSR=SSR/1 #回归均方
MSE=SSE/(n-2) #误差均方
F= MSR/MSE #F统计量
c(SST=SST,SSR=SSR,SSE=SSE,MSR=MSR,MSE=MSE,F=F) #显示结果
SST SSR SSE MSR MSE F
813.000 748.173 64.827 748.173 6.483 115.412
当成立时,样本回归系数服从正态分布。所以也可用检验的方法检验是否有统计学意义。检验时用的统计量:
sy.x=sqrt(MSE) #估计标准差
sb=sy.x/sqrt(lxy(x,x)) #离均差平方和
t=b/sb #t统计量
ta=qt(1-0.05/2,n-2) #t分位数
c(sy.x=sy.x,sb=sb,t=t,ta=ta) #显示结果
sy.x sb t ta
2.5461 0.1079 10.7430 2.2281
上面我们通过语言编程的方式对两变量进行了回归分析,为的是使大家熟悉语言的编程技巧。实际上,在进行线性回归分析时,可直接应用语言自身的拟合线性模型的函数进行,下面我们就用函数进行线性回归分析。
线性回归拟合函数lm()的用法 |
---|
lm(formula, ...) |
formula模型公式,如y~x,…其他选项,略 |
【例4.3】我们知道,财政收入与税收有密切的依存关系。今收集了我国1978年改革开放以来到2008年共31年的税收(,百亿元)和财政收入(y,百亿元)数据,见下表4.1所示,以分析税收与财政收入之间的依存关系。
表4.1 1978-2008年税收与财政收入数据(数据见mvstats.xls:d4.3)
y | x | y | x | ||
---|---|---|---|---|---|
1978 | 11.3262 | 5.1928 | 1994 | 52.1810 | 51.2688 |
1979 | 11.4638 | 5.3782 | 1995 | 62.4220 | 60.3804 |
1980 | 11.5993 | 5.7170 | 1996 | 74.0799 | 69.0982 |
1981 | 11.7579 | 6.2989 | 1997 | 86.5114 | 82.3404 |
1982 | 12.1233 | 7.0002 | 1998 | 98.7595 | 92.6280 |
1983 | 18.6695 | 7.5559 | 1999 | 114.4408 | 106.8258 |
1984 | 16.4286 | 9.4735 | 2000 | 133.9523 | 125.8151 |
1985 | 20.0482 | 20.4079 | 2001 | 163.8604 | 153.0138 |
1986 | 21.2201 | 20.9073 | 2002 | 189.0364 | 176.3645 |
1987 | 21.9935 | 21.4036 | 2003 | 217.1525 | 200.1731 |
1988 | 23.5724 | 23.9047 | 2004 | 263.9647 | 241.6568 |
1989 | 26.6490 | 27.2740 | 2005 | 316.4929 | 287.7854 |
1990 | 29.3710 | 28.2187 | 2006 | 387.602 | 348.0435 |
1991 | 31.4948 | 29.9017 | 2007 | 513.2178 | 456.2197 |
1992 | 34.8337 | 32.9691 | 2008 | 613.3035 | 542.1962 |
1993 | 43.4895 | 42.5530 |
要考察它们之间的数量关系,需建立线性回归方程,以便进行分析、估计和预测,步骤如下:
1.读入数据
yx=read.table("clipboard",header=T) #加载例4.3数据
2.拟合模型
fm=lm(y~x,data=yx) #一元线性回归模型
fm
Call:lm(formula = y ~ x)
Coefficients:
(Intercept) x
-1.197 1.116
于是得回归方程:
3.作回归直线
plot(y~x,data=yx) #做散点图
abline(fm) #添加回归线
4.回归方程的假设检验
(1)模型的方差分析(ANOVA)
anova(fm) #模型方差分析
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x 1 712076.834 712076.834 27428.1326 < 2.22e-16 ***
Residuals 29 752.885 25.962
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
由于,于是在水平处拒绝,即本例回归系数有统计学意义,与间存在直线回归关系。
(2)回归系数的t检验
summary(fm) #回归系数t检验
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-6.6295697 -3.6919399 -1.5350531 5.3382063 11.4319756
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.196562984 1.161245228 -1.03041 0.31133
x 1.116225390 0.006739905 165.61441 < 2e-16 ***
---
Signif. codes: 0‘***’0.001‘**’0.01 ‘*’0.05 ‘.’0.1‘ ’1
Residual standard error: 5.0952478 on 29 degrees of freedom
Multiple R-squared: 0.99894381, Adjusted R-squared: 0.99890739
F-statistic: 27428.133 on 1 and 29 DF, p-value: < 2.22045e-16
由于,于是在水平处拒绝,接受,认为回归系数有统计学意义,与间存在回归关系。
注意:本例.当时,值的平方等于值(即为的自由度)。所以说当自变量只有1个时,方差分析与检验的结果是等价的。但在下面的多元分析中,方差分析与检验的结果并不等价。
回归分析研究的主要对象是客观事物变量间的统计关系。它是建立在对客观事物进行大量实验和观察的基础上,用来寻找隐藏在看起来不确定的现象中的统计规律的统计方法。它与相关分析的主要区别为:一是在回归分析中,解释变量称为自变量,被解释变量称为因变量,处于被解释的特殊地位;而在相关分析中,并不区分自变量和因变量,各变量处于平等地位。二是相关分析中所涉及的变量全是随机变量;而回归分析中,只有因变量是随机变量,自变量可以是随机变量,也可以是非随机变量。三是相关分析研究主要是为刻画两类变量间的线性相关的密切程度;而回归分析不仅可以揭示自变量对因变量的影响大小,还可以由回归方程进行预测和控制。
上一节已经介绍了一元线性回归分析。研究的是一个因变量与一个自变量间呈直线趋势的数量关系。在实际中,常会遇到一个因变量与多个自变量数量关系的问题。如在例4.1中考察的是1978-2008年全国财政收入与税收之间线性关系,如果我们进一步想考察财政收入和国民生产总值、税收、进出口贸易总额、经济活动人口之间的依存关系。这时需要建立多元回归模型。与一元线性回归(直线回归)类似,一个因变量与多个自变量间的这种线性数量关系可以用多元线性回归方程来表示。
随机变量与一般变量的线性回归模型为:
由于一元线性回归比较简单,其趋势图可用散点图直观显示,所以,我们对其性质和假定并未作详细探讨。实际上,我们在建立线性回归模型前,需要对模型作一些假定,经典线性回归模型的基本假设前提为:
①解释变量一般说来是非随机变量。
②误差等方差及不相关假定(G-M条件):
③误差正态分布的假定条件为:
~
④即要求样本容量个数多于解释变量的个数。
从多元线性模型的矩阵形式可知,若模型的参数的估计量已获得,则,于是残差,根据最小二乘的原理,所选择的估计方法应是估计值与观察值之间的残差在所有样本点上达到最小,即使
y | x1 | x2 | x3 | x4 |
---|---|---|---|---|
1978 | 11.3262 | 36.241 | 5.1928 | 3.550 |
1979 | 11.4638 | 40.382 | 5.3782 | 4.120 |
1980 | 11.5993 | 45.178 | 5.7170 | 5.700 |
… | … | … | … | … |
2007 | 513.2178 | 2495.299 | 456.2197 | 1667.402 |
2008 | 613.3035 | 3006.7 | 542.1962 | 1778.8983 |
yX=read.table("clipboard",header=T) #加载例4.4数据
(fm=lm(y~x1+x2+x3+x4,data=yX)) #显示多元线性回归模型
lm(formula = y ~ x1 + x2 + x3 + x4)
Coefficients:
(Intercept) x1 x2 x3 x4
23.532109 -0.003387 1.164115 0.000292 -0.043742
于是得到多元线性回归方程:
由于自变量与因变量都是有单位的。从数值上来看,它们样本取值的极差会有很大的差异,均数与标准差也各不相同。所以不能由偏回归系数的大小直接说明对因变量线性影响的大小。对于这个问题常用变量标准化与计算标准化偏回归系数的方法来处理。
对每一个变量(包括因变量)标准化后,再计算方程的偏回归系数,可得到标准化偏回归系数,常用表示:
library(mvstats)
coef.sd(fm) #标准化偏回归系数结果
$coef.sd
x1 x2 x3 x4
-0.017451 1.042352 0.000963 -0.037105
由样本计算得到的这些偏回归系数是总体偏回归系数的估计值。如果这些总体偏回归系数等于0,多元回归方程就没有意义。所以与直线回归一样,在建立起方程后有必要对这些偏回归系数作检验。对多元回归方程作假设检验也可以用方差分析。
因变量的离均差平方和经回归分析被分解成两个部分。
多元回归方程有统计学意义并不说明每一个偏回归系数都有意义。所以有必要对每个偏回归系数作检验。在时,偏回归系数服从正态分布,所以可用统计量对偏回归系数作检验。
检验假设。
当成立时,而~,记。
则我们构造的统计量为:
式中是第个偏回归系数的标准误差。其计算比较复杂,
summary(fm) #多元线性回归系数t检验
Call:
lm(formula = y ~ x1 + x2 + x3 + x4)
Residuals:
Min 1Q Median 3Q Max
-5.02 -2.14 0.33 1.26 6.97
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.532109 4.599071 5.12 2.5e-05 ***
x1 -0.003387 0.008075 -0.42 0.68
x2 1.164115 0.040489 28.75 < 2e-16 ***
x3 0.000292 0.008553 0.03 0.97
x4 -0.043742 0.009264 -4.72 7.0e-05 ***
---
Signif. codes: 0‘***’ 0.001‘**’ 0.01‘*’ 0.05‘.’ 0.1‘ ’ 1
Residual standard error: 2.79 on 26 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 2.29e+04 on 4 and 26 DF, p-value: <2e-16
由方差分析结果可见,模型的值为22893,,认为回归模型有意义的。
表4.3参数估计及检验
变量 | 回归系数 | 标准误 | t值 | P值 | 标准回归系数 |
---|---|---|---|---|---|
x0 | 23.5321 | 4.599 | 5.12 | 2.5e-05 | …… |
x1 | -0.003387 | 0.0081 | -0.42 | 0.68 | -0.01745 |
x2 | 1.16411 | 0.0405 | 28.75 | <2-e-16 | 1.04235 |
x3 | 0.000292 | 0.0085 | 0.03 | 0.95 | 0.00096 |
x4 | -0.04374 | 0.0092 | -4.72 | 7.0e-05 | -0.03710 |
由t检验结果可见,偏回归系数、的值都小于0.01,可认为解释变量税收、经济活动人口显著;、的P值大于0.50,不能否定的假设,可认为国内生产总值、进出口贸易总额对财政收入没有显著的影响。我们可以看到,国内生产总值、经济活动人口所对应的偏回归系数都为负,这与经济现实是不相符的。出现这种结果的可能原因在于,这些解释变量之间存在高度的共线性。
在相关分析中,研究较多的是两个变量之间的关系,称为简单相关;当涉及到的变量为三个或者三个以上时,称为偏相关或复相关。实际上,偏相关和复相关是对简单相关的一种推广。
在一些情况下,我们只想了解两变量之间有无线性相关关系,并不需要建立它们之间的回归模型,也不需要区分自变量和因变量,这时,就可用较为方便的相关分析方法。
设,来自正态总体容量为的样本,样本资料阵为:
cor(yX) #多元数据相关系数矩阵
y x1 x2 x3 x4
y 1.0000 0.9871 0.9995 0.9912 0.6957
x1 0.9871 1.0000 0.9907 0.9868 0.7818
x2 0.9995 0.9907 1.0000 0.9917 0.7154
x3 0.9912 0.9868 0.9917 1.0000 0.7074
x4 0.6957 0.7818 0.7154 0.7074 1.0000
再给出变量两两间的矩阵散点图,见下图。
矩阵散点图函数pairs()的用法 |
---|
pairs(x, ...) |
x 数值矩阵或数据框 |
pairs(yX) #多元数据散点图
由于没有现成的进行相关系数矩阵的假设检验,下面编写计算相关系数的值和值的函数corr.test()。
相关矩阵检验函数corr.test()的用法 |
---|
corr.test(X, ...) |
X数值矩阵或数据框 |
library(mvstats)
corr.test(yX) #多元数据相关系数检验
y x1 x2 x3 x4
y 0.000 0.000 0.000 0.000 0
x1 33.267 0.000 0.000 0.000 0
x2 165.614 39.214 0.000 0.000 0
x3 40.336 32.772 41.560 0.000 0
x4 5.215 6.752 5.514 5.389 0
左下角为t值,右上角为p值
表4.8相关系数的假设检验统计量
y | x1 | x2 | x3 | x4 |
---|---|---|---|---|
y | 0.0000 | 0.0000 | 0.0000 | |
x1 | 33.267 | 0.0000 | 0.0000 | |
x2 | 165.614 | 39.214 | 0.0000 | |
x3 | 40.336 | 32.772 | 41.560 | |
x4 | 5.215 | 6.752 | 5.514 | 5.389 |
注:下三角为相关系数值,上三角为概率值
从结果可以看出,财政收入和国民生产总值及税收、进出口贸易总额、经济活动人口之间的关系都非常密切,财政收入与税收之间的关系最为密切。
以上都是在把其它变量的影响完全排除在外的情况下研究两个变量之间的相关关系。但是在实际分析中,一个变量的变化往往要受到多种变量的综合影响,这时就需要采用复相关分析方法。所谓复相关,就是研究多个变量同时与某个变量之间的相关关系,度量复相关程度的指标是复相关系数。
设因变量为,自变量为,假定回归模型为
在类似多元回归分析这类问题中,研究者常希望知道因变量与一组自变量间的相关程度,即复相关。如例4.4的资料,研究者希望分析财政收入与国民生产总值和税收等指标间的相关程度。为此可计算复相关系数,
(R2=summary(fm)$r.sq) #显示多元线性回归模型决定系数
0.9997
(R=sqrt(R2)) #显示多元数据复相关系数
0.9999
多元回归分析在实际中有广泛的应用, 由上章分析知,其主要用途有: ①用于描述解释现象, 这时希望回归方程中所包含的自变量尽可能少一些; ②用于预测, 这时希望预测的均方误差较小; ③用于控制,这时希望各回归系数具有较小的方差和均方误差。在实际问题中可以提出许多对应变量有影响的自变量, 变量选择太少或不恰当, 会使建立的模型与实际有较大的偏离; 而变量选得太多, 使用不便, 并且有时也会削弱估计和预测的稳定性, 所以变量选择问题是一个十分重要的问题。也就是说,在多元回归分析中,并不是变量越多越好,变量太多,容易引起以下几个问题:(1)变量多增加了模型的复杂度;(2)计算量增大;(3) 估计和预测的精度下降;(4)模型应用费用增加。
为解决以上问题, 人们提出了许多变量选择的准则,如全部子集法、向后删除法、向前引入法、逐步回归法等方法, 下面分别简单介绍这些方法。
从理论上说,自变量选择最好的方法是所有可能回归法,即建立因变量和所有自变量全部子集组合的回归模型,也称全部子集法。
对于含有个自变量的回归模型来说,含有0个自变量(仅有常数项)的子集有个,含有1个自变量的子集有个,含有2个自变量的子集有个,…,含有p个自变量的子集有个,共有个模型。
求出所有可能的回归模型(共有个)对应的准则值,按一定准则选择最优模型。
对于每个模型,在实用上,从数据与模型拟合优劣的直观考虑出发,基于残差(误差)平方和(Residual Sum of Squares,即方差分析表中SSE)的变量选择准则使用的最多。误差平方和愈小,回归方程的拟合越理想。而且,复相关系数的平方(决定系数),对一个确定的问题,确定,基于残差(误差)平方和的变量选择准则与基于决定系数的变量选择准则意义是等价的,决定系数越大,回归方程的拟合越理想。
下面以残差平方和和复相关系数的平方为准则介绍变量选择的过程:
【例4.6】(续例4.4),在“财政收入”数据中,有4个自变量:。
所有可能的模型可分为5组子集:
子集
子集
子集
子集
子集
=>总共有
总共有个模型。
对每组子集,挑出最小的和最大的变量,得下列模型:
表4.9例4.4数据的RSS与R2准则回归子集
子集 | Models | RSS | R2 |
---|---|---|---|
子集B | 752.88 | 0.99894 | |
子集C | 203.88 | 0.99971 | |
子集 D | 202.35 | 0.99972 | |
子集 E | 202.34 | 0.99972 |
注意:在本书中残差平方和用SSE表示,等同于R中RSS。
library(leaps) #加载leaps包
varsel=regsubsets(y~x1+x2+x3+x4,data=yX) #多元数据线性回归变量选择模型
result=summary(varsel) #变量选择方法结果
data.frame(resultrss,R2=result$rsq) #RSS和决定系数准则结果展示
x1 x2 x3 x4 RSS R2
1 ( 1 ) * 752.88 0.99894
2 ( 1 ) * * 203.88 0.99971
3 ( 1 ) * * * 202.35 0.99972
4 ( 1 ) * * * * 202.34 0.99972
具有较大的对较少自变量的模型应该是好的选择,较大的意味着有好的拟合效果,而较少的变量个数可减轻信息的收集和控制。
对于有个自变量的回归模型来说,当自变量子集在扩大时,残差平方和随之减少(可以证明,进而),因此,如果按“愈小愈好”和按“愈大愈好”的原则来选择自变量子集,则毫无疑问应该选全部自变量,所以说,在实际中,“RSS愈小愈好”和“愈大愈好”不能作为一个选择自变量的法则。
另外,在上述准则的选择中,本案例的如下两个模型
和就很难选取。
这主要是因为和高度相关,其相关系数0.9868。因而它们的一样就不奇怪了。
由于在实际的变量选择问题中,我们的主要目的就是设法防止选取过多的自变量,而基于直观考虑的残差平方和准则和复相关系数平方准则最终都将选取所有自变量,所以常用的做法是在残差平方和RSS上添加对变量的惩罚因子。
这里为所选模型的变量个数(每个模型皆包括常数项),因随着自变量个数的增加而增加,它体现了变量个数增加对增加的惩罚。于是有平均残差平方和最小准则:按“愈小愈好”选取自变量。
实际上就是模型的剩余标准差,它越小,说明模型拟合的越好,当然,选模型中最小的所对应的模型就是最好的模型,所得结论同等价。
由于对一个具体问题,不变,所有这个准则也就等价于准则。越大,说明模型拟合的越好。
近年来,一个得到广泛重视的变量选择准则是基于1964年C.Mallows提出的统计量,统计量是从预测的角度出发,基于残差平方和的一个准则。
这里即criterion,为所选模型中变量的个数;接近p模型为最优。其中为全模型的均方误差。
Cp法则为:选择对应点的(p,Cp)最接近第一象限角平分线,且最小的模型。
Akaike Information Criterion)和BIC (Bayesian Information Criterion)是多元回归中选择模型的两条重要准则。在多元回归分析中,为了防止过度拟合等问题(既要使模型的解释性强,又要有一点的张力),Akaike (1978)和Schwarz(1978)分别提出了AIC 和BIC 作为回归模型选择的标准。在回归模型中,这两个值都是越小越好。它不仅可用于回归变量选择中,还可用于时间序列分析的自回归模型的定阶上。
回归分析中选择变量的AIC准则为:
AIC和BIC选择变量的准则是:按“AIC或BIC愈小愈好”选取自变量。
对每组子集,挑出和BIC最小的变量,得下列模型:
表4.10例4.4数据的Cp与BIC准则回归子集
子集 | Models | Cp | BIC | |
---|---|---|---|---|
子集B | 0.9989 | 69.745 | -205.6 | |
子集C | 0.9997 | 1.199 | -242.6 | |
子集 D | 0.9997 | 3.001 | -239.4 | |
子集 E | 0.9997 | 5.000 | -236.0 |
对例4.4,上面给出了所选模型的值,的最小值对应的变量子集为(x_0,x_2,x_4),对应的(1+2,1.199)=(3,1.199)最接近第一象限角平分线。另外一些较小的统计量分别对应于(x_0,x_1,x_2,x_4),对这个变量子集,其对应的(1+3,3.001)=(4,3.001)也接近第一象限角平分线,如果没有别的附加考虑,在准则下,(x_0,x_2,x_4)是“最优”子集。
而BIC准则选择的“最优”子集是(x_0,x_2,x_4)。
data.frame(result$outmat,adjR2=result$adjr2,Cp=result$cp,BIC=result$bic)
#调整决定系数,Cp和BIC准则结果展示
x1 x2 x3 x4 adjR2 Cp BIC
1 ( 1 ) * 0.9989 69.745 -205.6
2 ( 1 ) * * 0.9997 1.199 -242.6
3 ( 1 ) * * * 0.9997 3.001 -239.4
4 ( 1 ) * * * * 0.9997 5.000 -236.0
如果自变量个数为4,则所有的回归有个,当自变量个数为10时,所有可能的回归为 个,…,当自变量数个数为50时,所有可能的回归为个,当p很大时,数字大得惊人,有时计算是不可能的,于是就提出了所谓逐步回归的方法。
在作实际多元线性回归时常有这样情况, 变量相互之间常常是线性相关的,即在中任何两个变量是完全线性相关的, 即相关系数为1, 则矩阵的秩小于就无解。当变量中任有两个变量存在较大的相关性时, 矩阵处于病态, 会给模型带来很大误差。因此作回归时, 应选变量中的一部分作回归, 剔除一些变量。逐步回归法就是寻找较优子空间的一种变量选择方法。
在前面的章节中,我们给出了一般多元线性回归方程的求法,但是细心的读者也许会注意到,在那里不管自变量对因变量的影响是否显著,均可进入回归方程,这样就带来误差的自由度变小,而误差自由度的变小,就使得误差的均方增大,即估计的精度变低。另外在许多实际问题中,往往自变量之间并不是完全独立的,而是有一定的相关性存在,如果回归模型中的某两个自变量和的相关系数比较大,就可使得正规方程组的系数矩阵出现病态,也就是所谓多重共线性的问题,将导致回归系数的估计值的精度不高。
在例4.4中,虽然回归方程的检验是高度显著的,但是回归系数的检验结果只有和是显著的,而和却不显著,这样的回归方程不能称为最佳回归方程。因此,我们总是希望,不但求得的回归方程是显著的,而且在回归方程中的自变量也都是尽可能显著的,也就是要选择最佳的回归模型。选择最佳回归模型的方法很多,而逐步回归分析方法就是其中的一种。
在后面的讨论中,如果对回归方程增加自变量,则称为“引入”变量;如果要将已在回归方程中的自变量从回归方程中删掉,则称为“剔除”变量。无论引入变量或剔除变量,都要利用F检验,将显著的变量引入回归方程,而将不显著的变量从回归方程中剔除。记引入变量的F检验的临界值为,剔除变量的F检验的临界值为,一般,它的确定原则一般是,对p个自变量的n组样品数据,估计可能进入回归方程的变量为m个,则对给定的显著性水平,确定F值,记为,则可取。一般来说也可以直接取或2.71。当然,为了回归方程中还能多进入一些自变量,甚至也可以取为2.0或2.5。
首先对全部p个自变量,分别对因变量y建立一元回归方程,并分别计算这p个一元回归方程的p个回归系数的F检验值记为,选其最大的记为,若有>,则首先将引入回归方程,不失一般性,设就是。
接着考虑分别与因变量y建立二元回归方程,对于这p-1个回归方程中的回归系数进行F检验,计算得的F值,记为并选其最大的记为。若有,则接着将再引入回归方程,不失一般性,设就是。
对已经引入回归方程的变量和,如同前面的方法做下去,直至所有未被引入方程的变量的F值均小于时为止。这时的回归方程就是最终选定的回归方程。换种说法,向前引入法即从一个变量开始, 每次引入一个对y影响显著的变量, 直到无法引入为止。这种方法的要点是从一个变量开始, 将回归变量逐个引入回归方程, 它要先计算y同各个变量的相关系数, 对于相关系数绝对值最大的变量, 对其偏回归平方和(复相关系数) 作显著性检验, 如果显著就引入方程, 这种方法, 只是对变量的引入把关, 变量引入之后, 不论以后是否会变成不显著, 概不剔除。
显然,这种增加法有一定的缺点,主要是,它不能反映后来变化的情况。因为对于某个自变量,它可能开始是显著的,即将其引入到回归方程。但是,随着以后其它自变量的引入,它可能又变为不显著的了,但是,也并没有将其及时从回归方程中剔除掉。也就是增加变量法,只考虑引入而不考虑剔除。
与向前引入法相反,向后剔除法是:首先是建立全部自变量对因变量y的回归方程,然后对p个回归系数进行F检验,记求得的F值为,选其最小的记为,若有,则可以考虑将自变量从回归方程中剔除掉,不妨设就取为。
再对对因变量y建立的回归方程中的回归系数进行F检验,记求得的F值为。再取其中最小的,记为,若有,则接着将也从回归方程中剔除掉。不妨设就是。重复前面的做法,…,直至在回归方程中的变量F检验值均大于,即没有变量可剔除时为止,这时的回归方程就是最终的回归方程。
总之,向后剔除法即从包含全部p个变量的回归方程中, 根据判据, 每次剔除一个对y影响不显著的变量, 直到无法剔除为止。即从包含全部变量的回归方程中逐步剔除不显著变量。先建立全部变量的回归方程, 然后对每一变量作显著性检验, 剔去不显著变量中偏回归平方和最小的一个变量, 重新建立方程; 然后重复上面的过程, 直至方程中每个变量都显著为止。许多文献中都认为这种方法在变量不多、且不显著变量也不多时可以采用; 而当变量较多时, 特别是不显著变量很多时, 计算工作量是相当大的, 因为每剔除一个因子后就得重新计算回归系数。
这种剔除法有一个明显的缺点,就是一开始把全部自变量都引入回归方程,这样计算量比较大。若对一些不重要变量,一开始就不引入,这样便可以减少一些计算量。
前面的变量引入法,只考虑增加变量,不考虑剔除,也就是对任何一个变量,一旦被引入回归方程,不管其以后在回归方程中的作用发生什么变化(即使变得不显著了),也不考虑将其剔除。反之,变量剔除法,只考虑剔除,而不考虑增加。如果自变量是完全独立的,那么利用两种方法所求得的两个回归模型之间是完全没有显著差异的。但是,在许多实际问题的数据中,自变量之间往往并不是独立的,而是有一定的相关性存在的,这就会使得随着回归方程中变量的增加和减少,某些自变量对回归方程的贡献也会发生变化。因此一种很自然的想法是将前两种方法结合起来,也就是对每一个自变量,随着其对回归方程贡献的变化,它随时可能被引入回归方程或被剔除出去,最终的回归模型是,在回归方程中的自变量均为显著的,不在回归方程中的自变量均为不显著。也就是说,逐步筛选法是综合上述两种方法的特点, 建立的一种新方法, 其基本思想是, 在所考虑的全部变量中, 按其对预报变量y作用的显著程度大小, 挑选一个最重要变量, 建立只包含这个变量的回归方程; 接着对其他变量计算偏回归平方和, 引入一个显著性的变量, 建立具有两个变量的回归方程; 从此之后, 逐步回归的每一步(引入一个变量或从回归方程中剔除一个变量都算作一步) 前后都要作显著性检验, 即反复进行两个步骤: 第一, 对已在回归方程中的变量作显著性检验, 显著者保留, 把最不显著的那个变量从方程中剔除掉; 第二, 对不在回归方程中的其余变量, 挑选最重要的那一个进入回归方程, 直至最后回归方程中再也不能剔除任一变量, 同时也不能再引入变量为止, 保证最后所得回归方程中所有变量都为显著变量。这种方法和所谓选择全部回归子集的方法在一般情况下是很好的, 特别是整个模型满足线性回归的基本假定时效果较好。
逐步回归的计算步骤为, 从一个变量开始做:(1)每次选入一个对y影响显著的变量, 直到无法选入时转到(2); (2)每次剔除一个对y影响不显著的变量,直到无法剔除时转到(1)。当无法选入也无法剔除时停止筛选,以使最后回归方程只保留重要的变量。
fm=lm(y~x1+x2+x3+x4, data=yX) #多元数据线性回归模型
fm.step=step(fm,direction="forward") #向前引入法变量选择结果
Start: AIC=68.15
y ~ x1 + x2 + x3 + x4
fm.step=step(fm,direction="backward") #向后剔除法变量选择结果
Start: AIC=68.15
y ~ x1 + x2 + x3 + x4
Df Sum of Sq RSS AIC
- x3 1 0.009 202 66
- x1 1 1 204 66
<none> 202 68
- x4 1 174 376 85
- x2 1 6433 6635 174
Step: AIC=66.16
y ~ x1 + x2 + x4
Df Sum of Sq RSS AIC
- x1 1 2 204 64
<none> 202 66
- x4 1 197 400 85
- x2 1 7382 7585 176
Step: AIC=64.39
y ~ x2 + x4
Df Sum of Sq RSS AIC
<none> 204 64
- x4 1 549 753 103
- x2 1 367655 367859 295
-
fm.step=step(fm,direction="both") #逐步筛选法变量选择结果
Start: AIC=68.15
y ~ x1 + x2 + x3 + x4
Df Sum of Sq RSS AIC
- x3 1 0.009 202 66
- x1 1 1 204 66
<none> 202 68
- x4 1 174 376 85
- x2 1 6433 6635 174
Step: AIC=66.16
y ~ x1 + x2 + x4
Df Sum of Sq RSS AIC
- x1 1 2 204 64
<none> 202 66
+ x3 1 0.009 202 68
- x4 1 197 400 85
- x2 1 7382 7585 176
Step: AIC=64.39
y ~ x2 + x4
Df Sum of Sq RSS AIC
<none> 204 64
+ x1 1 2 202 66
+ x3 1 0.18 204 66
- x4 1 549 753 103
- x2 1 367655 367859 295
-
财政收入的规模大小对一个国家来说具有十分重要的意义,本案例不同于例4.4,分别从财政收入的组成因素和财政收入的影响因素两个方面入手对我国1979~1999年度财政收入情况进行多因素分析,其中在财政收入影响因素分析上本文除了通过理论选出因素利用统计软件建立模型分析外,还把影响财政收入的结构因素进行了个别分析。结论还在分析结果的基础上,结合了当前的客观条件和政策因素对未来财政收入作了一定的展望。
一、数据管理
本案例在书中例4.4的基础上,进一步收集影响财政收入的9个因素:GDP、能源消费总量、从业人员总数、全社会固定资产投资总额、实际利用外资总额、全国城乡居民储蓄存款年底余额、居民人均消费水平、消费品零售总额和居民消费价格指数,数据见下表Case4。
其中t: 年份,y: 财政收入,:GDP;:能源消费总量;:从业人员总数;:全社会固定资产投资总额;:实际利用外资总额;:全国城乡居民储蓄存款年底余额;:居民人均消费水平;:消费品零售总额;:居民消费价格指数。
二、R语言操作
1. 调入数据
选中Case3中的数据并复制,然后在Rstudio编辑器中执行
Case3=read.table("clipboard",header=T)。
我国直到1995年财政收入占GDP的比重都是下滑的,1993年中央采取整顿措施以后,财政收入占GDP的比重才相对稳定,到1996年开始略有回升。分配体制和分配模式是由经济体制决定的,过去计划经济体制下的统收统支体制,显然是和市场经济体制不对称的,经济体制转换带来分配体制的转换是必然的。
上述预测模型没有考虑到我国准备实施的“清费增税”重大制度改革。如果考虑将要实施的养路费、客运管理费改为燃油税,车辆购置附加费改为车辆购置税,及其他可能出台的费改税改革。
在进行未来财政收入预测时还应考虑到以下几个因素:
(1)我国经济已经具备步出低谷,出现复苏的条件。
(2)高科技产业发展使经济增长的科技含量提高,为财政收入增长提供了物资基础。
(3)随着经济的复苏,商品价格指数将摆脱长期负增长的局面,有望出现止跌回升。
(4)随着我国经济结构调整,税收制度发展,也将使我国财政结构发生变化。
在考虑到以上所有因素,我国的财政收入在预测模型的预测数量上还应有所增加。
该案例程序如下所示:
Case3=read.table("clipboard",header=T);Case3
cor(Case3) #相关分析
plot(Case3) #矩阵散点图
corr.test(Case3)
fm=lm(y~.,data=Case3) #线性回归
summary(fm)
y=Case3fit
resid=fm$resid
cbind(y,yhat,resid,rerror=resid/yhat*100)
t=1978:1998
plot(t,y)
lines(t,yhat)
1.一家保险公司十分关心其总公司营业部加班的程度,决定认真调查一下现状。经过10周时间,收集了每周加班工作时间(小时)的数据和签发的新保单数目。见下表。
周 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
x | 825 | 215 | 1070 | 550 | 480 | 920 | 1350 | 325 | 670 | 1215 |
y | 3.5 | 1 | 4 | 2 | 1 | 3 | 4.5 | 1.5 | 3 | 5 |
(1)绘制散点图,并以此判断与之间是否大致成线性关系;
(2)计算与的相关系数;
(3)用最小二乘估计法求出回归方程;
(4)求出随机误差的方差的估计值;
(5)计算与的决定系数;
(6)对回归方程做方差分析;
(7)对回归方程作残差图并做一些分析;
(8)计算 (张)需要的加班时间是多少?
2. 某家房地产公司的总裁想了解为什么公司中的某些分公司比其他分公司表现出色,他认为决定总年销售额(以百万元计)的关键因素是广告预算(以千元计)和销售代理的数目。为了分析这种情况,他抽取了8个分公司做为样本,搜集了下表所示的数据。
(1)准备一回归模型并解释各系数。
(2)用5%的显著水平,试确定每一解释变量与依赖变量间是否呈线性关系。
(3)计算相关系数和复相关系数。
分公司 | 广告预算(干元) | 代理数 | 年销售额(百万元) |
---|---|---|---|
1 | 249 | 15 | 32 |
2 | 183 | 14 | 18 |
3 | 310 | 21 | 49 |
4 | 246 | 18 | 52 |
5 | 288 | 13 | 36 |
6 | 248 | 21 | 43 |
7 | 256 | 20 | 24 |
8 | 241 | 19 | 41 |
3.预测一广告预算为此学校毕业生的起始工资的变化是否能用学生的平均成绩点数(GPA)和毕业时的年龄来解释。下表所示为分配办公室得到的样本数据。
(1) 准备一回归模型并解释各系数。
(2) 确定学生的GPA和年龄是否能真正用来解释起始工资样本的变化。
(3) 预测某GPA为3.00,年龄为24岁的毕业生的起始工资。
GPA | 年龄 | 起始工资 |
---|---|---|
2.95 | 22 | 25500 |
3.40 | 23 | 28100 |
3.20 | 27 | 28200 |
3.10 | 25 | 25000 |
3.05 | 23 | 22700 |
2.75 | 28 | 22500 |
3.15 | 26 | 26000 |
2.75 | 26 | 23800 |
4.研究货运总量(万吨)与工业总产值(亿元)、农业总产值(亿元)、居民非商品支出(亿元)的关系。有关数据见下表。
编号 | y | x1 | x2 | x3 |
---|---|---|---|---|
1 | 160 | 70 | 35 | 1 |
2 | 260 | 75 | 40 | 2.4 |
3 | 210 | 65 | 40 | 2 |
4 | 265 | 74 | 42 | 3 |
5 | 240 | 72 | 38 | 1.2 |
6 | 220 | 68 | 45 | 1.5 |
7 | 275 | 78 | 42 | 4 |
8 | 160 | 66 | 36 | 2 |
9 | 275 | 70 | 44 | 3.2 |
10 | 250 | 65 | 42 | 3 |
(1)计算出的相关系数矩阵并绘制矩阵散点图;
(2)求关于的多元线性回归方程;
(3)对所求得的方程做拟合优度检验;
(4)对回归方程做显著性检验,对每一个回归系数做显著性检验;
(5)如果有的回归系数没通过显著性检验,将其剔除,重新建立回归方程,再做回归方程的显著性检验和回归系数的显著性检验;
(6)使用变量选择方法获得一个最优回归模型。
仿照书中的案例形式,从给定的题目出发,按内容提要、指标选取、数据搜集、计算机计算过程、结果分析与评价等方面进行案例分析。
1. 未来我国用电量的多因素分析。
2. 未来若干年我国手机供应量的多元预测分析。
3. 未来若干年我国计算机供应量的多元预测分析。
4. 应用回归模型研究股市的变化规律
5. 居民消费价格指数逐步回归模型。
6. 我国彩电(液晶)供应量的多因素分析。