1. 从input语句键盘输入一组数据(xi,yi),i=1,2,…n。
2。 计算一元线性回归方程y=ax+b的系数a和b,用两种方法计算: 一是公式:a(xx)(yy),byax; (xx)ii2i二是用最小二乘法的公式求出最小值点(a,b),使Q(a,b}min(yiaxib)2
3。 检验回归方程是否有效(用F分布检验)。
4. 把散列点(xi,yi)和回归曲线y=ax+b画在一个图上。
5. 每种计算法都要有计算框图,且每种计算法都要编成一个自定义函数。
function yiyuan clc;
disp('从键盘输入一组数据:'); x=input('please Input data x:’); y=input(’please Input data y:'); disp(’一元线性回归的计算和检验:’); disp('1。公式法’); disp('2.最小二乘'); disp('3.检验'); disp(’0。退出’); global a0 b0; while 3
num=input('选择求解的方法:'); switch num case 1
[a0,b0]=huigui(x,y) case 2
[a0,b0]=zxec(x,y) case 3
break; case 0
return; otherwise
disp(’输入错误,请重先输入!'); end end
X=x';Y=y';
X=[ones(size(X)),X];alpha=0.5; [b,bint,e,rint,stats]=regress(Y,X) if stats(3)〈alpha
disp('有效的x’) end
n=[min(x):0.1:max(x)];
f=a0*n+b0; xlabel(’x','b');ylabel('y’,’r’);legend('散点’,’k'); end
%..。..。。。.........。...。。。。..。.。... function [a0,b0]=huigui(x,y) n=length(x); x1=0;y1=0; for i=1:n
x1=x1+x(i); y1=y1+y(i); end
x0=x1/n; y0=y1/n; a1=0;a2=0; for j=1:n
a1=a1+(x(j)—x0)*(y(j)—y0); a2=a2+(x(j)—x0)*(x(j)—x0); end
a0=a1/a2;
b0=y0—a0*x0;
x2=min(x):0.05:max(x); y2=a0*x2+b0; end %.。。.。。.。..。.。.。。。。.。..。。。。。.。。. function [a0,b0]=zxec(x,y)
%m=length(x);
%R=[x'ones(m,1)];a=R\\y’; A=zeros(2,2); A(2,2)=n; B=zeros(2,1); for p=1:n
A(1,1)=A(1,1)+x(i)*x(i); A(1,2)=A(1,2)+x(i); B(1,1)=B(1,1)+x(i)*y(i); B(2,1)=B(2,1)+y(i); end
A(2,1)=A(1,2); a0=a(1);b0=a(2); end
MATLAB 线性回归
2011—07-03 09:40 二、一元线性回归
2.1.命令 polyfit最小二乘多项式拟合 [p,S]=polyfit(x,y,m)
多项式y=a1xm+a2xm—1+…+amx+am+1
其中x=(x1,x2,…,xm)x1…xm为(n*1)的矩阵; y为(n*1)的矩阵;
p=(a1,a2,…,am+1)是多项式y=a1xm+a2xm—1+…+amx+am+1的系数; S是一个矩阵,用来估计预测误差. 2.2.命令 polyval多项式函数的预测值
Y=polyval(p,x)求polyfit所得的回归多项式在x处的预测值Y; p是polyfit函数的返回值; x和polyfit函数的x值相同。 2.3.命令 polyconf 残差个案次序图
[Y,DELTA]=polyconf(p,x,S,alpha)求polyfit所得的回归多项式在x处的预测值Y及预测值的显著性为1-alpha的置信区间DELTA;alpha缺省时为0.05。
p是polyfit函数的返回值; x和polyfit函数的x值相同; S和polyfit函数的S值相同。
2.4 命令 polytool(x,y,m)一元多项式回归命令
2.5.命令regress多元线性回归(可用于一元线性回归) b=regress( Y, X )
[b, bint,r,rint,stats]=regress(Y,X,alpha) b 回归系数
bint 回归系数的区间估计 r 残差
rint 残差置信区间
stats 用于检验回归模型的统计量,有三个数值:相关系数R2、F值、与F对应的概率p,相关系数R2越接近1,说明回归方程越显著;F 〉 F1-α(k,n—k-1)时拒绝H0,F越大,说明回归方程越显著;与F对应的概率p 时拒绝H0,回归模型成立. Y为n*1的矩阵;
X为(ones(n,1),x1,…,xm)的矩阵; alpha显著性水平(缺省时为0。05)。
三、多元线性回归
3.1.命令 regress(见2。5) 3.2.命令 rstool 多元二项式回归 命令:rstool(x,y,’model', alpha) x 为n*m矩阵 y为 n维列向量
model 由下列4个模型中选择1个(用字符串输入,缺省时为线性模型): linear(线性):
purequadratic(纯二次): interaction(交叉): quadratic(完全二次):
alpha 显著性水平(缺省时为0.05)
返回值beta 系数 返回值rmse剩余标准差 返回值residuals残差
四、非线性回归 4.1.命令 nlinfit
[beta,R,J]=nlinfit(X,Y,’’model’,beta0)
X 为n*m矩阵 Y为 n维列向量 model为自定义函数 beta0为估计的模型系数 beta为回归系数 R为残差 J
4.2.命令 nlintool
nlintool(X,Y,’model’,beta0,alpha) X 为n*m矩阵 Y为 n维列向量 model为自定义函数 beta0为估计的模型系数
alpha显著性水平(缺省时为0。05)
4.3.命令 nlparci
betaci=nlparci(beta,R,J) beta为回归系数 R为残差 J
返回值为回归系数beta的置信区间
4.4.命令 nlpredci
[Y,DELTA]=nlpredci(‘model',X,beta,R,J)
Y为预测值
DELTA为预测值的显著性为1—alpha的置信区间;alpha缺省时为0。05。 X 为n*m矩阵 model为自定义函数 beta为回归系数 R为残差 J