%回归分析
%%%%%%%%
%RCS
%在实际生活中,某种现象的发生与某种结果的得出往往与其他某个或某些因素有关,但这种关系又不是确定的,只是从数据上可以看出有“有关”的趋势。
%回归分析就是用来研究具有这种特征的变量之间的相关关系的。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%
%%线性回归
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%假设因变量与自变量之间为线性关系,用一定的线性回归模型来拟合因变量和自变量的数据,并通过确定模型参数来得到回归方程;
%当自变量只有一个时,称为一元线性回归;当自变量有多个时,称为多元线性回归。
%1.一元线性回归
%(1)回归模型与参数的确定:
%回归模型:y=b0+b1x
%y为因变量,x为自变量,b0,b1为待定参数(b0称为常数项,b1称为回归系数)。
%通常采用最小二乘法来确定上面两个待定参数,即要求观测值与利用上面回归模型得到的拟合值之间差值的平方和最小。差值平方和达到最小时的模型参数便作为待定参数的最终取值,代入模型,便可确定回归模型。
%(2)回归系数的显著性检验
%给定以上模型和实测数据以后,总可以得到待定参数的拟合值,但由此确定的回归方程式不一定有意义。因此,需要对得到的回归系数做显著性检验,即检验回归系数是否为0。如果为0,则说明因变量与自变量无关,回归方程无意义。
%回归系数的显著性检验有多种方法:F检验法、t检验法和相关系数检验法。
%F检验法:为了对回归方程做显著性检验,首先将观测量和拟合值差值的平方和(SS)分解为回归平方和(SSR)和残差平方和(SSE),F=SSR/(SSE/(n-2));当F值大于一定的临界值时,拒绝原假设,认为因变量与自变量之间是相关的。
%t检验法
%相关系数检验法:R=SUM((Xi-averageX)*(Yi-averageY))/sum(Xi-averageX)^2*sum(Yi-averageY)^2
R为相关系数,当相关系数的绝对值大于一定的临界值时,拒绝原假设。
%(3)回归系数的区间估计
%由最小二乘法得到的是回归系数的点估计(称为最小二乘估计),实际问题中常要求给出回归系数的置信区间。
%(4)预测
%经检验回归系数为显著的以后,便可利用回归方程式做预测。只要输入自变量的一个取值,便可获得一个因变量的估计值。当给定预测精度时就可获得回归系数的预测区间。
%(5)假设的检验
%进行线性回归时,有4个基本假定,即因变量与自变量之间线性关系的假定、残差的独立性假设、残差的方差齐性假定和残差正态分布的假定。
%1)线性诊断:
%2)残差的独立性诊断:
%残差变量用Durbin-Watson检验法进行诊断。
DW=SUM(ei-e(i-1))^2/SUM(ei^2), ei为当前点的残差,ei-1为前一点的残差,n为数据组数。
%当︱DW-2︱过大时拒绝原假设,认为相邻两点的残差之间是相关的。当DW<2,认为相邻两点的残差为正相关,DW>2,负相关;只有当DW≈2时,认为相邻两点的残差之间是相互独立的。
%3)残差的方差齐性诊断:
%这可以通过生成和分析标准化预测值-学生化残差散点图来实现。当图中各点分布没有明显的规律性,即残差的分布不随预测值的变化而增大或减小时,认为残差是方差齐性的。当然也可以通过保存残差对保存变量做方差齐性诊断。
%4)残差的正态性诊断:
%可通过直方图和P-P正态概率图来实现。
%%%%%%%%%%%%%
%%多元线性回归
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%回归模型 y=bo+b1xi1+b2xi2+...bnxin, i=1,2,...,n
%方法大致同一元线性回归,根据多元回归时自变量选择的不同,多元回归可以有多种不同的计算方法:
%(1)全回归法
%进行全回归时,所有的自变量进入回归方程,使用这种方法,一般具有较高的回归系数,但一些对因变量没有显著性影响的自变量也可能进入回归方程。
%(2)向前法
%该方法比较所有自变量与因变量的偏相关系数,然后选择最大的一个做回归系数显著性检验,决定其是否进入回归方程。缺点是某自变量选入方程后,就一直留在方程中,不再剔除。“只进不出法”
%(3)向后法
%该法首先计算包含所有变量的回归方程,然后用偏F检验逐个剔除对因变量无显著性影响的自变量,知道每一个自变量在偏F检验下都有显著性结果为止。得到的结果比全回归简洁,但缺点是,即变量在向后消元过程中如果被剔除,它将永远不会在方程中重新出现。然而一个被剔除的变量很可能在其它变量被剔除后又对因变量有显著性影响。
%(4)逐步回归法*
%是对向前法的改进。它首先对偏相关系数最大的变量做回归系数显著性检验,以决定该变量是否进入方程。然后对方程中每个变量作为最后选入方程的变量求出偏F值,对偏F值最小的那个变量做偏F检验,决定它是否留在回归方程中。重复此过程,直到没有变量被引进和剔除为止。
%%有关函数介绍
%1.用rcoplot函数绘残差个案排序图。
rcoplot(r,rint)
%在回归分析得到的残差处显示一个置信区间的误差条图,图中的残差按案例号排序。r,rint是regress函数的输出参数。
%所有的误差条通过零线时,表示数据中没有异常值。
%2.用regress函数进行多元线性回归。
b=regress(y,X)
%返回X处y的最小二乘拟合值。该函数求解线性模型:y=Xβ+ε
ε~N(0,(σ^2)I);
%y为n*1的矢量,X为n*p的矩阵,β为p*1的参数矢量,ε为n*1的随机干扰矢量。
[b,bint,r,rint,stats]=regress(y,X)
%b: 返回β的估计
(为自变量的系数矢量)
%bint: 返回β的95%置信区间
(p*2矢量)
%r: 残差
(为对应个案系数的残差,每个变量有多少个数据就得出多少个残差)
%rint: 返回每一个残差的95%置信区间(n*2矢量)
%stats: 包含R^2统计量,回归的F值和p值。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%【例如】
%假如b的输出结果为[b1;b2;b3;b4];故全回归的回归结果为y=b1X1+b2X2+b3X3+b4X4
%R^2=0.9860,说明模型拟合程度相当高。
%显著性概率p=0.0001,小于0.05,故拒绝零假设,认为回归方程中至少有一个变量的系数不为零,回归方程有意义。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[b,bint,r,rint,stats]=regress(y,X,alpha)
%给出bint和rint的100(1-alpha)%置信区间,alpha=0.2时,给出80%置信区间。
%3.用leverage函数生成回归的中心化杠杆值。
h=leverage(DATA)
%找到DATA矩阵中每一行的中心化杠杆值。
h=leverage(DATA,'model')
%使用指定的模型类型:
%'linear'——包括常数项和线性项;
%'interaction'——包括常数项、线性项和交互项;
%'quadratic'——交互项加上二次项;
%'purequadratic'——包括常数项、线性项和二次项。
%中心化杠杆值用于衡量指定观测量由于其在输入空间中的位置所产生的对回归的影响。
%4.用regstats函数进行线性模型的回归诊断。
regstats(responses,data,model)
%进行多元回归模型拟合,因变量为responses矢量,自变量的值在data矩阵中。该函数创建一个图形用户界面,其中提供了一组用指定变量名将诊断统计量保存到基本工作空间的核选框。model控制模型的阶数。model的选项如下:
%'linear'——包括常数项和线性项;(默认选项)
%'interaction'——包括常数项、线性项和交互项;
%'quadratic'——交互项加上平方项;
%'purequadratic'——包括常数项、线性项和平方项。
stats=regstats(responses,DATA,model,whichstats)
%创建一个输出结构stats,它包含whichstats中列出的统计量。使用本语法不会打开图形用户界面。whichstats可以是一个类似‘leverage’的单一名称,或者类似{'leverage''standres''studres'}的名称单元数组。
%whickstats的合法名称包括:
%'Q'——QR分解得到的Q矩阵(酉矩阵);
%'R'——QR分解得到的R矩阵(三角阵);
%'beta'——回归系数;
%'covb'——回归系数的协方差;
%'yhat'——响应数据的拟合值;
%'r'——残差;(residuals)
%'mse'——均方误差;
%'leverage'——中心化杠杆值;
%'hatmat'——Hat(投影)矩阵;
%'s2_i'——剔除第i个变量以后得到的协方差;
%'beta_i'——剔除第i个变量以后得到的相关系数;
%'standres'——标准化残差;
%'studres'——学生化残差;(student rediduals)
%'dfbetas'——回归系数(β)的变化;
%'dffit'——拟合值的变化;
%'dffits'——拟合数据的比例变化;
%'covratio'——协方差的变化;
%'cookd'——Cook距离;
%'all'——创建上面所有的统计量。
stats=regstats(responses,DATA,'linear','Q')
stats=regstats(responses,DATA,'interaction',{'R''r''cookd'})
stats=regstats(responses,DATA,'quadratic','all')
%5.用stepwise函数进行逐步回归,它使用交互环境进行分析。
stepwise(X,y)
%显示一个交互工具来创建回归模型,用X矩阵的列给定的自变量子集预测矢量y。最初模型中没有自变量,但可以单击自变量来将它们引入到模型或从模型中剔除。
%对于模型中的每个自变量,交互工具用蓝色填充圆表示自变量的最小二乘系数。对于不在模型中的每个自变量,交互工具用绘一个红色填充圆,表示将该自变量添加到模型中时自变量的系数。图中的水平条形表示90%置信区间(彩色)和95%置信区间(黑色)
stepwise(X,y,inmodel,penter,premove)
%指定模型的初始状态和要使用的置信区间。inmodel为长度为X中列数的逻辑矢量,或者为值从1变到X中的列数的索引矢量。inmodel指定包含在初始模型中的自变量,默认时不包含X中的列。pender指定引入自变量的最大p值,默认时为0.05。premove指定剔除自变量的最小p值,默认值为0.10。
%'Stepwise Regression'分析图
%左上部的图形中,对于y轴上的每一项,图中用点表示回归(最小二乘)系数,用水平条表示置信区间。
%蓝色的点表示模型中的项,红色的点表示该项不在模型中。
%右侧有一个表,列出了对应项的回归系数、t统计量和p值。
%不在模型中的项对应的系数是将该项添加到当前模型中以后得到的系数。
%图形下方显示了几个统计量:
%Intercept——常熟项的估计值;
%RMSE——当前模型均方差的平方根;
%R的平方——模型解释的响应变异性的大小;
%调整的R平方——根据残差自由度进行调整以后的R平方统计量;
%F——回归的总F统计量
%P——有关的显著性概率。
%单击图中的条形或表项,可以转换对象项的状态。模型的改变结果与条形的颜色有关。单击蓝色条形,剔除对应项,条形变为红色;单击红色条形,引入对应项,条形变为蓝色。
%选择'Next Step'下面显示的建议步,该步建议的操作时引入统计上最显著的项,或剔除最不显著的项。单击‘Next
Step’按钮,按建议进行操作。
%最终选择较高的回归系数和较小的均方差且变量个数较少的模型为最适合模型。
%默认时,模型中没有引入任何变量,与全回归不同的时,逐步回归的模型中包含常数项。一般用下式计算常熟项:mean(y)-mean(X(:,in))*beta(in)
%假如beta的输出结果为[b0;b1;b2;b3;b4];故引入全部变量的逐步回归的回归结果为y=b1X1+b2X2+b3X3+b4X4+b0
%引入变量X1,X2 :y=b1X1+b2X2+b0