回归分析与方差分析

回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。运用十分广泛,回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且自变量之间存在线性相关,则称为多重线性回归分析。

方差分析(Analysis of Variance,简称ANOVA),又称“变异数分析”,是R.A.Fisher发明的,用于两个及两个以上样本均数差别的显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对结果形成影响的可控因素。方差分析是从观测变量的方差入手,研究诸多控制变量中哪些变量是对观测变量有显著影响的变量。

这两者都是考察所研究的自变量与因变量之间的关系,而且其实任何的方差分析都可以看成是一种特殊的回归,因为二者都可以统一到一个大的范畴——线性模型(General Linear Model, GLM)。但是这两种分析对应的变量可以是不同的,方差分析的自变量一般都是分类变量(当然也可以是连续变量),因变量都是连续变量;而回归分析的自变量和因变量都是连续变量。这样,从形式上来看方差跟回归的形式差不多,但是线性回归中的自变量和因变量是一一对应的,而方差分析中的自变量和因变量可能是一对多的。

虽然,很多教科书在介绍这两种分析方法时,都由于他们的分析目的不同而把他们界定为两种不同的分析方法,因为方差分析考察的是自变量对因变量的影响是否显著,而回归分析考察的是自变量与因变量之间的可以用数学表达式来表示的线性相关关系。但是分析的目的是基于研究目的,因为方差分析与回归分析对同一组数据得出的结果是一样的,那么在解释分析结果时,就要根据研究结果具体问题具体对待。

因此从这两种分析的本质来讲,方差分析与回归分析总体上属于一个类别,都是线性模型( linear model, LM)。至于到底选择什么模型,是方差分析还是线性回归,其实不必拘泥,可以根据实际的研究需要,选择相应的分析方法。

摘录于数理统计知识整理——回归分析与方差分析

I. 回归分析

回归分析的主要内容是通过试验或观测数据,寻找相关变量之间的统计规律性,再利用自变量的值有效预测因变量的可能取值。

其实际操作的步骤是:

  • 设定回归方程
  • 根据误差分析,考虑搜集数据对回归方程参数的影响,有目的的搜集数据
  • 确定回归系数
  • 进行相关性检验
  • 预测

II. 线性回归

II.I. 原理分析

要研究最大积雪深度x与灌溉面积y之间的关系,测试得到近10年的数据如下表:

[][最大积雪深度-灌溉面积]

使用线性回归的方法可以估计x与y之间的线性关系。

线性回归方程式:

[][回归方程]

对应的估计方程式为

[][线性回归方程]

线性回归完成的任务是,依据观测数据集(x1,y1),(x2,y2),...,(xn,yn)使用线性拟合估计回归方程中的参数a和b。a,b都为估计结果,原方程中的真实值一般用α和β表示。

为什么要做这种拟合呢?

答案是:为了预测。比如根据前期的股票数据拟合得到股票的变化趋势(当然股票的变化可就不是这么简单的线性关系了)。

线性回归的拟合过程使用最小二乘法,

[][最小二乘法]

最小二乘法的原理是:选择a,b的值,使得残差的平方和最小。

为什么是平方和最小,不是绝对值的和?答案是,绝对值也可以,但是,绝对值进行代数运算没有平方那样的方便,4次方又显得太复杂,数学中这种“转化化归”的思路表现得是那么的优美!

残差平方和Q,

[][残差]

求最小,方法有很多。代数方法是求导,还有一些运筹学优化的方法(梯度下降、牛顿法),这里只需要使用求导就OK了,

[][残差和求导]

为表示方便,引入一些符号,

[][线性回归符号]

最终估计参数a与b的结果是:

[][b]

[][a]

自此,针对前面的例子,只要将观测数据带入上面表达式即可计算得到拟合之后的a和b。不妨试一试?

从线性函数的角度,b表示的拟合直线的斜率,不考虑数学的严谨性,从应用的角度,结果的b可以看成是离散点的斜率,表示变化趋势,b的绝对值越大,表示数据的变化越快。

线性回归的估计方法存在误差,误差的大小通过Q衡量。

II.II. 误差分析

考虑获取观测数据的实验中存在其它的影响因素,将这些因素全部考虑到e~N(0,δ^2)中,回归方程重写为

y = a + bx + e

由此计算估计量a与b的方差结果为,

[][Dab]

a与b的方差不仅与δ和x的波动大小有关,而且还与观察数据的个数有关。在设计观测实验时,x的取值越分散,估计ab的误差就越小,数据量越大,估计量b的效果越好。这也许能为设计实验搜集数据提供某些指导。

II.III. 拟合优度检验及统计量

拟合优度检验模型对样本观测值的拟合程度,其方法是构造一个可以表征拟合程度的指标,称为统计量,统计量是样本的函数。从检验对象中计算出该统计量的数值,然后与某一标准进行比较,得出检验结论。

这是又会问了,最小二乘法不是保证了模型最好的拟合样本观测值了吗?为什么还要检验拟合程度?

最小二乘法保证的是同一个样本集使用最小二乘法拟合程度最好,而拟合优度检验结果表示的是多个不同样本集各自进行拟合后对拟合效果的比较。比如,下面的直线方程都是使用最小二乘法拟合的结果,但二者对样本观测值的拟合程度显然不同。

[][拟合优度检验]

为构造统计量,先定义三个表达式:

[][Se]

[][SR]

[][ST]

通过推倒可以发现:[][ST-Se-SR]

[][_ST]表示观测值y1,y2,y3,...yn与它们的平均值的离差平方和,[][_ST]越大,则观测值的波动越大。因此称总离差平方和。

[][_SR]表示回归直线上点的纵坐标y1,y2,...,^yn与与观测值均值的离差平方和。所以称为回归平方和。[][_SR]反映出回归直线因素对[][_ST]的影响。

[][_Se]是最小二乘法中残差平方和Q的最小值,它是实际观测值yi与回归直线上的点(xi,yi)的纵坐标yi的离差平方和。[][_Se]是扣除线性影响外的剩余平方和,因此称为残差平方和。

显然,一个拟合得比较好的模型,[][_ST]与[][_SR]应该比较接近,而[][_Se]应该尽可能的小。因此,可以通过构造某种[][_ST]与[][_SR]的表达式作为拟合优度检验中的统计量。

  • 构造统计量——相关系数

因此,构造相关系数

[][相关系数]

不同的r值有不同的线性相关表示,如下图

[][相关系数图]

结论:

当|r|->0时,表示x与y之间的线性关系不明显,不适合使用线性回归建模。反之,当|r|越接近1时,表示x与y之间的线性关系越密切。
  • 构造统计量——F

[][统计量F]

F值越小表示线性关系越密切,反之线性关系越弱。

  • 构造统计量——t

[][统计量t]

|t|越大,x与y之间的线性关系越密切;反之,越小,x与y之间的线性关系越微弱。

不管是相关系数,还是F,或者t,都能用于描述x与y之间的线性相关程度。并且可以通过验证,这三种统计量用于下面的显著性检验是完全一致的。

II.IV. 显著性检验

显著性检验,

以开头“最大积雪深度x与灌溉面积y之间的关系”的线性关系是否显著为例,使用上面构造的统计量进行显著性检验的过程如下:

[][显著性检验-1]

[][显著性检验-2]

[][显著性检验-3]

[][显著性检验-4]

[][显著性检验-5]

在当中,计算线性回归及显著性检验使用到如下的公式,下面的公式不用记住,使用时查询即可。

[][线性回归季显著性检验的公式]

相关系数的查表参见[相关系数显著性检验表]

II.V. 置信区间

回归系数α以1-α为置信度的置信区间为

[][alpha置信区间]

回归系数β以1-α为置信度的置信区间为

[][beta置信区间]

其中S都为,

[][S-Equal]

II.VI. 使用Matlab做回归分析

使用最小二乘法做多元线性回归分析的函数为:

1
2
3
4
5
[b,bint,r,rint,stats] = regress(y,X,alpha);

% alpha 为显著性水平
% b bint 为回归系数估计值向量及其置信区间
% r rint 为残差向量及其置信区间,可用rcoplot(r,rint)绘图

下面是一个使用Matlab做线性回归分析的实例:

EG:
x  0.10 0.11 0.12 0.13  0.14 0.15 0.16 0.17 0.18
y  42.0 41.5 45.0 45.5 45.0 47.5 49.0 55.0 50.0

Matlab代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clear all
clf
close all

% 绘制(X,Y)散点图
figure,
x=0.1:0.01:0.18;
y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0];
plot(x,y,'+')

% 线性回归分析
x1=x';
y1=y';
x2=[ones(9,1),x1];
[b,bint,r,rint,stats]=regress(y1,x2);

% 绘制拟合直线
y = b(2)*x + b(1);
hold on,plot(x,y,'r');

% 绘制残差图
figure,rcoplot(r,rint);

结果为拟合直线图和残差图如下:

[][回归分析Matlab1] [][回归分析Matlab2]

在Matlab中还可以使用polyfit函数非常方便的对数据进行拟合,polyfit除了能进行线性拟合,还可以进行非线性的拟合。

使用polyfit拟合方法如下:

1
2
3
4
5
6
7
8
9
10
11
% 绘制(X,Y)散点图
figure,
x=0.1:0.01:0.18;
y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0];
plot(x,y,'+');

% 绘制拟合直线
hold on,
p = polyfit(x',y',1);
y = p(1).*x + p(2);
plot(x,y2,'r');

拟合结果与上面的一样。

II.VII. 回归分析的实际操作步骤

回归分析的主要内容是通过试验或观测数据,寻找相关变量之间的统计规律性,再利用自变量的值有效预测因变量的可能取值。

其实际操作的步骤是:

  1. 设定回归方程
  2. 根据误差分析,考虑搜集数据对回归方程参数的影响,有目的的搜集数据
  3. 确定回归系数
  4. 进行相关性检验
  5. 预测

III. 方差分析

方差分析问题:用数理统计分析试验结果、鉴别各因素对结果影响程度的方法称为方差分析(Analysis Of Variance),记作ANOVA。

方差分析主要分为'①单因素一元方差分析'; '②双因素一元方差分析 '; '③多因素一元方差分析 '; '④单因素多元方差分析 '。

III.I. 引入

[][灯泡寿命-灯丝]

如上图,对A1~A4共4种不同灯丝的灯泡进行抽样检测灯泡寿命,根据测试数据,现在要问:灯泡寿命是否与灯丝材料的不同有关。

问题特点有:

  • 1项指标(因变量):寿命
  • 影响指标的因素(因子):灯丝
  • 因素存在多个不同状态(水平),要求分析因素的不同状态是否对指标有显著影响

这就是方差分析问题:用数理统计分析试验结果、鉴别各因素对结果影响程度的方法称为方差分析(Analysis Of Variance),记作ANOVA。

III.II. 单因素方差分析

其它因素不变,只考虑一个因素A,因素存在多个水平,在每个水平上做若干次实验,从实验结果推断是否该因素对指标有显著影响?这就是单因素的方差分析,上面的例子就是单因素方差分析的例子。

  • 前提假设

设因素A的r个水平为A1,A1,...,Ar,每个水平下的指标服从正态分布N(u1,δ2),N(u2,δ2),...,N(ur,δ2)。

  • 模型建立

实验数据的格式:

[][单因素方差分析实验数据表]

因子对指标是否有影响取决于指标的正态分布是否一致,如果有影响,则正态分布应该存在差异,而正态分布由均值和方差决定,假设中方差相同,因此各个水平下的正态分布均值直接决定因素是否对指标有影响。

所以,问题可以转化为假设检验,设

H0: u1=u2=u3=...=ur

检验结果如果拒绝原假设,则认为因素A对指标有显著影响,否则认为无显著影响。

u = (1/r)_1^a{ui}

αi = ui - u

则,H0假设改写成

H0: α1=α2=α3=...=αr=0

  • 构造统计量(摘自《数学建模Matlab大全》)

[][方差分析1] [][方差分析2]

  • 单因素方差分析表

过对上面模型中相关参数进行计算,为计算分析方便,将结果填入下表中:

[][单因素方差分析表]

表中的Pr反映的就是>F值的概率,F值通过因素A均方除以误差均方获得。

因此,有

  1. 如果Pr大于α,则接受H0,因素对指标无显著影响
  2. 如果Pr小于α,则拒绝H0,因素对指标有显著影响

Matlab的输出结果即为上面的方差分析表,因此,用matlab很容易进行方差分析。

III.III. 用Matlab进行单因素方差分析

[][单因素方差分析题]

能否认为这三所小学五年级男学生的平均身高相同?取显著水平α=0.05.

假设H0: 这三所小学五年级男学生的平均身高相同。

1
2
3
4
5
6
7
8
data = [...
128.1 134.1 131.1 138.9 140.8 127.4; ...
150.3 147.9 136.8 126.0 150.7 155.8; ...
140.6 143.1 144.5 143.7 148.5 146.4...
];
data = data';

P=anova1(data); % 方差分析函数anova1

Matlab程序的运行结果为:

[][单因素方差分析Matlab]

∵ Pr=0.0275 < α ∴ 拒绝H0,即不能认为这三所小学五年级男学生的平均身高相同。

实验数据也可以是非平衡数据,如上,假设小学2的测试数据少一组:

[][单因素方差分析题1]

此时,anova1调用格式有所改变,

1
2
3
4
p=anova1(x,group)

% x 为向量,从第 1 组到第r组数据依次排列;group 为与 x 同长度的向量,标志 x 中数
% 据的组别(在与 x 第i组数据相对应的位置处输入整数 i=1,2,..r)

此时的Matlab代码为:

1
2
3
4
5
6
7
8
9
x = [...
128.1 134.1 131.1 138.9 140.8 127.4; ...
150.3 147.9 136.8 126.0 150.7 0; ...
140.6 143.1 144.5 143.7 148.5 146.4...
];
x = [x(1,:),x(2,1:5),x(3,:)];
g = [ones(1,6),2*ones(1,5),3*ones(1,6)];

P=anova1(x, g);

结果为

[][单因素方差分析Matlab1]

因为仅改变了一个实验数据,其结果和前面的一致。

III.IV. 双因素方差分析

关于双因素方差分析的模型请参考[3],这里从实际角度出发:

  • 考虑如何测试实验数据

按下表测试数据,每组t各数据,共r x s组。

[][双因素分析实验数据表]

  • 考虑双因素间是否有交互影响

无交互影响时可简化测试的实验数据数,每组测一个数据(令t=1)即可,因为无交互影响双因素方差分析表中各量都与t无关。

[][无交互影响双因素方差分析表]

有交互影响的方差分析表如下:

[][有交互影响方差分析表]

从方差分析表中可以看出:与单因素方差分析相比,双因素方差分析只是多了一个因素,因此方差分析表中多了一行而已,再加上要考虑交互影响,则方差分析表中再增加1行。

  • 考虑如何使用Matlab进行分析

Matlab中通过

1
p=anova2(x,reps)
进行双因素的方差分析,不妨使用

1
>> help anova2

查看anova2函数的使用方法。

对无交互关系的双因素方差分析,此时每个单元只需要测一个值,reps=1
对于交互关系的双因素方差分析,此时每个单元需要测多个值(t>1),reps=2

参数x的格式为:

% 列因素有3个水平(s=3),行因素有2个水平(r=2),每组测试2个数据(t=2)
x =[x111 x121 x131
    x112 x122 x132
    x211 x221 x231
    x221 x222 x232]

1. 无交互作用双因素方差分析的例子

一种火箭使用了四种燃料、三种推进器,进行射程试验,对于每种燃料与每种推进器的组合作一次试验,得到如下数据表,问各种燃料之间及各种推进器之间有无显著差异?设显著性水平α=0.05. [][火箭试验数据]

Matlab解题代码如下:

1
2
3
4
5
6
x=[58.2 56.2 65.3
49.1 54.1 51.6
60.1 70.9 39.2
75.8 58.2 48.7];

[p,t,st]=anova2(x,1);

分析结果的方差分析表如下:

[][双因素方差分析EG1]

求得p=[0.4491 0.7387],都大于α,所以各种燃料之间及各种推进器的差异都对火箭射程没影响。

2. 有交互作用双因素方差分析的例子

一种火箭使用了四种燃料、三种推进器,进行射程试验,对于每种燃料与每种推进器的组合作2次试验,得到如下数据表,问各种燃料之间及各种推进器之间有无显著差异?两因素的交互作用是否显著?设显著性水平α=0.05. [][火箭试验数据2]

Matlab解题代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
x0=[58.2,52.6 56.2,41.2  65.3,60.8
49.1,42.8 54.1,50.5 51.6,48.4
60.1,58.3 70.9,73.2 39.2,40.7
75.8,71.5 58.2,51.0 48.7,41.4];

x1=x0(:,1:2:5);x2=x0(:,2:2:6);
for i=1:4
x(2*i-1,:)=x1(i,:);
x(2*i,:)=x2(i,:);
end

[p,t,st]=anova2(x,2);

分析结果的方差分析表如下:

[][双因素方差分析EG2]

求得p=[ 0.0035 0.0260 0.0001],都小于α,所以各实验均值相等的概率很小,认为不同燃料、不同推进器下的射程有显著差异,交互作用也是显著的。

IV. 回归分析与方差分析的比较

回归分析与方差分析之间都是研究相关关系的统计方法,就我理解,两者之间的差异在于:

  1. 回归分析在于建立自变量与因变量之间的定量关系(表达式),这种定量的关系可用于将来的预测(如:根据14年以前的房价数据建立回归模型,可用于14年的房价预测);方差分析在于解释因素的不同水平(状态)是否对指标有显著影响,如有显著影响,其具体影响的定量关系还需要用其它方法做进一步的分析(如:通过测试试验数据,分析货币的价值(因素)是否对房价(指标)有显著影响,方差分析无法提供房价与货币价值间的定量表达式)

  2. 应用上:当不确定谋因素是否对指标有影响时,可先测量小部分数据,做方差分析。若确定因素对指标有影响,则增加测量因素在不同状态下的数据,进一步用回归分析确定因素与指标之间的定量关系。否则认为因素与指标之间无关。

V. 参考

  1. [相关系数显著性检验表]
  2. 北京科技大学统计优化研究生课程课件
  3. 数学建模Matlab大全(共30章)