[b,bint,r,rint,stats]=regress(Y,X,alpha)
这里Y, X为列向量,alpha为显著性水平(缺省时设定为005),b,bint为回归系数估计值和
它们的置信区间,r,rint 为残差(向量)及其置信区间,stats 是用于检验回归模型的统计量。
clc,clearx=[2003;2004;2005;2006;2007;2008;2009;2010];
y=[192;195;197;201;205;208;212;223];
fun=@(a,x)a(1)+a(2)x; %y=a+bx
a=lsqcurvefit(fun,[0,0],x,y);
b=a(2)
a=a(1)
xi=2003:01:2010;
yi=a+bxi;
plot(x,y,'o',xi,yi)
b =
00384
a =
-750000
剩余平方和 Q = 0004082
标准误差 Sigma = 0026084
相关指数 RR = 0943685
figure;
t=[1999 2000 2001 2002 2003 2004 2005 2006 2007 2008];
c=[39972 50697 75498 9894 120248 147329 1525 171787 191145 200425];
a=polyfit(t,c,2);
ti=1999:1:2008;
ci=polyval(a,ti);
plot(t,c,'go','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6);
xlabel('年份');
ylabel('相关数据');
axis([1999 2008 350 2100])
hold on
plot(ti,ci,'linewidth',2,'markersize',16)
legend('原始数据点','拟合曲线')
plot(t,c,'-r')
sprintf('曲线方程:C=%05gT^2+(%05g)T+(%05g)',a(1),a(2),a(3))
曲线方程:C=-55245T^2+(22324)T+(-2255e+007)
这是2次线性相关
figure;
t=[1999 2000 2001 2002 2003 2004 2005 2006 2007 2008];
c=[39972 50697 75498 9894 120248 147329 1525 171787 191145 200425];
a=polyfit(t,c,1);
ti=1999:1:2008;
ci=polyval(a,ti);
plot(t,c,'go','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6);
xlabel('年份');
ylabel('相关数据');
axis([1999 2008 350 2100])
hold on
plot(ti,ci,'linewidth',2,'markersize',16)
legend('原始数据点','拟合曲线')
plot(t,c,'-r')
sprintf('曲线方程:C=+(%05g)T+(%05g)',a(1),a(2),)
曲线方程:C=+(18766)T+(-37473e+005)
这是一次的线性相关
x=[1,2,3,4,5,6,7,8,9,10]
y=[1,2,3,4,5,6,7,8,9,10]
z=[1,2,3,4,5,6,7,8,9,10]
Z=z';
X=[x;y]';
%c=ax+by+z z=c-ax-by
B=regress(Z,[ones(length(x),1) X])
c=B(1),a=-B(2),b=-B(3)
结果:
B =
00000
10000
0
c =
30337e-016
a =
-1
b =
0
提供的数据是假设的,不好。
用MATLAB做线性及非线性回归的主要函数有:1、线性回归 函数(解决线性回归问题),如regress()、polyfit(),主要书写格式为
a= regress(y,X) %拟合线性回归函数的系数,a系数
p=polyfit(x,y,n); %拟合多项式的系数,n最大项数为9
2、非线性回归函数(解决非线性回归问题),如lsqnonlin()、lsqcurvefit()、nlinfit (),主要书写格式为
a =lsqnonlin(自定义函数,初值),a系数
a=lsqcurvefit(自定义函数,初值,自变量,因变量),a系数
a = nlinfit(自变量,因变量,自定义函数,初值),a系数
3、比较详细的内容,可以通过help()帮助函数来查找。
首先
x1'
是转置的意思。
比如x1为五行三列,x1'就是三行五列
size(x1')就是求出x1'的行列数。如果x1是五行三列,刚size(x1')为[3,5]即三行五列
ones(size(x1'))就是产生一个全一的矩阵,矩阵的行列数与size(x1')相同
实际上,它就是产生一个矩阵,将x1'里面的所有元素换成1
x=[282,202,157,128,108,094];
z=[40,559,628,662,687,706];
Z=z';
X1=[x;x]';
%c=ax-bx+z z=c-ax+bx
B1=regress(Z,[ones(length(x),1) X1])
c=B1(1),a=-B1(2),b=B1(3)
X2=[x]';
%c=ax-bx+z z=c-ax+bx
B2=regress(Z,[ones(length(x),1) X2])
c=B2(1),k=-B2(2)%k=-a+b
结果:
B1 =
867463
-160945
0
c =
867463
a =
160945
b =
0
B2 =
867463
-160945
c =
867463
k =
160945
这个题不严谨,严格说,是一元线性回归。
以上就是关于使用matlab计算回归方程全部的内容,包括:使用matlab计算回归方程、用matlab求一元线性回归 非常急、知道一组数据,如何用matlab的线性回归和线性拟合求出两者的关系函数,求代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)