实用标准文案精彩文档Matlab实现多元回归实例(一)一般多元回归一般在生产实践和科学研究中,人们得到了参数,,nxxx1和因变量y的数据,需要求出关系式yfx,这时就可以用到回归分析的方法。如果只考虑f是线性函数的情形,当自变量只有一个时,即,,,nxxx1中n1时,称为一元线性回归,当自变量有多个时,即,,,nxxx1中n2时,称为多元线性回归。进行线性回归时,有4个基本假定:①因变量与自变量之间存在线性关系;②残差是独立的;③残差满足方差奇性;④残差满足正态分布。在Matlab软件包中有一个做一般多元回归分析的命令regeress,调用格式如下:[b,bint,r,rint,stats]=regress(y,X,alpha)或者[b,bint,r,rint,stats]=regress(y,X)此时,默认alpha=0.05.这里,y是一个1n的列向量,X是一个1nm的矩阵,其中第一列是全1向量(这一点对于回归来说很重要,这一个全1列向量对应回归方程的常数项),一般情况下,需要人工造一个全1列向量。回归方程具有如下形式:011mmyxx其中,是残差。在返回项[b,bint,r,rint,stats]中,①01mb是回归方程的系数;②intb是一个2m矩阵,它的第i行表示i的(1-alpha)置信区间;③r是1n的残差列向量;④intr是2n矩阵,它的第i行表示第i个残差ir的(1-alpha)置信区间;注释:残差与残差区间杠杆图,最好在0点线附近比较均匀的分布,而不呈现一定的规律性,如果是这样,就说明回归分析做得比较理想。⑤一般的,stast返回4个值:2R值、F_检验值、阈值f,与显著性概率相关的p值(如果这个p值不存在,则,只输出前3项)。注释:实用标准文案精彩文档(1)一般说来,2R值越大越好。(2)人们一般用以下统计量对回归方程做显著性检验:F_检验、t_检验、以及相关系数检验法。Matlab软件包输出F_检验值和阈值f。一般说来,F_检验值越大越好,特别的,应该有F_检验值f。(3)与显著性概率相关的p值应该满足palpha。如果palpha,则说明回归方程中有多余的自变量,可以将这些多余的自变量从回归方程中剔除(见下面逐步回归的内容)。这几个技术指标说明拟合程度的好坏。这几个指标都好,就说明回归方程是有意义的。例1(Hamilton,1987)数据如下:序号YX1X2112.372.239.66212.662.578.94312.003.874.40411.933.106.64511.063.394.91613.032.838.52713.133.028.04811.442.149.05912.863.047.711010.843.265.111111.203.395.051211.562.358.511310.832.766.591412.633.904.901512.463.166.96第一步分析数据在Matlab软件包中分析是否具有线性关系,并作图观察,M—文件opt_hanmilton_1987:x1=[2.23,2.57,3.87,3.10,3.39,2.83,3.02,2.14,3.04,3.26,3.39,2.35,2.76,3.90,3.16];x2=[9.66,8.94,4.40,6.64,4.91,8.52,8.04,9.05,7.71,5.11,5.05,8.51,6.59,4.90,6.96];y=[12.37,12.66,12.00,11.93,11.06,13.03,13.13,11.44,12.86,10.84,11.20,11.56,10.83,12.63,12.46];corrcoef(x1,y);corrcoef(x2,y);plot3(x1,x2,y,'*');得到结果:ans=1.00000.0025实用标准文案精彩文档0.00251.0000ans=1.00000.43410.43411.0000即,corrcoef(x1,y)=0.0025,corrcoef(x2,y)=0.4341,说明没有非常明显的单变量线性关系。图形如下:也看不出有线性关系,但是,旋转图形,可以看出所有点几乎在一个平面上。这说明,,1,2yxx在一个平面上,满足线性关系:1122axaxbya或者,换成一个常见的形式01122yaaxax其中,是残差。于是,在Matlab软件包中做线性多元回归,写一个M—文件opt_regress_hamilton:x1=[2.23,2.57,3.87,3.10,3.39,2.83,3.02,2.14,3.04,3.26,3.39,2.35,2.76,3.90,3.16]';x2=[9.66,8.94,4.40,6.64,4.91,8.52,8.04,9.05,7.71,5.11,5.05,8.51,6.59,4.90,6.96]';y=[12.37,12.66,12.00,11.93,11.06,13.03,13.13,11.44,12.86,10.84,11.20,11.56,10.83,12.63,12.46]';e=ones(15,1);x=[e,x1,x2];[b,bint,r,rint,stats]=regress(y,x,0.05)rcoplot(r,rint)其中,rcoplot(Residualcaseorderplot)表示画出残差与残差区间的杠杆实用标准文案精彩文档图。执行后得到:b=-4.51543.09701.0319bint=-4.6486-4.38223.07033.12381.02381.0399r=0.0113-0.0087-0.0102-0.00690.0101-0.0106-0.0037-0.01050....