clear,clc
X=xlsread('data');%输入数据
x1=X(:,1);x2=X(:,2);x3=X(:,3);y=X(:,4)-500;
fx=@(b,x1,x2,x3)(b(1)+b(2)*x1+b(3)*x2+b(4)*x3+b(5)*x1.^2+b(6)*x2.^2+b(7)*x3.^2+b(8)*x1.*x2+b(9)*x1.*x3+b(10)*x2.*x3)./(1+b(11)*x1+b(12)*x2+b(13)*x3+b(14)*x1.*x2+b(15)*x1.*x3+b(16)*x2.*x3);
fx2=@(b,X)(b(1)+b(2)*X(:,1)+b(3)*X(:,2)+b(4)*X(:,3)+b(5)*X(:,1).^2+b(6)*X(:,2).^2+b(7)*X(:,3).^2+b(8)*X(:,1).*X(:,2)+b(9)*X(:,1).*X(:,3)+b(10)*X(:,2).*X(:,3))./(1+b(11)*X(:,1)+b(12)*X(:,2)+b(13)*X(:,3)+b(14)*X(:,1).*X(:,2)+b(15)*X(:,1).*X(:,3)+b(16)*X(:,2).*X(:,3));
X=[x1,x2,x3];
b=[-176.5018083 13.88239877 -187.3799167 -110.7606078 -21.2028137 -5.808768406 -6.834844845 334.5716365 198.2603636 6.232153986 -0.3868552461 0.2198642871 1.120280285 1.434581121 0.5084595541 -0.09072968599];
for l=1:5
b=lsqcurvefit(fx2,b,X,y);
b=nlinfit(X,y,fx2,b);
end
b
m1=mean(x1);m2=mean(x2);m3=mean(x3);
r1=range(x1); r2=range(x2);r3=range(x3);ry=range(y);
x1a=min(x1);x1b=max(x1);
x2a=min(x2);x2b=max(x2);
x3a=min(x3);x3b=max(x3);
ya=min(y);yb=max(y);
n=length(y);
figure(1),clf
plot3(x1,x2,y,'o')
stem3(x1,x2,y)
pause(.0001)
hold on
[x11,x22]=meshgrid(x1a:r1/75:x1b,x2a:r2/75:x2b);
y1=fx(b,x11,x22,m3);
surf(x11,x22,y1)
axis([x1a x1b x2a x2b ya yb])
alpha(.85)
shading interp
axis tight
xlabel('X1'),ylabel('X2'),zlabel('Y')
pause(1.0001)
figure(2),clf
[x11,x33]=meshgrid(x1a:r1/75:x1b,x3a:r3/75:x3b);
plot3(x1,x3,y,'o')
stem3(x1,x3,y)
pause(.0001)
hold on
y2=fx(b,x11,m2,x33);
surf(x11,x33,y2)
axis([x1a x1b x3a x3b ya yb])
alpha(.85)
shading interp
axis tight
xlabel('X1'),ylabel('X3'),zlabel('Y')
pause(1.0001)
figure(3),clf
plot3(x2,x3,y,'o')
stem3(x2,x3,y)
pause(.0001)
hold on
[x22,x33]=meshgrid(x2a:r2/75:x2b,x3a:r3/75:x3b);
y3=fx(b,m1,x22,x33);
surf(x22,x33,y3)
axis([x2a x2b x3a x3b ya yb])
alpha(.85)
shading interp
axis tight
xlabel('X2'),ylabel('X3'),zlabel('Y')
pause(1.0001)
y1=fx(b,x1,x2,x3);
RSS=(y-y1)'*(y-y1)
SSy=var(y)*(n-1)
Rsquare=(SSy-RSS)/SSy;
r2=vpa(Rsquare,8)