回归分析方法
想要资源的请关注公众号: 在一起的足球
自动获取资源和数十种经典算法,帮助各位提升自己
之前留的是自己的qq号 感觉好多资源都不能让大家自行选择
本着开源的精神,在公众号挂了百度云链接,这样晚上就不用被吵醒了
当人们对研究对象的内在特性和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型。如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型,那么通常的办法是搜集大量数据,基于对数据的统计分析去建立模型。本章讨论其中用途非常广泛的一类模型——统计回归模型。回归模型常用来解决预测、控制、生产工艺优化等问题。
变量之间的关系可以分为两类:一类叫确定性关系,也叫函数关系,其特征是:一个变量随着其它变量的确定而确定。另一类关系叫相关关系,变量之间的关系很难用一种精确的方法表示出来。例如,通常人的年龄越大血压越高,但人的年龄和血压之间没有确定的数量关系,人的年龄和血压之间的关系就是相关关系。回归分析就是处理变量之间的相关关系的一种数学方法。其解决问题的大致方法、步骤如下:
(1)收集一组包含因变量和自变量的数据;
(2)选定因变量和自变量之间的模型,即一个数学式子,利用数据按照最小二乘准则计算模型中的系数;
(3)利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型;
(4)判断得到的模型是否适合于这组数据;
(5)利用模型对因变量作出预测或解释。
应用统计分析特别是多元统计分析方法一般都要处理大量数据,工作量非常大,所以在计算机普及以前,这些方法大都是停留在理论研究上。运用一般计算语言编程也要占用大量时间,而对于经济管理及社会学等对高级编程语言了解不深的人来说要应用这些统计方法更是不可能。MATLAB等软件的开发和普及大大减少了对计算机编程的要求,使数据分析方法的广泛应用成为可能。MATLAB统计工具箱几乎包括了数理统计方面主要的概念、理论、方法和算法。运用MATLAB统计工具箱,我们可以十分方便地在计算机上进行计算,从而进一步加深理解,同时,其强大的图形功能使得概念、过程和结果可以直观地展现在我们面前。本章内容通常先介绍有关回归分析的数学原理,主要说明建模过程中要做的工作及理由,如模型的假设检验、参数估计等,为了把主要精力集中在应用上,我们略去详细而繁杂的理论。在此基础上再介绍在建模过程中如何有效地使用MATLAB软件。没有学过这部分数学知识的读者可以不深究其数学原理,只要知道回归分析的目的,按照相应方法通过软件显示的图形或计算所得结果表示什么意思,那么,仍然可以学到用回归模型解决实际问题的基本方法。包括:一元线性回归、多元线性回归、非线性回归、逐步回归等方法以及如何利用MATLAB软件建立初步的数学模型,如何透过输出结果对模型进行分析和改进,回归模型的应用等。
8.1 一元线性回归分析
回归模型可分为线性回归模型和非线性回归模型。非线性回归模型是回归函数关于未知参数具有非线性结构的回归模型。某些非线性回归模型可以化为线性回归模型处理;如果知道函数形式只是要确定其中的参数则是拟合问题,可以使用MATLAB软件的curvefit命令或nlinfit命令拟合得到参数的估计并进行统计分析。本节主要考察线性回归模型。
8.1.1 一元线性回归模型的建立及其MATLAB实现
其中是待定系数,对于不同的是相互独立的随机变量。
假设对于的n个值,得到的n个相应的值,确定的方法是根据最小二乘准则,要使
取最小值。利用极值必要条件令,求的估计值,从而得到回归直线。只不过这个过程可以由软件通过直线拟合完成,而无须进行繁杂的运算。
(1)参数的区间估计
由于我们所计算出的仍然是随机变量,因此要对取值的区间进行估计,如果区间估计值是一个较短的区间表示模型精度较高。
(2)对误差方差的估计
设为回归函数的值,为测量值,残差平方和
剩余方差
(3)线性相关性的检验
由于我们采用的是一元线性回归,因此,如果模型可用的话,应该具有较好的线性关系。反映模型是否具有良好线性关系可通过相关系数R的值及F值观察(后面的例子说明)。
(4)一元线性回归的MATLAB实现
MATLAB工具箱中用命令regress实现,其用法是:
b=regress(y,x)
[b ,bint , r ,rint , s]=regress(y , x , alpha)
输入y(因变量,列向量)、x(1与自变量组成的矩阵,见下例),alpha是显著性水平(缺省时默认0.05)。
输出,注意:b中元素顺序与拟合命令polyfit的输出不同,bint是的置信区间,r是残差(列向量),rint是残差的置信区间,s包含4个统计量:决定系数(相关系数为R);F值;F(1,n-2)分布大于F值的概率p;剩余方差的值(MATLAB7.0以后版本)。也可由程序sum(r.^2)/(n-2)计算。
其意义和用法如下:的值越接近1,变量的线性相关性越强,说明模型有效;如果满足,则认为变量与显著地有线性关系,其中的值可查F分布表,或直接用MATLAB命令finv(1-,1, n-2)计算得到;如果表示线性模型可用。这三个值可以相互印证。的值主要用来比较模型是否有改进,其值越小说明模型精度越高。
8.1.2身高与腿长
例1 测得16名成年女子身高与腿长所得数据如下:
表8-1 16名女子身高(cm)腿长(cm)数据
88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102 |
|
143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164 |
首先利用命令plot(x,y,'r*')画出散点图,从图形可以看出,这些点大致分布在一条直线的左右,因此,可以考虑一元线性回归。可编制程序如下:
y=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164];
x=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102];
n=16;
X=[ones(n,1),x'];
[b,bint,r,rint,s]=regress(y',X,0.05);
b,bint,s,
rcoplot(r,rint)
运行后得到
b = 31.7713 1.2903
bint = 12.3196 51.2229
1.0846 1.4960
s = 0.9282 180.9531 0.0000 3.1277
=0.9282,由finv(0.95,1,14)= 4.6001,即= 4.6001<F=180.9531,p<0.0001,
可以通过残差图发现,第二个数据为奇异数据,去掉该数据后运行后得到
b = 17.6549 1.4363
bint = -0.5986 35.9083
1.2445 1.6281
s = 0.9527 261.6389 0.0000 1.9313
=0.9527,由finv(0.95,1,13)= 4.6672,即= 4.6672<F=261.6389,p<0.0001,说明模型有效且有改进,因此我们得到身高与腿长的关系。
当然,也可以利用直线拟合得到同一方程。只不过不能得到参数置信区间和对模型进行检验。拟合程序如下:
y=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164];
x=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102];
a=polyfit(x,y,1)
temp=polyval(a,x);
plot(x,y,'r*',x,temp)
注意:函数相同,但输出一次函数参数顺序与回归分析(升幂排列)中不同。另一个差别是拟合不能发现奇异数据。
8.2 多元线性回归分析
8.2.1 多元线性回归模型的建模步骤及其MATLAB实现
如果根据经验和有关知识认为与因变量有关联的自变量不止一个,那么就应该考虑用最小二乘准则建立多元线性回归模型。
设影响因变量的主要因素(自变量)有m个,记,假设它们有如下的线性关系式:
,
如果对变量与自变量 同时作n次观察(n>m)得n组观察值,采用最小二乘估计求得回归方程
.
建立回归模型是一个相当复杂的过程,概括起来主要有以下几个方面工作(1)根据研究目的收集数据和预分析;(2)根据散点图是否具有线性关系建立基本回归模型;(3)模型的精细分析;(4)模型的确认