发布网友
共2个回答
热心网友
fz=@(z,x) z(1)*x.^2+z(2)*x+z(3),...
'z','x';
[z,resnorm,resial,exitflag,output] = lsqcurvefit(fz,z0,x,y,[],[],options)
z0为系数矩阵初值
一般评价最小二乘非线性拟合不是用相关性系数,而是用resial,残差或残差平方和
再有一种是用nonfit,很简单的一种非线性回归,不用写函数格式
我没有看清楚,不好意思,所谓偏最小二乘法,就是指在做基于最小二乘法的线性回归分析之前,对数据集进行主成分分析降维,将最后得到的主成分作为输入的x,你可以看一下princomp这个函数是进行主成分分析的
热心网友
利用matlab进行偏最小二乘法数据处理
%matlab程序
clc;clear
Y=[ 0.1 0.5 0.7
0.2 0.6 0.4
0.3 0.7 0.5
0.4 0.6 0.3
0.5 0.8 0.2
0.6 0.3 0.5
0.4 0.7 0.6
0.3 0.5 0.7];
X=[0.2876 0.6173 0.97 1.1936 1.0636 0.7332 0.5441 0.6247 0.7421 0.7052
0.2653 0.5167 0.8403 1.0435 1.008 0.7396 0.5344 0.5675 0.6312 0.5368
0.3833 0.70 1.0544 1.2805 1.2524 0.8886 0.6596 0.6815 0.75 0.6671
0.3957 0.6853 0.9204 1.08 1.0486 0.7999 0.5579 0.5381 0.5698 0.469
0.472 0.7413 1.0124 1.2202 1.2297 0.9699 0.66 0.635 0.6254 0.4978
0.6268 0.9851 1.1633 1.1629 1.0128 0.7123 0.5161 0.482 0.5194 0.4909
0.4921 0.8723 1.2407 1.4583 1.3631 1.0073 0.7341 0.7032 0.8171 0.7228
0.4308 0.8232 1.146 1.309 1.1767 0.8207 0.5852 0.6604 0.7677 0.7237];
X0=[0.40 0.6996 0.8712 1.0159 0.9638 0.7115 0.5112 0.4722 0.5059 0.4343];
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(X,Y);
Ytest = [ones(size(X,1),1) X]*BETA;
resials = Y-Ytest
Yfit=[ones(size(X,1)+1,1) [X;X0]]*BETA
ABC=Yfit(9,1:3)