Você está na página 1de 22

FACULDADE DE CINCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

Anlise de Dados Industriais


Tcnicas Avanadas de Modelao e Simulao

Antnio Rosa & Lus Gomes
Coimbra, 12 de Junho de 2012














Resumo

Este trabalho tem como objectivo conduzir uma anlise exploratria dos componentes
principais (PCA) para um conjunto de dados de treino X e a estimao de um modelo de
previso do composto em causa, usando os mtodos de RLM (com todas as variveis e usando
estratgias de seleco de variveis), PCR e PLS (tcnicas de seleco de dimenses).
Pela comparao dos parmetros obtidos dos diversos mtodos utilizados, verificou-se que o
mtodo RLM foi aquele que apresentou melhor capacidade de ajuste, com R
2
= 0.9626 e RMSEC
= 0.0109. Em relao a capacidade de previso da resposta (Y) no conjunto de teste, o mtodo
de PLS foi aquele que apresentou os melhores valores, ou seja, R
2
prev
mais elevado (R
2
prev
=
0.7801) e menor valor de RSMEP (RSMEP = 0.0265).

















ndice

Resumo .................................................................................................................................................... i
Anlise de Componentes Principais (PCA) ................................................................................................ 1
Enunciado do problema ....................................................................................................................... 1
Nmero de componentes mais significantes a reter............................................................................. 1
Regresso Linear Mltipla (RLM) ............................................................................................................. 6
Regresso dos Componentes Principais (PCR) .......................................................................................... 8
Partial Least Squares (PLS) ....................................................................................................................... 8
Comparao dos vrios modelos de estimao (RLM, PCR e PLS) ............................................................. 9
Anexo I .................................................................................................................................................. 10
Script MATLAB ................................................................................................................................... 12














1

Anlise de Componentes Principais (PCA)

A anlise de componentes principais (PCA) um dos mtodos estatsticos mais usados
quando se pretendem analisar dados multivariados. Este mtodo tem como objectivo principal
reduzir o nmero de variveis, ou seja, verificar se existe um pequeno nmero das primeiras
componentes principais que seja responsvel por explicar uma proporo elevada da variao
total associada ao conjunto original.
Enunciado do problema

Dispe de dois conjuntos de dados relativos a varias misturas contendo diferentes composies
de 10 hidrocarbonetos poliaromticos (PAH9): um conjunto de dados de treino, para a
estimao dos parmetros dos modelos a desenvolver, e outro para o seu teste, ou seja, para
anlise do desempenho final do modelo, em condies reais, usando dados no utilizados na
estimao do modelo.
Cada mistura, com uma dada composio, foi submetida a uma anlise de espectroscopia
UV/Vis, da qual resultou um conjunto de valores de absorvncia para 27 comprimentos de
onda, de 220 a 350 nm, com intervalos de 5 nm. As medies para as diferentes misturas
analisadas constituem as linhas da matriz X, dos regressores. Esta matriz tem, como colunas, as
variveis que neste caso correspondem aos vrios comprimentos de onda, que aparecem
indicados na primeira linha do ficheiro de dados distribudo.
Para cada uma destas misturas (linhas Xs), conhece-se a composio de um composto da
mistura (Y), para a qual se deseja construir um modelo de previso.
Nmero de componentes mais significantes a reter

Existem vrios mtodos utilizados para determinar o nmero de componentes a reter, tais
como: critrio de valor prprio-1 (eigenvalue-one criterion), scree test, proprortion of variance
accounted for, etc.. Neste trabalho o critrio utilizado ser o critrio de valor prprio-1
2

(tambm conhecido por critrio de Kaiser), que um dos critrios mais comum na resoluo
deste tipo de problemas. Com este tipo de abordagem os componentes a reter so aqueles que
possuem valores prprios superiores a 1. Cada varivel observado contribui com uma unidade
de varincia da varincia total do conjunto de dados. Se um componente possuir valor prprio
superior a 1 significa que a correspondente componente principal est a explicar mais
variabilidade que a originalmente contida numa s varivel. Por outro lado se um determinado
valor prprio for inferior a 1 significa que o correspondente componente no importante.
Na figura 1 encontra-se representado os valores prprios em funo do nmero de
componentes normalizados.

Figura 1 Valores prprios em funo do nmero de componentes normalizados.




0 5 10 15 20 25 30
-5
0
5
10
15
20
25
Nmero de Componentes
V
a
l
o
r
e
s

P
r

p
r
i
o
s

(

Recta = 1
3

1 2 3 4
0
10
20
30
40
50
60
70
80
90
100
Principal Components
V
a
r
i
a
n
c
e

E
x
p
l
a
i
n
e
d

(
%
)
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Pela anlise do grfico da figura 1, baseando no critrio valor prprio-1, o nmero de
componentes principais a reter ser, ento, de quatro (4) componentes principais.











Figura 2 Varincia explicada pelos 4 componentes principais.

A partir da figura 2 e da tabela dos valores prprios (ver anexo I), pode verificar-se que o
primeiro componente por si s, explica 77.60% da varincia total, o segundo componente
9.42%, o terceiro componente 4.91% e por fim o quarto componente explica 3.97%. Isto
significa que a percentagem da varincia cumulativa dos componentes 1, 2, 3 e 4 de 95.91%.

Na figura 3 e 4, esto representados os valores de loadings e scores autoescalonadas,
respectivamente, obtidos pelo modelo PCA.



4

0.12
0.14
0.16
0.18
0.2
0.22
-0.4
-0.2
0
0.2
0.4
0.6
-0.2
0
0.2
0.4
0.6
PC1(77.60%)
PC2(9.42%)
P
C
3
(
4
.
9
1
%
)











Figura 3 Representao grfica dos loadings combinados.

Os loadings contem informao sobre a relao entre as variveis. Estes valores para cada
componente principal escolhido traduzem-se no co-seno do ngulo que o eixo correspondente
a cada varivel faz com o componente principal em questo. As variveis importantes para um
certo comonente principal apresentam um pequeno ngulo com o seu eixo e por outro lado as
variveis que fazem ngulos de 90 com um componente principal no so importantes para
este componente principal.
As variveis distantes da origem so importantes no modelo de PCA.




5

-10
-5
0
5
10
-4
-2
0
2
4
-3
-2
-1
0
1
2
3
PC1(77.60%)
PC2 (9.42%)
P
C
3

(
4
.
9
1
%
)











Figura 4 Representao grfica dos Scores combinados.

Os scores correspondem s direces ortogonais de maior variabilidade das variveis e
permitem conhecer as relaes entre as amostras, bem como identificar possveis outliers.
Como se pode verificar na figura 4, no existe nenhuma observao distante do centro dos
dados face s distncias das restantes observaes, o que nos permite concluir que a partida
no h existncia de qualquer outilier. Este facto pode ser comprovado, analisando o grfico da
figura 5.
As observaes que no so bem explicadas pelo modelo PCA podem ser identificadas pela
representao grfica do quadrado da distncia ao subespao PCA (quadrado residual) como
representado na figura 5.


6

0 5 10 15 20 25
0
0.5
1
1.5
2
2.5
3
3.5
4
Observaes
Q
r
e
s
25
9











Figura 5 Quadrado dos resduos em funo do nmero de observaes.

Pela anlise do grfico da figura 5, pode verificar que existem duas observaes suspeitas de
outliers, nomeadamente a observao nmero 9 e nmero 25, respectivamente. Neste caso
seria necessrio recorrer a uma anlise mais aprofundada para a sua confirmao. Contudo,
no se considerou que estas observaes se traduzem em outliers.
Regresso Linear Mltipla (RLM)

Uma regresso linear ilustra a relao entre a varivel dependente e a varivel dependente
baseando na seguinte equao:



(1)
Onde:

Intercepo na origem;
7

Coeficientes de regresso parciais;


Erro
Escrevendo a equao na notao matricial, temos:
[

] = [

] [

] + [

]

Como temos mais variveis do que observaes, ento a matriz X no invertvel, por isso
impossvel determinar os coeficientes de regresso (
j
) por este modelo se considerarmos
todas as variveis e tambm porque h elevada colinearidade nos dados, uma vez que obteve-
se pelo menos um valor de VIF superior a 10 (VIF> 10), o que faz com que os parmetros
tenham maior varincia (so mais instveis).
VIF (Variance Inflation Factor):
(

)


(2)
O problema de colinearidade pode ser contornado utilizando vrios mtodos como:
Mtodos de seleco de variveis;
Mtodos de projeco;
Mtodos de encolhimento.
No presente trabalho foi utilizado o mtodo de seleco de variveis, onde o princpio baseia-se
em seleccionar apenas as variveis que explicam melhor a variabilidade de y. Para isso
recorreu-se a funo interna do MATLAB stepwisefit.
As variveis seleccionadas pela funo stepwisefit foram: x [:, 1 3 4 7 11 14 16 21 22 23 24], ou
seja, apenas estas variveis sero utilizadas no modelo de previso.
8

0 2 4 6 8 10 12 14 16 18 20
0
0.02
0.04
0.06
0.08
0.1
0.12
Number of dimensions
R
M
S
E
C
,

R
M
S
E
C
V


RMSEC
RMSECV
Regresso dos Componentes Principais (PCR)

O procedimento semelhante com o mtodo de RLM, s que desta feita o x substitudo por T
(scores). O modelo de PCR baseia na regresso, mas sem o problema de colinearidade dado que
os scores so perpendiculares entre si.
Como no mtodo de Regresso Linear Mltipla, foi utilizado a funo interna stepwisefit do
MATLAB, mas neste caso em vez das variveis foram o scores. E os scores seleccionados foram:
T [:, 5 6 7 8 9 10 21].
Partial Least Squares (PLS)

Neste mtodo fez-se, primeiramente, o processamento dos dados de treino e teste,
respectivamente. Seguidamente utilizou-se a funo sp_crossval _pls (programa distribudo
pelo professor), ou seja, utilizando a metodologia de validao cruzada, para a seleco do
nmero mximo de dimenses a considerar, como se pode verificar no esquema da figura 7.










Figura 7 RMSEC e RMSECV em funo do nmero de dimenses.
9

A partir da anlise do valor de RMSECV da figura 7, pode-se verificar que o nmero de variveis
latentes a utilizar de 8.

Comparao dos vrios modelos de estimao (RLM, PCR e PLS)

Na tabela 1 esto apresentadas os parmetros obtidos dos vrios modelos de regresso (RLM,
PCR e PLS) para o conjunto treino e os parmetros da sua capacidade de previso da resposta
no conjunto de dados de teste.

Tabela 1 Parmetros obtidos dos vrios modelos de regresso utilizados para o conjunto
treino e a sua capacidade de previso da resposta y no conjunto de teste.
Treino Teste
R
2
RMSEC R
2
prev
RMSEP
RLM 0.9626 0.0109 0.4541 0.0418
PCR 0.9204 0.0160 0.1282 0.0528
PLS 0.9290 0.0151 0.7801 0.0265


Pela comparao dos parmetros obtidos dos diversos mtodos utilizados, verificou-se que o
mtodo RLM foi aquele que apresentou melhor capacidade de ajuste, com R
2
= 0.9626 e RMSEC
= 0.0109. Em relao a capacidade de previso da resposta (Y) no conjunto de teste, o mtodo
de PLS foi aquele que exibiu os melhores valores, ou seja, R
2
prev
mais elevado (R
2
prev
= 0.7801) e
menor valor de RSMEP (RSMEP = 0.0265).




10











Anexo I









11

Tabela 1 Valores prprios, varincia e varincia acumulada obtidos para os valores
componentes.
Componentes Valores prprios % Varincia % Varincia acumulada
1 20.95 77.60 77.60
2 2.54 9.42 87.03
3 1.33 4.91 91.94
4 1.07 3.97 95.91
5 0.61 2.26 98.16
6 0.23 0.85 99.02
7 0.08 0.31 99.32
8 0.07 0.24 99.57
9 0.04 0.14 99.70
10 0.03 0.12 99.82
11 0.02 0.07 99.90
12 0.01 0.05 99.95
13 0.01 0.02 99.97
14 0.00 0.01 99.98
15 0.00 0.01 99.99
16 0.00 0.00 99.99
17 0.00 0.00 99.99
18 0.00 0.00 100.00
19 0.00 0.00 100.00
20 0.00 0.00 100.00
21 0.00 0.00 100.00
22 0.00 0.00 100.00
23 0.00 0.00 100.00
24 0.00 0.00 100.00
25 0.00 0.00 100.00
26 0.00 0.00 100.00
27 0.00 0.00 100.00








12

Script MATLAB


% TCNICAS AVANADAS DE MODELAO E SIMULAO

% Antonio Rosa e Luis Gomes
% @ DEQ - FCTUC, Coimbra Junho 2012

%* ANALISE DE DADOS INDUSTRIAIS *%

%% PRINCIPAL COMPONENTS ANALISYS (PCA)

% PAH Treino Data import

clear; clc; close all
l = importdata('PAH_treino_9.xls');
x = l.data(:,1:end-1);
y = l.data(:,end);
n = size(x,1); % linhas
m = size(x,2); % colunas

% Centrar as variaveis

x_bar = mean(x); % media de x
xc = x - ones(n,1)*x_bar;


%% Autoscalling

% z1 = xc*inv(diag(std(x)));
% apenas um teste: o que da a mesma coisa
for i=1:n
for j=1:m
z(i,j) = (x(i,j) - x_bar(:,j))./std(x(:,j));
end
end

%% Calculo da matriz de variancias-covariancias

covz = cov(z);
[V D] = eig(covz);
lamb = diag(D);

%% Ordenar os pares (valor proprio,vector proprio) por ordem decrescente de
%% valor proprio

[lambda,IX] = sort(lamb,'descend');
L = V(:,IX); % loads PCA
T = z*L; % scores PCA

%% Analisar os valores proprios(variabilidade explicada pelos pcs)

13

figure(1)
plot(lambda,'bo-
','markersize',8,'markeredgecolor','k','markerfacecolor','b');
xlabel('Nmero de Componentes')
ylabel('Valores Prprios (\lambda)')
% set(p,'linewidth',2)
line([0 30],[1 1],'Color','red','linestyle','--');
grid on
legend('\lambda','Recta \lambda = 1')

%% Escolher o numero de PC's


% figure(1)
% [dummy,h] = sort(y);
% set(gcf,'DefaultAxesColorOrder',jet(60));
% plot3(repmat(1:27,25,1)',repmat(y(h),1,27)',x(h,:)')
% % set(gcf,'DefaultAxesColorOrder','default');
% xlabel('Wavelength Index'); ylabel('Nap'); axis('tight');
% grid on

%

var_pc = lambda./sum(lambda)*100;
cum_var_pc = cumsum(var_pc);

i = 1:size(var_pc);

tabela = [i' lambda var_pc cum_var_pc];

disp('-----------------------------------------------------------------------
-')
fprintf('Componentes Valores Proprios Varincia Varincia
acumulada\n')
disp('-----------------------------------------------------------------------
-')
for j=1:m
fprintf(' %2.0f %+5.2f %+5.2f
%+5.2f\n',tabela(j,:))
end

disp('-----------------------------------------------------------------------
-')


% figure(10)
% plot(1:27,cum_var_pc);

% The pareto function make a scree plot of the percent variability
% explained by each principal component

figure(2)
pareto(var_pc)
xlabel('Principal Components')
14

ylabel('Variance Explained (%)')

% figure(3)
% biplot(L(:,1:2),'scores',T(:,1:2))



%% Analisar Loads

figure(4)
plot3(L(:,1),L(:,2),L(:,3),'o','markersize',8,'markeredgecolor','k','markerfa
cecolor','b')
xlabel('PC1(77.60%)')
ylabel('PC2(9.42%)')
zlabel('PC3(4.91%)')
grid on
% line([0.13 0.22],[0 0],'Color', 'black');
% for i=1:m
% text(L(:,1),L(:,2))%, vari(i,:))
% end
% title('Loadings plot for PC1 and PC2')
% gname

figure(5)
subplot(1,2,1)
plot(L(:,1),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b')
% [C1,I1] = max(abs(L(:,1))); maxL1 = L(I1,1); % Varivel mais importante
para o PC1
% hold on
% plot(I1,maxL1,'ro','markersize',8)
% text(I1,L(I1,1),'Varivel mais importante','FontSize',7)
xlabel('Componentes')
ylabel('1^s^t Principal Component (77.60%)')
% grid on

subplot(1,2,2)
plot(L(:,2),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b')
% [C2,I2] = max(abs(L(:,2))); maxL2 = L(I2,2); % Varivel mais importante
para o PC2
% hold on
% plot(I2,maxL2,'ro','markersize',8)
% text(I2,L(I2,2),'Varivel mais importante','FontSize',7)
xlabel('Componentes')
ylabel('2^n^d Principal Component (9.42%)')
% line([0 30],[0 0],'Color', 'black');
% grid on

%% Analisar Scores

figure(6)
plot3(T(:,1),T(:,2),T(:,3),'o','markersize',8,'markeredgecolor','k','markerfa
cecolor','b')
xlabel('PC1(77.60%)')
ylabel('PC2 (9.42%)')
zlabel('PC3 (4.91%)')
15

grid on
% line([-10 10],[0 0],'linestyle','--','color','k')
% line([0 0],[-3 4],'linestyle','--','color','k')
% axis square
% set(gca,'XGrid','on')
% line([-10 10],[0 0],'Color','black');
% % for i=1:m
% % text(T(:,1),T(:,2))%, vari(i,:))
% % end
% title('Scores plot for PC1 and PC2')
% circle
% hold on
% t = linspace(0,2*pi,1000);
% h = 0;
% k = -5;
% r = 10;
% x_cir = r*cos(t) + h;
% y_cir = r*sin(t) + k;
% plot(x_cir,y_cir);
% axis square;


figure(7)
subplot(2,2,1)
plot(T(:,1),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b')
xlabel('Componentes')
ylabel('PC1 (77.60%)')
% grid on

subplot(2,2,2)
plot(T(:,2),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b')
xlabel('Componentes')
ylabel('PC2 (9.42%)')
% line([0 30],[0 0],'Color', 'black');
% % grid on
subplot(2,2,3)
plot(T(:,3),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b')
xlabel('Componentes')
ylabel('PC3 (4.91%)')

subplot(2,2,4)
plot(T(:,4),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b')
xlabel('Componentes')
ylabel('PC4 (3.97%)')

%% Anlise da fraco da variabilidade apresentada por cada varivel
%que explicada pelo modelo

%Para um s PC

figure(8)
Z1 = T(:,1)*L(:,1)';
subplot(2,1,1)
stem(var(Z1),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b');
% var(Z1) o primeiro valor prprio
16

xlabel('Nmero de Variveis');
ylabel('var(Z_1)')
title('Variance captured by 1 PC model')
axis([0 27 0 1.2])

p = 4; % Numero de componentes principais que explicam o modelo

% Para p componentes principais

Zp = T(:,1:p)*L(:,1:p)';
subplot(2,1,2)
stem(var(Zp),'o','markersize',8,'markeredgecolor','k','markerfacecolor','b');
xlabel('Nmero de Variveis');
ylabel('var(Z_p)')
title('Variance captured by 4 PC model')
axis([0 27 0 1.2])

%% Residuos

E = z - Zp;
Q_res = sum(E.^2,2); % Quadrado do residuo

figure(9)
plot(Q_res,'o-','markersize',8,'markeredgecolor','k','markerfacecolor','b')
stem(Q_res,'--b','fill','MarkerFaceColor','b','MarkerEdgeColor','k')
title('')
xlabel('Observaes')
ylabel('Q_r_e_s')
grid on

%% Calculo do valor VIF

varB = (x'*x)^(-1);
Cjj = diag(varB);
VIF = Cjj;

%% MULTIPLE LINEAR REGRESSION (MLR)

% PAH Teste Data import

l1 = importdata('PAH_teste_9.xls');
x_test = l1.data(:,1:end-1);
y_test = l1.data(:,end);

% Centrar as variaveis

x_testc = x_test - ones(n,1)*x_bar; % media de x do treino

% Autoscalling

for i=1:n
for j=1:m
z_test(i,j) = (x_test(i,j) - x_bar(:,j))./std(x(:,j));
end
17

end

% Scores

T_test = z_test*L; % Loads do treino


% x_t = [ones(n,1) x];
% beta = inv(x_t'*x_t)*x_t'*y;
% Y = x_t*beta;
% beta_reg = regress(y,x_t);

% calcular o VIF

% stepwise(x,y,[],0.3,0.3)

[b,se,pval,inmodel,stats,nextstep,history] =
stepwisefit(x,y,'penter',0.3,'premove',0.30); % Final columns included: 1 3
4 7 11 14 16 21 22 23 24

xin_MLR = x(:,inmodel==1);
bin_MLR = b(inmodel==1);
int_MLR = stats.intercept;
yest_MLR = [ones(size(x,1),1) xin_MLR]*[int_MLR bin_MLR']';
res_MLR = y - yest_MLR;
R2_MLR = 1 - sum(res_MLR.^2)/sum((y - mean(y)).^2);

xin_tMLR = x_test(:,inmodel==1);
yest_tMLR = [ones(size(x_test,1),1) xin_tMLR]*[int_MLR bin_MLR']';
res_tMLR = y_test - yest_tMLR;
% resP_MLR = y_test - yest_tMLR;
R2_tMLR = 1 - sum((res_tMLR).^2)/sum((y_test - mean(y_test)).^2);
% R2P_tMLR = 1 - sum((resP_MLR).^2)/sum((y_test - mean(y_test)).^2);

% Clculo dos erros

RMSEC_MLR = (sum((yest_MLR - y).^2)/n)^.5;
RMSEP_MLR = (sum((yest_tMLR - y_test).^2)/n)^.5;


%% PRINCIPAL COMPONENTS REGRESSION (PCR)


[b1,se1,pval1,inmodel1,stats1,nextstep1,history1] = stepwisefit(T,y); % Final
columns included: 5 6 7 8 9 10 21

Tin_PCR = T(:,inmodel1==1);
bin_PCR = b1(inmodel1==1);
int_PCR = stats1.intercept;
yest_PCR = [ones(size(T,1),1) Tin_PCR]*[int_PCR bin_PCR']';
res_PCR = y - yest_PCR;
R2_PCR = 1 - sum(res_PCR.^2)/sum((y - mean(y)).^2);

% teste
18

Tin_tPCR = T_test(:,inmodel1==1);
yest_tPCR = [ones(size(T_test,1),1) Tin_tPCR]*[int_PCR bin_PCR']';
res_tPCR = y_test - yest_tPCR;
R2_tPCR = 1 - sum(res_tPCR.^2)/sum((y_test - mean(y_test)).^2);

resP_PCR = y_test - yest_tPCR;
R2P_tPCR = 1 - sum((resP_PCR).^2)/sum((y_test - mean(y_test)).^2);


% Clculo dos erros

RMSEC_PCR = (sum((yest_PCR - y).^2)/n)^.5;
RMSEP_PCR = (sum((yest_tPCR - y_test).^2)/n)^.5;





%% PARTIAL LEAST SQUARE (PLS)


clear; clc; close all

l = importdata('PAH_treino_9.xls');
x = l.data(:,1:end-1);
y = l.data(:,end);

[n,m] = size(x);

% AUTOSCALING

x_bar = mean(x);
y_bar = mean(y);
stdx = std(x);
stdy = std(y);

X = (x-ones(n,1)*x_bar)./(ones(n,1)*stdx);
Y = (y-ones(n,1)*y_bar)./(ones(n,1)*stdy);

% Y1 = (y(:,1) - y_bar)./std(y);

% Seleccao do numero de componentes usando validacao cruzada

Amax = 8;

[T,P,Braw,B,W,Q,U,E,F,R2X,R2Y] = sp_pls(X,Y,Amax);

yestt_PLS = X*Braw(:,Amax);

% Re-scaling

yest_PLS = yestt_PLS.*(ones(n,1)*stdy) + ones(n,1)*y_bar;
19


% Claculo do coeficiente de determinacao (R^2)

res_PLS = y - yest_PLS;
R2_PLS = 1 - sum(res_PLS.^2)/sum((y - mean(y)).^2);


%% PAH Teste Data import

l1 = importdata('PAH_teste_9.xls');
x_test = l1.data(:,1:end-1);
y_test = l1.data(:,end);

% AUTOSCALING

X_test = (x_test - ones(n,1)*x_bar)./(ones(n,1)*stdx);
Y_test = (y_test - ones(n,1)*y_bar)./(ones(n,1)*stdy);

yestt_test_PLS = X_test*Braw(:,Amax);

% Re-scaling

yest_test_PLS = yestt_test_PLS.*(ones(n,1)*stdy) + ones(n,1)*y_bar;

% Calculo do R^2_prev

res_tPLS = y_test - yest_test_PLS;
R2_tPLS = 1 - sum(res_tPLS.^2)/sum((y_test - mean(y_test)).^2);

% Clculo dos erros

RMSEC_PLS = (sum((yest_PLS - y).^2)/n)^.5;
RMSEP_PLS = (sum((yest_test_PLS - y_test).^2)/n)^.5;

Você também pode gostar