Matlab中如何实现偏最小二乘法

发布网友

我来回答

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)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com