Matlab统计工具箱应用(III)
2011 年 07 月 18 日
本节讨论统计工具箱在线性回归与回归分析中的应用。
1. 回归分析的主要研究内容
a. 建立因变量y与自变量x_1,x_2,…x_n之间的回归模型(经验公式)
b. 对回归模型的可信度进行分析
c. 判断每个自变量x_i对y的影响是否明显(方差分析)
d. 诊断回归模型是否适合这组数据;
e. 利用回归模型对y进行预测和分析
2. 数据的标准化处理
对数据进行标准化处理,一则不会改变数据之间的相关关系,却可以为后续的处理提供便利;二则可以对数据进行无量纲化处理,使每个变量都有等同的表现力。
Undefined control sequence \farc
其中,x ij 是原始数据,x − 是每个变量在n个观测点上的均值,即x − =sum n i=1 n+1 ,s j 是每个变量组间标准差,即为x j =sqrt1 n+1 sum n i=1 x ij −x j − − .
3. 一元线性回归模型分析
形如y=β 0 +β 1 x+δ 即为一元线性回归模型,即y仅与一个变量x有关,式子最后一项为随机变量。根据最小二乘法(过程省略),可以得到Undefined control sequence \bata 和β 1 的估计值如下:
{β 1 =s y s x r xy β 0 =y − −β 1 x −
又由于之前对数据做了标准化处理,所以有s y =1 ,s x =1 ,
y=r xy x
4.显著性检验
对于一元线性回归模型,显著性检验包含两个方面,一是检验因变量与自变量之间是否具有显著的线性关系,即对模型的检验,这是由F检验完成的,对于给定的置信水平α ,按自由度n1=1,n2 = n-2查F的分布表,若大于则认为模型可接受;二是检验回归参数是否合理,这是由t检验完成的,对于给定的置信水平α ,按自由度n-2查t分布表,若大于则认为β 1 显著不为零。
5.多元线性回归
过程与原理与一元线性回归过程类似,但是F检验的自由度变为(m,n-m-1),并且还有一些衡量y与各个分量之间是否存在相关性的指标,如R 2 =U S ,这是回归平方和在总平方和中的比值,称为复判定系数,其开方值为复相关系数,通常认为R>0.8(或0.9)才认为相关关系成立。
6.Matlab统计工具箱相关函数
6.1多元线性回归
函数为regress,输入输出如下:
[b,bint,r,rint,stats]=regress(X,Y,alpha)
X是对m个元素进行的n次观测值,其中X的行向量是一次观测值,但第一个元素为1,即为[1,x_1,x_2…x_m]。Y是因变量的n次观测值。
b返回回归参数的点估计值,bint返回回归参数的区间估计值,r为残差(向量)以及r的置信区间,stat是用于检验模型的统计量,四个统计量分别为R 2 ,F,F对应的概率p,p<α 时认为线性关系成立,第四个是残差的方差s 2 。残差及其置信区间可以用函数rcoplot(r,rint)画出。观察残差的置信区间,如果不包含零点,则认为观测点有异常,剔除后重新计算。
6.2多项式回归
如果用散点图可以观测出因变量与自变量之间存在明显的二次或者高次关系,或者用线性模型回归的效果不是很好,则可以选用多项式回归。
函数:[p,s]=polyfit(x0,y0,m)
输入中的n代表了多项式的最高次数,x0是n*(m-1)维的观测值,如果自变量只有一个,则x0的每个列向量都是相等的,y0是对应的因变量观测值。
输出p是从高次到低次的回归参数,包括了常数项。s是一个数据结构,可以用来计算函数值,计算方法为[y,delta] = polyconf(p,x0,s),其中y是拟合值,delta是y的置信区间半径。也可以采用polytool(x0,y0,2),采用一个交互式界面,可以给出任意位置的y预测值。
Matlab中提供了一个专门的函数rstool完成多元二项式回归,这个函数也产生一个交互式的界面,用法是rstool(x,y,model,alpha),x,y分别是n*m维矩阵和n维向量,model可以取以下几个值”linear”、”purequadratic”、”interaction”和”quadratic”四个值。界面上有一个export菜单,用于向命令窗口传递数据,包括回归参数,剩余标准差以及残差,可以通过修改model的值比较多个模型的标准差来确定哪个最好。
6.3非线性回归
非线性回归是指因变量对回归系数(而不是自变量,否则应该是多项式回归)是非线性的。
已知模型的函数,但是不知道回归系数,首先,将模型函数输入,然后,用nlinfit计算回归系数,用nlparci计算回归系数的置信区间,nlpredci计算预测值以及置信区间。
编程时,先任意生成一个beta的初值,然后[betahat,r,j]=nlinfit(x0,y0,’functionname’,beta),其中返回值r,j是下面命令需要用到的信息,betaci=nlparci(betahat,r,\'jacobian\',j)计算beta的区间估计,组合为betaa=[betahat,betaci],表示回归系数及其置信区间[yhat,delta]=nlpredci(@huaxue,x,betahat,r,\'jacobian\',j),delta是预测值的半径,置信区间为yhat±delta。用nlintool可以生成一个交互式界面,与rstool有些类似,命令为nlintool(x,y,’functionname’,beta)。
6.4逐步回归
实际中影响因变量的因素可能有很多,所以需要选取影响最为显著的几项进行拟合,也就是变量的选择。
Matlab中用于逐步回归的函数为stepwise,用法是stepwise(x,y,inmodel,alpha) ,inmodel是矩阵x的列数的指标,给出初始模型中包括的子集(可缺省).界面中绿色的表示留在模型中的自变量,红色代表从模型中移去的变量。