Skip to content

Commit fe4ccae

Browse files
committed
add Partial_least_squares_regression_analysis
1 parent fe42e8a commit fe4ccae

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
% . P314 . 例11.1 . 关于体能训练的数据进行偏最小二乘回归建模
2+
clc,clear
3+
ab0=load('pz.txt'); %原始数据存放在纯文本文件pz.txt中
4+
mu=mean(ab0), sig=std(ab0) %求均值和标准差
5+
rr=corrcoef(ab0) %求相关系数矩阵
6+
ab=zscore(ab0); %数据标准化
7+
a=ab(:,[1:3]);b=ab(:,[4:end]); %提出标准化后的自变量和因变量数据
8+
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b)
9+
contr=cumsum(PCTVAR,2) %求累积贡献率
10+
xw=a\XS %求自变量提出成分系数,每列对应一个成分,这里xw等于stats.W
11+
yw=b\YS %求因变量提出成分的系数
12+
ncomp=input('请根据PCTVAR的值确定提出成分对的个数ncomp=');
13+
[XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] =plsregress(a,b,ncomp)
14+
n=size(a,2); m=size(b,2);%n是自变量的个数,m是因变量的个数
15+
beta3(1,:)=mu(n+1:end)-mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end); %原始数据回归方程的常数项
16+
beta3([2:n+1],:)=(1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:) %计算原始变量x1,...,xn的系数,每一列是一个回归方程
17+
bar(BETA2','k') %画直方图
18+
yhat=repmat(beta3(1,:),[size(a,1),1])+ab0(:,[1:n])*beta3([2:end],:) %求y1,..,ym的预测值
19+
ymax=max([yhat;ab0(:,[n+1:end])]); %求预测值和观测值的最大值
20+
%下面画y1,y2,y3的预测图,并画直线y=x
21+
figure, subplot(2,2,1)
22+
plot(yhat(:,1),ab0(:,n+1),'*',[0:ymax(1)],[0:ymax(1)],'Color','k')
23+
legend('单杠成绩预测图'), xlabel('预测数据'), ylabel('观测数据')
24+
subplot(2,2,2)
25+
plot(yhat(:,2),ab0(:,n+2),'O',[0:ymax(2)],[0:ymax(2)],'Color','k')
26+
legend('弯曲成绩预测图'), xlabel('预测数据'), ylabel('观测数据')
27+
subplot(2,2,3)
28+
plot(yhat(:,3),ab0(:,end),'H',[0:ymax(3)],[0:ymax(3)],'Color','k')
29+
legend('跳高成绩预测图'), xlabel('预测数据'), ylabel('观测数据')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
% . P318 . 例11.2 . 为研究交通运输业和旅游业之间的关系,拟运用偏最小二乘法分析
2+
clc, clear,format long g %长小数的显示方式
3+
ab0=load('you.txt');
4+
mu=mean(ab0);sig=std(ab0); %求均值和标准差
5+
ab=zscore(ab0); %数据标准化
6+
a=ab(:,[1:7]);b=ab(:,[8:end]);
7+
ncomp=2; %试着选择成分的对数
8+
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats]=plsregress(a,b,ncomp)
9+
contr=cumsum(PCTVAR,2) %求累积贡献率
10+
n=size(a,2); m=size(b,2); %n是自变量的个数,m是因变量的个数
11+
BETA2(1,:)=mu(n+1:end)-mu(1:n)./sig(1:n)*BETA([2:end],:).*sig(n+1:end); %原始数据回归方程的常数项
12+
BETA2([2:n+1],:)=(1./sig(1:n))'*sig(n+1:end).*BETA([2:end],:) %计算原始变量x1,...,xn的系数,每一列是一个回归方程
13+
format %恢复到短小数的显示方式
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
191 36 50 5 162 60
2+
189 37 52 2 110 60
3+
193 38 58 12 101 101
4+
162 35 62 12 105 37
5+
189 35 46 13 155 58
6+
182 36 56 4 101 42
7+
211 38 56 8 101 38
8+
167 34 60 6 125 40
9+
176 31 74 15 200 40
10+
154 33 56 17 251 250
11+
169 34 50 17 120 38
12+
166 33 52 13 210 115
13+
154 34 64 14 215 105
14+
247 46 50 1 50 50
15+
193 36 46 6 70 31
16+
202 37 62 12 210 120
17+
176 37 54 4 60 25
18+
157 32 52 11 230 80
19+
156 33 54 15 225 73
20+
138 33 68 2 110 43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
4252 87555 5112.75 758.82 6.39 102 1638.38 94796 301122110 22895 5555
2+
4986 94829 5758.79 817.54 6.44 120.74 2112.7 93308 1204583 22573 5630
3+
6222 100448 6347.84 842.56 6.945 126.02 2391.18 95085 1257332 20545 5755
4+
7326 108830 7279.56 923.24 7.19 140.99 2831.92 100164 1269004 19151 6094
5+
8993 164336 8344.39 1047.26 7.44 162.24 3175.54 105073 1347392 19386 6722
6+
10532 192408 8901.29 1213.44 7.84 177.92 3522.36 105155 1402798 18645 7524
7+
11552 229147 9790.83 1660.23 8.78 203.85 3878.36 105606 1475257 18693 8594
8+
13361 249802 9166.21 2022.19 8.7 174.06 3442.27 97260 1464335 17142 8759
9+
14927 246219 10903.8218 2885 11.02 257.39 4710.71 111764 1624526 19040 12123
10+
16245 248919 12029.23 3102.63 12.12 292.96 5285.86 115583 1697381 20227 13827
11+
18475 293318 12494.21 3452.36 13.94 339.49 6229.74 125655.7958 1860487 22047 15967.8448

0 commit comments

Comments
 (0)