首页 > 其他分享 >Matlab regression

Matlab regression

时间:2022-12-02 18:33:26浏览次数:49  
标签:plot 10 indx ones Matlab regression size

 

% linear regression
% least squares fitting a straight line
load LinearRegressData.mat
plot(x,y,'.')
X=[ones(size(x)),x];
a=X\y

a =

    5.2745
    0.9950
clear
load jump.mat
plot(x,y,'.')
X=[ones(size(x)),x];
a=X\y

a =

   -0.0095
    0.7465
Y=-0.0095 + 0.7465*x;
plot(x,Y,'.')
x1=x;
x2=x.^2;
x3=x.^3;
X=[ones(size(x)),x1,x2,x3];
a=X\y

a =

   -0.0226
    1.3906
    0.0389
   -1.0536
yp=X*a;
plot(x,y,'o',x,yp,'-')
% weighted factors in linear regression
hold on
indx=find(x>0);
X(indx,:)=X(indx,:)/10;
yw=y;
yw(indx)=yw(indx)/10;
aw=X\yw;
ypw=aw(1)+aw(2)*x;
plot(x,ypw,'g-')
clear
load DIC_O2.mat
x=DIC;
y=O2;
plot(x,y,'.')
xlabel('DIC')
ylabel('O_2')
X=[ones(size(x)),x];
a=X\y;
hold on
yp=X*a;
plot(x,yp,'-')
X=[ones(size(x)),x];
Y=[ones(size(x)),y];
b=Y\x;
xp=Y*b;
plot(xp,y,'m-')

  

>> % type 2 regression
>> c(2)=sqrt(a(2)/b(2))

c =

         0    0.3559

>> c(2)=-c(2)

c =

         0   -0.3559

>> c(1)=mean(y)-c(2)*mean(x)

c =

  931.6370   -0.3559
>> yII=c(1)+c(2)*x;
>> plot(x,yII,'g-')

% multidimensional regression

  

  

 

 

function y=modfunc(a,x)
y=a(1)+a(2)*exp(-(x-a(3)).^2./(2.*a(4).^2));

  

>> load gauss_data.mat
>> plot(x,y,'o')
>> a0=[1,10,4,1];
>> hold on
>> ezplot(@(x)modfunc(a0,x),[0,10])
>> a=nlinfit(x,y,@modfunc,a0)

a =

    0.6731   10.0709    4.4948    0.7142

>> ezplot(@(x)modfunc(a,x),[0,10])
>> [a,R,J,CovB]=nlinfit(x,y,@modfunc,a0);

    >> err=sqrt(diag(CovB))

err =

0.0828
0.2318
0.0216
0.0202


  

 

标签:plot,10,indx,ones,Matlab,regression,size
From: https://www.cnblogs.com/physical-oceanography/p/16945320.html

相关文章