matlab 多元线性回归

来源:互联网 发布:住建部资质申报软件 编辑:程序博客网 时间:2024/06/11 19:01
概述

根据图形(实际点),选配一条恰当的函数形式(类型)---需要数学理论与基础和经验。(并写出该函数表达式的一般形式,含待定系数)------选用某条回归命令求出所有的待定系数。所以可以说,回归就是求待定系数的过程(需确定函数的形式)

1、[b,bint,r,rint,s]=regress(y,X,alpha)或者regress(y,x)
输入 y :因变量(列向量) X:自变量组成的矩阵,并且x要在最前面额外添加全1/对应于常数项alpha:显著性水平(缺省时定位0.05,即置信水平95%,alpha不影响b,只影响bint(区间估计)。它越小,即置信度越高,则bint范围越大。显著水平越高,则区间就越小
输出:b:多元线性回归方程的各个系数(含常数项,第一项为常数项)bint:b的置信区间(回归系数的区间估计) r:残差(列向量)rint:r的置信区间 stats:用于检验回归模型的统计量,有四个数值:相关系数r2F值、与F对应的概率p和残差的方差(前两个越大越好,后两个越小越好)
2、rcplot(r.rint)
残差分析,作残差图
如下图:

matlab <wbr>多元线性回归
每条线长度表示的是置信区间,小圆圈代表残差点。
残差图中红色线条表示异常点,应剔除再次进行绘图 
从残差图可以看出,除第二个和第十个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型能较好的符合原始数据,而这两个数据可视为异常点(而剔除)
3、实例分析
如线性回归模型 y=b0+b1X1+b2X2+b3X3+e
回归系数 b0-b3,由数据估计,e是随机误差
y=b0+b1X1+b2X2+b3X3+b4X4+b5X5+b6X6+e1 
y=[144 215 138 145 162 142 170 124 158 154 162 150 140 110 128130 135 114 116 124 136 142 120 120 160 158 144 130 125 175];
x1=[39 47 45 47 65 46 67 42 67 56 64 56 59 34 42 48 45 18 2019 36 50 39 21 44 53 63 29 25 69];
x2=[24.2 31.1 22.6 24.0 25.9 25.1 29.5 19.7 27.2 19.3 28.025.8 27.3 20.1 21.7 22.2 27.4 18.8 22.6 21.5 25.0 26.2 23.5 20.327.1 28.6 28.3 22.0 25.3 27.4];  
x3=[0       0    1       0    1       1    0       0    0       0    1       0    0 ...
0     0    1       0    1       0    1       1];
X=[ones(16,1), x1',x2',x3'];%ones(16,1) 添加常数列
[b,bint,r,rint,stats]=regress(y',X);
b,bint,stats
rcoplot(r,rint)
4、检验
怎么对多元线性回归模型的回归系数β做t检验和F检验?
进行多元线性回归统计数F, t 测验的小程序:
clear,clc
x=rand(50,10);y=rand(50,1); % example
[n,k]=size(x);
X=[ones(n,1),x];%构建结构阵X,
A=X'*X; %求算信息阵A,
C=inv(A); %求算信息阵的逆阵,
b=X\y, % 求算回归统计数向量,其中第一行为回归截距a,
RSS=y'*y-b'*X'*y, %求算离回归平方和,
MSe=RSS/(n-k-1),%求算离回归方差,
Up=b.*b./diag(C);%求算偏回归平方和,其中第一行是a与0差异的偏平方和,
F=Up/MSe,%F测验,其中第一行为a与0差异的F值,
sb=sqrt(MSe*diag(C)); %求算回归统计数标准误,
t=b./sb, % 回归统计数的 t 测验,其中第一行为a与0差异的t测验值。
[t, t.^2, F],%验证t^2=F
SSy=var(y)*(n-1)
R2=(SSy-RSS)/SSy

注:r^2(决定系数)越大(接近于1),它们之间的关系越密切,拟合的效果越好。当然,对于复杂的多变数非线性关系的分析,统计上应以离回归方差(MSe)最小为佳。MSe=RSS/(n-k-1),RSS为离回归平方和,n为观察值组数,k为模型的效应项数(不包括常数项)。

部分摘自网络