Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento...

26
1 Análise de Componentes Principais (PCA) no Scilab Matriz de dados analisados: Copa do Mundo de 2002 – Resultados da primeira fase, Grupos C e E -->X=[11 3 3 0 0 -->0 9 0 3 0 -->5 6 1 1 1 -->5 3 1 1 1 -->11 1 2 0 1 -->0 12 0 3 0 -->2 3 1 1 1 -->5 2 1 0 2] X = 11. 3. 3. 0. 0. 0. 9. 0. 3. 0. 5. 6. 1. 1. 1. 5. 3. 1. 1. 1. 11. 1. 2. 0. 1. 0. 12. 0. 3. 0. 2. 3. 1. 1. 1. 5. 2. 1. 0. 2. Centrando a matriz nas médias das variáveis (criando X C ): -->Xm=ones(8,1)'*X*(1/8) Xm = 4.875 4.875 1.125 1.125 0.75 Esse é o vetor linha das médias das variáveis (Xm). -->Xm=mean(X,'r') Xm = 4.875 4.875 1.125 1.125 0.75

Transcript of Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento...

Page 1: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

1

Análise de Componentes Principais (PCA) no Scilab Matriz de dados analisados: Copa do Mundo de 2002 – Resultados da primeira fase, Grupos C e E

-->X=[11 3 3 0 0 -->0 9 0 3 0 -->5 6 1 1 1 -->5 3 1 1 1 -->11 1 2 0 1 -->0 12 0 3 0 -->2 3 1 1 1 -->5 2 1 0 2] X = 11. 3. 3. 0. 0. 0. 9. 0. 3. 0. 5. 6. 1. 1. 1. 5. 3. 1. 1. 1. 11. 1. 2. 0. 1. 0. 12. 0. 3. 0. 2. 3. 1. 1. 1. 5. 2. 1. 0. 2. Centrando a matriz nas médias das variáveis (criando XC):

-->Xm=ones(8,1)'*X*(1/8) Xm = 4.875 4.875 1.125 1.125 0.75 Esse é o vetor linha das médias das variáveis (Xm). -->Xm=mean(X,'r') Xm = 4.875 4.875 1.125 1.125 0.75

Page 2: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

2

[‘r’ vem de “row” = linha. Se deseja médias dos objetos, colocar mean(X,’c’)] -->ones(8,1)*Xm ans = 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 4.875 4.875 1.125 1.125 0.75 O produto externo de um vetor 1n pelo vetor linha das médias gera uma matriz de mesma dimensão de X com os valores do vetor linha (as médias das variáveis nos objetos) ao longo das colunas, sendo esta a matriz das médias. -->Xc=X-ones(8,1)*Xm Xc = 6.125 - 1.875 1.875 - 1.125 - 0.75 - 4.875 4.125 - 1.125 1.875 - 0.75 0.125 1.125 - 0.125 - 0.125 0.25 0.125 - 1.875 - 0.125 - 0.125 0.25 6.125 - 3.875 0.875 - 1.125 0.25 - 4.875 7.125 - 1.125 1.875 - 0.75 - 2.875 - 1.875 - 0.125 - 0.125 0.25 0.125 - 2.875 - 0.125 - 1.125 1.25 Centrar os dados na média algebricamente significa modificar a matriz X de modo que a média das variáveis seja 0: -->mean(Xc,'r') ans = 0. 0. 0. 0. 0. Geometricamente significa transladar os vetores dos objetos no espaço das variáveis para que a origem seja a média de cada uma delas. Por exemplo, plotando as duas primeiras colunas, ou seja, os valores das duas primeiras variáveis para todos os objetos, tanto de X quanto de Xc: --> plot(X(:,1),X(:,2),'o',Xc(:,1),Xc(:,2),'*',Xm(:,1),Xm(:,2),'pentagram',0,0,'pentagram')

Page 3: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

3

Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo Xc é uma matriz de desvios. Observe que um grau de liberdade é perdido neste processo, observável pelos postos de X e Xc: -->rank(X) ans = 5. (poderia ser no máximo 5, pois é truncado pelo menor número de variáveis que de objetos) -->rank(Xc) ans = 4. Isso porque foi imposta uma codição que omite um grau de liberdade, pois antes, em X, o ponto médio dependia dos dados de partida, e em Xc eu imponho que, independente de X, o ponto central seja 0. Agora, obtendo a matriz de covariância (C): -->C=Xc'*Xc/(8-1) C = 18.696429 - 12.160714 4.0178571 - 4.5535714 0.5357143 - 12.160714 14.696429 - 2.6964286 4.4464286 - 1.75 4.0178571 - 2.6964286 0.9821429 - 1.0178571 0.0357143 - 4.5535714 4.4464286 - 1.0178571 1.5535714 - 0.5357143 0.5357143 - 1.75 0.0357143 - 0.5357143 0.5 Se a matriz de covariância contêm elementos xij, na diagonal principal (i=j) estão as variâncias das variáveis e fora dela (i≠j) estão as covariâncias entre elas. A variância é

(0,0)

(4,875;4,875)

Page 4: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

4

uma medida da dispersão de determinados valores, e quanto maior esta disperção mais distinguíveis eles são, e consequentemente mais informação é observada. Neste sentido as variáveis gols feitos e gols levados são as mais informativas, pois diferenciam mais os times. A covariância é uma medida da redundância da informação entre duas variáveis pois mede a associação linear entre elas. O sinal da covariância indica se os deslocamentos dos desvios em relação as suas médias variam no mesmo sentido ou no sentido inverso. Gols feitos e gols levados têm a maior covariância entre as variáveis (-12,16), o que indica que é muito provável que quem faz gol não leva (indicado pelo sinal “-“). As covariâncias entre gols feitos e vitórias bem como gols levados e derrotas são positivas pois quem faz gols ganha e quem leva gols perde. A Análise de Compontentes Principais consiste na concentração da informação da matriz de covariancia (ou de correlação) num menor número de dimensões. Isto é feito pela diagonalização da matriz, que possibilita que ela seja possa ser expressa num somatório produtos externos (entre vetores de pesos e escores) de posto um cada. A diagonalização leva a autovetores V e autovalores L : -->[V,L]=spec(C) L = 8.796D-16 0. 0. 0. 0. 0. 0.1301436 0. 0. 0. 0. 0. 0.2696965 0. 0. 0. 0. 0. 4.7290724 0. 0. 0. 0. 0. 31.299659 V = - 1.531D-15 0.2115039 0.1371254 - 0.6323720 0.7325083 3.944D-15 - 0.1577919 0.2540026 - 0.7213317 - 0.6247119 - 0.5773503 - 0.6822840 - 0.3985528 - 0.1294999 0.1598143 - 0.5773503 0.6818036 - 0.3831379 - 0.1005237 - 0.2119219 - 0.5773503 0.0004804 0.7816907 0.2300237 0.0521077 [Spec vem de decomposição espectral] Note que o traço de C e de L são iguais, porêm a informação é mais concentrada no segundo caso, da esquerda para direita. -->trace(C) ans = 36.428571 -->trace(L) ans = 36.428571

Page 5: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

5

A maior quantidade de informação (variância) é encontrada na primeira componente principal (PC1), sendo expressa pela percentagem do autovalor correspondente com relação a soma dos autovalores: -->%PC1=L(5,5)*100/trace(L) %PC1 = 85.920632 A parcela ortogonal a PC1 é a segunda mais explicativa e é chamada de PC2. A informação retida nesta componente é a seguinte: -->%PC2=L(4,4)*100/trace(L) %PC2 = 12.981767 A quantidade de informação em cada dimensão (individualmente) é apresentada no gráfico do scree (ou gráfico do aluvião), que mostra o quão decresce a variância em cada componente. Para fazê-lo vamos primeiro inverter a ordem crescente de autovalores da esquerda para a direita: -->pertrans(L) ans = 31.299659 0. 0. 0. 0. 0. 4.7290724 0. 0. 0. 0. 0. 0.2696965 0. 0. 0. 0. 0. 0.1301436 0. 0. 0. 0. 0. 8.796D-16 -->plot(1:5,diag(ans)*100/trace(ans),'pentagram-')

Page 6: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

6

No Statistica:

Gráfico do scree

Active variables only

85,15%

13,68%

,78% ,39%

0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

Número de componentes

-5

0

5

10

15

20

25

30

35

Aut

oval

or (

info

rmaç

ão e

xplic

ada)

85,15%

13,68%

,78% ,39%

Observe que o ultimo autovalor é zero, pois o número de autovalores não nulo é igual ao posto da matriz de covariância, neste caso 4. Os autovetores V são os cosenos dos ângulos formados entre os vetores das variáveis de Xc e as componentes, e são chamados de pesos. Quanto maiores (em módulo) seus valores, maior variância a variável associada apresenta, sendo capaz de melhor distinguir os objetos. Plotanto-se os pesos de PC1 contra PC2 obtemos: -->plot(V(:,5),V(:,4),'rd')

Page 7: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

7

No Statistica:

Pesos de PC1 vs. PC2

Gols feitos

Gols Levados

Vitórias Derrotas

Empates

-5 -4 -3 -2 -1 0 1 2 3 4 5

PC1 (85,15%)

-2

-1

0

1

PC

2 (1

3,68

%)

Gols feitos

Gols Levados

Vitórias Derrotas

Empates

Gols feitos e gols levados são as variáveis mais influentes em PC1 e em PC2, o que é de se esperar dado o observado na matriz de covariância. V = - 1.531D-15 0.2115039 0.1371254 - 0.6323720 0.7325083 3.944D-15 - 0.1577919 0.2540026 - 0.7213317 - 0.6247119 - 0.5773503 - 0.6822840 - 0.3985528 - 0.1294999 0.1598143 - 0.5773503 0.6818036 - 0.3831379 - 0.1005237 - 0.2119219

Gols feitos Gols levados

Page 8: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

8

- 0.5773503 0.0004804 0.7816907 0.2300237 0.0521077 As coordenadas dos objetos (os times de futebol) no espaço das componentes são os escores. Os escores são obtidos a partir da rotação dos vetores dos objetos no espaço das variáveis de Xc pela multiplicação desta matriz por V, o que é uma rotação. -->T=Xc*V T = 2.776D-15 - 0.4553508 - 0.5388864 - 2.8230228 6.156931 - 7.105D-15 0.3636178 - 0.4770052 - 0.1079919 - 6.7641397 6.106D-15 - 0.1508978 0.5960276 - 0.8042858 - 0.5916970 - 5.718D-15 0.322478 - 0.1659802 1.3597093 1.2824387 - 5.884D-15 0.5429975 0.133352 - 1.0208357 7.2986482 4.663D-15 - 0.1097579 0.2850026 - 2.2719871 - 8.6382754 - 1.138D-15 - 0.3120336 - 0.5773563 3.2568255 - 0.9150860 6.217D-15 - 0.2010532 0.7448458 2.4115885 2.1711802 Similarmente aos vetores dos pesos de PC1 e PC2, os escores destas duas componentes representam 99% da informação original, e podem ser plotados para visualizar padrões: -->plot(T(:,5),T(:,4),'r.')

No Statistica:

Page 9: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

9

Gráfico dos escores de PC1 vs. PC2

Brasil

China

Costa Rica

Turquia

Alemanha

Arábia Saudita

Camarões

Irlanda

-10 -5 0 5 10

PC1 (85,15%)

-3

-2

-1

0

1

2

3

4

PC

2 (1

3,68

%)

Brasil

China

Costa Rica

Turquia

Alemanha

Arábia Saudita

Camarões

Irlanda

A Alemanha e o Brasil, por terem feitos muitos gols (11) são encontrados no 4º quadrante do gráfico dos escores, e a Arábia Saudita, por ter levado 12, se encontra no extremo do 3º quadrante. Os três times dos quadrantes superiotes (Irlanda, Camarões e Turquia) nem fizem muitos gols nem levaram muitos, e tiveram alguns empates, justificando seu posicionamento. Note no gráfico dos pesos que tanto PC1 quanto PC2 sã descritas praticamente por duas variáveis: gols feitos e gols levados. Na verdade PC1 pode ser descrita como a diferença entre gols feitos e gols levados, isto é, o saldo de gols, e PC2 como a soma destas variáveis, ou seja, o total de gols. Estas são variáveis latentes, pois não são explícitas. Para verificar esta afirmação basta plotar os escores das respectivas componentes contra estas “novas” variáveis: -->SG=[X(:,1)-X(:,2)] SG = 8. - 9. - 1. 2. 10. - 12. - 1. 3. -->TG=[X(:,1)+X(:,2)] TG = 14. 9. 11. 8. 12.

Page 10: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

10

12. 5. 7. -->plot(SG,T(:,5),'b.')

-->plot(TG,T(:,4),'g.')

Pelo visto a descrição de PC2 como o total de gols não é tão boa, pois variáveis como empate também influenciam razoavelmente. Como afirmado anteriormente, a diagonalização da matriz C permite expressar Xc como uma soma de produtos externos dos escores pelos pesos de cada componente:

Page 11: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

11

Cada um destes produtos tem posto 1, pois o posto da multiplicação de dois vetores (como são unidimensionais tem posto 1) é o mínimo posto dos dois. Com isso Xc pode ser descrita, por exemplo, só pelos pesos e escores de PC1, a partir de um modelo M1:

-->M1=T(:,5)*V(:,5)' M1 = 4.5100028 - 3.846308 0.9839654 - 1.3047887 0.3208233 - 4.9547881 4.2256385 - 1.0810061 1.4334696 - 0.3524635 - 0.4334229 0.3696401 - 0.0945616 0.1253936 - 0.0308319 0.9393969 - 0.8011547 0.2049520 - 0.2717769 0.0668249 5.34632 - 4.5595523 1.1664281 - 1.5467436 0.3803155 - 6.327608 5.3964334 - 1.3805197 1.83064 - 0.4501203 - 0.6703081 0.5716651 - 0.1462438 0.1939268 - 0.0476830 1.5904074 - 1.3563621 0.3469856 - 0.4601207 0.1131351 Como foi afirmado, este modelo tem posto 1: -->rank(M1) ans = 1. Este modelo, quando comparado com a matriz original pela diferença, deixa um resíduo chamado primeira matriz de resíduos, E1: -->E1=Xc-M1 E1 = 1.6149972 1.971308 0.8910346 0.1797887 - 1.0708233 0.0797881 - 0.1006385 - 0.0439939 0.4415304 - 0.3975365 0.5584229 0.7553599 - 0.0304384 - 0.2503936 0.2808319 - 0.8143969 - 1.0738453 - 0.3299520 0.1467769 0.1831751 0.7786800 0.6845523 - 0.2914281 0.4217436 - 0.1303155 1.452608 1.7285666 0.2555197 0.0443600 - 0.2998797 - 2.2046919 - 2.4466651 0.0212438 - 0.3189268 0.2976830 - 1.4654074 - 1.5186379 - 0.4719856 - 0.6648793 1.1368649 Esta é uma matriz de vetores ortogonais a PC1, pois só vetores ortogonais a esta componente não podem ser projetados nela: -->E1'*M1 ans =

Page 12: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

12

1.0D-14 * - 7.0610184 6.2172489 - 1.5210055 2.0539126 - 0.4968248 5.8175686 - 4.8405724 1.2656542 - 1.7208457 0.4191092 - 2.6423308 2.3758773 - 0.6078471 0.7771561 - 0.2019218 3.0198066 - 2.6090241 0.6661338 - 0.8826273 0.2178813 - 0.1554312 0.0444089 - 0.0277556 0.0222045 - 0.0027756 Uma forma de avaliar o quanto o modelo explica a matriz original é pela Soma Quadrática Total (SQT), que é a soma quadrática de todos os elementos de uma matriz. No caso a SQT de Xc está relacionada com a variância total, ou seja, o traço de Xc’* Xc, pois basta ser dividida por n-1 para ser este valor. Já a proporção explicada por M1 é dada por comparação destas medidas. -->SQT=trace(Xc'*Xc) SQT = 255. -->SQ1=trace(M1'*M1) SQ1 = 219.09761 -->SQr1=trace(E1'*E1) SQr1 = 35.902387 Essa é a variância que o modelo não explica, pois refere-se aos resíduos ortogonais a PC1. -->SQ1*(n-1)/SQT*(n-1) ans = 0.8592063 Exatamente a informação explicada por PC1. Agora vamos usar a primeira matriz dos resíduos para obter um modelo com PC2. Basta executar o procedimento usado em Xc, ou seja, diagonalizar a matriz covariância de E1: -->C1=E1'*E1/7 C1 = 1.9020226 2.1622167 0.3537540 0.3052175 - 0.6589715 2.1622167 2.4812688 0.4284629 0.3026620 - 0.7311249 0.3537540 0.4284629 0.1827307 0.0422044 - 0.2249351 0.3052175 0.3026620 0.0422044 0.1478754 - 0.1900798 - 0.6589715 - 0.7311249 - 0.2249351 - 0.1900798 0.4150149

Page 13: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

13

-->[V1,L1]=spec(C1) L1 = - 2.493D-16 0. 0. 0. 0. 0. 5.848D-17 0. 0. 0. 0. 0. 0.1301436 0. 0. 0. 0. 0. 0.2696965 0. 0. 0. 0. 0. 4.7290724 V1 = 0.3680946 - 0.6333046 0.2115039 0.1371254 - 0.6323720 - 0.3139255 0.5401071 - 0.1577919 0.2540026 - 0.7213317 0.5794684 0.1519551 - 0.6822840 - 0.3985528 - 0.1294999 0.3926663 0.4733471 0.6818036 - 0.3831379 - 0.1005237 0.5253444 0.2450750 0.0004804 0.7816907 0.2300237 Observe que só aparecem 3 autovalores diferentes de 0 já que E1 é uma matriz de posto 3, pois da matriz Xc foi tirado 1 pela subtração por M1: -->rank(E1) ans = 3. Veja também que o 2º autovalor de L, correspondente a PC2, passou a ser o 1º: -->L L = 8.796D-16 0. 0. 0. 0. 0. 0.1301436 0. 0. 0. 0. 0. 0.2696965 0. 0. 0. 0. 0. 4.7290724 0. 0. 0. 0. 0. 31.299659 Isso mostra que PC2 é a primeira componente principal da primeira matriz dos resíduos. Podemos contabilizar no modelo agora PC1 e PC2, seja pela repetição do procedimento de diagonalização de Xc: -->T1=E1*V1 T1 = - 1.665D-15 3.220D-15 - 0.4553508 - 0.5388864 - 2.8230228 4.052D-15 - 2.595D-15 0.3636178 - 0.4770052 - 0.1079919 - 1.610D-15 - 1.096D-15 - 0.1508978 0.5960276 - 0.8042858 8.604D-16 1.270D-15 0.322478 - 0.1659802 1.3597093 - 3.608D-16 3.345D-15 0.5429975 0.133352 - 1.0208357 2.415D-15 - 6.037D-15 - 0.1097579 0.2850026 - 2.2719871 7.494D-16 - 5.551D-16 - 0.3120336 - 0.5773563 3.2568255

Page 14: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

14

- 3.109D-15 1.665D-16 - 0.2010532 0.7448458 2.4115885 Ou usando a primeira diagonalização, pegando diretamente os pesos e escores de PC2: T = 2.776D-15 - 0.4553508 - 0.5388864 - 2.8230228 6.156931 - 7.105D-15 0.3636178 - 0.4770052 - 0.1079919 - 6.7641397 6.106D-15 - 0.1508978 0.5960276 - 0.8042858 - 0.5916970 - 5.718D-15 0.322478 - 0.1659802 1.3597093 1.2824387 - 5.884D-15 0.5429975 0.133352 - 1.0208357 7.2986482 4.663D-15 - 0.1097579 0.2850026 - 2.2719871 - 8.6382754 - 1.138D-15 - 0.3120336 - 0.5773563 3.2568255 - 0.9150860 6.217D-15 - 0.2010532 0.7448458 2.4115885 2.1711802 M1 é o melhor modelo de posto 1, pois PC1 é a componente mais informativa de todas elas, mas nada impede que usemos mais de uma componente no modelo, descrevendo Xc como um somatório de modelos, levando a um modelo de posto igual ao número de compontentes, até o posto da matriz original. Incluindo PC2 no modelo temos: -->M2=T(:,5)*V(:,5)'-T(:,4)*V(:,4)' M2 = 2.7248021 - 5.8826439 0.6183842 - 1.5885695 0.9701853 - 5.0230792 4.1477405 - 1.094991 1.4226138 - 0.3276228 - 0.9420308 - 0.2105167 - 0.1987166 0.0445438 0.1541728 1.7992391 0.1796468 0.3810343 - 0.1350938 - 0.2459405 4.700772 - 5.2959135 1.03423 - 1.6493618 0.6151319 - 7.7643491 3.757577 - 1.6747419 1.6022514 0.0724905 1.3892173 2.9209167 0.2755149 0.5213150 - 0.7968300 3.1154285 0.3831932 0.6592861 - 0.2176988 - 0.4415873 Avaliando o quão bem o modelo descreve a matriz Xc: -->SQ2=trace(M2'*M2) SQ2 = 252.20112 -->SQ2/SQT ans = 0.989024 Essa é a infomação explicada por PC1 (0.86) + PC2 (0,13), que é a variância cumulativa do modelo. Uma descrição perfeita de Xc é dada pela inclusão de todas as componentes: -->Xc-T*V' ans =

Page 15: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

15

1.0D-15 * - 3.5527137 0.6661338 - 1.7763568 0.4440892 - 0.8881784 3.5527137 - 1.7763568 1.3322676 - 1.3322676 0.4440892 - 0.3330669 - 0.4440892 - 0.0277556 - 0.2775558 0.2220446 0.2220446 0.8881784 0.0277556 0.5551115 - 0.0555112 - 2.6645353 0.8881784 - 1.3322676 1.3322676 - 0.4996004 3.5527137 - 5.3290705 1.5543122 - 2.220446 0.6661338 1.7763568 0.8881784 0.8326673 0.0277556 0.0555112 0. 1.7763568 0.3330669 0.6661338 0. Ou seja, o resíduo é 0. Porém normalmente não é desejável criar um modelo que contenha todas as componentes, e sim truncá-las para um número bem menor, não só para uma visualização gráfica do sistema como para uma descrição dos dados sem a interferência dos ruídos dos dados. Por isso existem alguns critérios para escolher quantas componenes devem ser usadas. Para uma matriz de covariância podemos usar o critério de Kaiser, no qual deve-se reter as componentes com variância superior a variância média das variáveis antes da análise. Ou seja λ > λcorte = Tr(C)/p . Logo, para os dados da copa: -->Lcorte=trace(C)/5 Lcorte = 7.2857143 Então só se deve usar PC1 segundo este critério. O critério de Malinowski é baseado no teste F, para diferenças significativas entre variâncias. Mede-se um Fk = λk/s

2mk para uma componente k, para 1 grau de liberdade

para λk e (p-k-1) para s2mk. Este segundo valor é a variância média dada por Σi=k+1p

λi/(p-k-1). Para verificar se devemos incluir PC1 segundo este critério: -->Vm1=(L(1,1)+L(2,2)+L(3,3)+L(4,4))/(5-1-1) Vm1 = 1.7096375 -->F1=L(5,5)/Vm1 F1 = 18.307775 Como Fcrítico(1 e 3 graus de liberdade, com 95% de confiança) = 10,1 < 18,3 = F1, as variâncias são significativamente diferentes e portanto PC1 deve ser incluída. Já com PC2: -->Vm2=(L(1,1)+L(2,2)+L(3,3))/(5-2-1) Vm2 = 0.1999200

Page 16: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

16

-->F2=L(4,4)/Vm2 F2 = 23.65482 Como Fcrítico(1,2,95%) = 18,5 < 23,6 = F2, PC2 também deve ser incluída. -->Vm3=(L(1,1)+L(2,2))/(5-3-1) Vm3 = 0.1301436 -->F3=L(3,3)/Vm3 F3 = 2.0723 Como Fcrítico(1,2,95%) = 161 >> 2,07 = F3, PC3 não deve ser incluída de jeito nenhum, como o esperado (pois ela contém menos que 1% da informação, inclusive com variâncias aleatórias). Pela matriz de covariância, oriunda da dos desvios, a variância natural das variáveis está associada a informação que elas contêm. Em casos de espectros é importante utilizá-la na PCA, pois separa sinal de ruído, já que a variância do primeiro é muito maior. Por outro lado pode-se dar a mesma variância para cada variável, os que as uniformiza em termos de informação. As diferentes variâncias retidas em cada variável podem ser observadas nas diferentes escalas de gols feitos e vitórias, por exemplo: -->plot(X(:,1),X(:,3),'b.')

Page 17: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

17

[Aparecem menos pontos porque alguns estão sobrepostos] Enquanto gols feitos variam de 0 a 12, gols levados varia de 0 a 3. As variâncias destas variáveis podem ser obtidas de duas maneiras, com ou sem atalho: Sem atalho: -->xc=[Xc(:,1) Xc(:,3)] xc = 6.125 1.875 - 4.875 - 1.125 0.125 - 0.125 0.125 - 0.125 6.125 0.875 - 4.875 - 1.125 - 2.875 - 0.125 0.125 - 0.125 -->c=xc'*xc/(8-1) c = 18.696429 4.0178571 4.0178571 0.9821429 Esta matriz de covariância (c minúsculo deveria ser maiúsculo, pois é uma matriz, não um vetor, mas neste caso é só para diferenciar da matriz de covariância de todas as variáveis C, da mesma forma que Xc difere de xc) apresenta as variâncias de gols levados e vitórias na diagonal. É possível transformar a diagonal de uma matriz num vetor de variâncias: -->diag(c) ans = 18.696429 0.9821429 Os desvios padrões associados a estes valores são simplesmente as raíses destes: -->sqrt(ans) ans = 4.3239367 0.9910312 A matriz das variáveis autoescaloladas é uma matriz em que as variáveis são normalizadas pelos seus desvios, isto é: -->ones(8,1)*sqrt(diag(c))'

Page 18: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

18

ans = 4.3239367 0.9910312 4.3239367 0.9910312 4.3239367 0.9910312 4.3239367 0.9910312 4.3239367 0.9910312 4.3239367 0.9910312 4.3239367 0.9910312 4.3239367 0.9910312 -->xa=xc./ans xa = 1.4165332 1.8919687 - 1.1274448 - 1.1351812 0.0289088 - 0.1261312 0.0289088 - 0.1261312 1.4165332 0.8829187 - 1.1274448 - 1.1351812 - 0.6649034 - 0.1261312 0.0289088 - 0.1261312 Ou então assim: -->diag(sqrt(diag(c))) ans = 4.3239367 0. 0. 0.9910312 -->xc*inv(ans) ans = 1.4165332 1.8919687 - 1.1274448 - 1.1351812 0.0289088 - 0.1261312 0.0289088 - 0.1261312 1.4165332 0.8829187 - 1.1274448 - 1.1351812 - 0.6649034 - 0.1261312 0.0289088 - 0.1261312 Agora plotanto novamente estas variáveis autoescalonadas e comparando com as anteriores: -->plot(ans(:,1),ans(:,2),'r.',xc(:,1),xc(:,2),'b.')

Page 19: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

19

A variância bem maior em gols feitos agora está equivalente a variância de vitórias. O atalho para variância de variáveis no Scilab é stdev. Logo: -->stdev(xc,'r') ans = 4.3239367 0.9910312 E isso pode ser usado para facilitar a obtenção de xa: -->xa=xc*inv(diag(stdev(xc,'r'))) xa = 1.4165332 1.8919687 - 1.1274448 - 1.1351812 0.0289088 - 0.1261312 0.0289088 - 0.1261312 1.4165332 0.8829187 - 1.1274448 - 1.1351812 - 0.6649034 - 0.1261312 0.0289088 - 0.1261312 E o espírito do autoescalonamento: -->stdev(xa,'r') ans =

1. 1. Como normalizamos as variáveis pelos respectivos desvios padrões, os desvios delas são unitários. Note que como desvios padrões tem a mesma unidade das respectivas

Page 20: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

20

variáveis, a transformação de xc em xa adimensionaliza as variáveis. Por este motivo variáveis de diferentes unidades devem ser pré-processadas por este método. A metodologia para análise de componentes principais com este pré-processamento leva à matriz de correlação R, ao invés da matriz de covariância C: -->Xa=Xc*inv(diag(stdev(Xc,'r'))) Xa = 1.4165332 - 0.4890974 1.8919687 - 0.9025825 - 1.0606602 - 1.1274448 1.0760143 - 1.1351812 1.5043042 - 1.0606602 0.0289088 0.2934584 - 0.1261312 - 0.1002869 0.3535534 0.0289088 - 0.4890974 - 0.1261312 - 0.1002869 0.3535534 1.4165332 - 1.0108013 0.8829187 - 0.9025825 0.3535534 - 1.1274448 1.8585702 - 1.1351812 1.5043042 - 1.0606602 - 0.6649034 - 0.4890974 - 0.1261312 - 0.1002869 0.3535534 0.0289088 - 0.7499494 - 0.1261312 - 0.9025825 1.767767 -->R=Xa'*Xa/(8-1) R = 1. - 0.7336245 0.9376221 - 0.8449037 0.1752140 - 0.7336245 1. - 0.7097341 0.9305502 - 0.6455757 0.9376221 - 0.7097341 1. - 0.8240127 0.0509647 - 0.8449037 0.9305502 - 0.8240127 1. - 0.6078307 0.1752140 - 0.6455757 0.0509647 - 0.6078307 1. As variâncias que ficam na diagonal são unitárias, como o esperado. Os outros valores são correlações entre as variáveis. As correlações podem variar de -1 a 1. Observe que a maior correlação da matriz (em módulo) é referente às variáveis gols feitos e vitórias, e é positiva, pois fazer gols certamente leva a vitórias, pelos dados disponíveis na matriz original. Seguindo a mesma diretriz da PCA com C: -->[V,L]=spec(R) L = 4.350D-17 0. 0. 0. 0. 0. 0.0548575 0. 0. 0. 0. 0. 0.1087619 0. 0. 0. 0. 0. 1.1358857 0. 0. 0. 0. 0. 3.700495 V = - 1.391D-15 0.6133913 - 0.5324916 - 0.3478974 0.4681571 1.275D-15 - 0.3958418 - 0.7498020 - 0.2070785 - 0.4880828 - 0.5687965 - 0.5125392 0.0990726 - 0.4460805 0.4527373 - 0.7153773 0.4467469 0.1248618 - 0.0949247 - 0.5138593 - 0.4058397 - 0.0691459 - 0.3589482 0.7925197 0.2712596 -->pertrans(L)

Page 21: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

21

ans = 3.700495 0. 0. 0. 0. 0. 1.1358857 0. 0. 0. 0. 0. 0.1087619 0. 0. 0. 0. 0. 0.0548575 0. 0. 0. 0. 0. 4.350D-17 -->plot(1:5,diag(ans)*100/trace(ans),'pentagram-')

No Statistica:

Page 22: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

22

Gráfico do scree

73,53%

22,82%

2,46% 1,20%

0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

Número da componente

-0,5

0,0

0,5

1,0

1,5

2,0

2,5

3,0

3,5

4,0

4,5

Aut

oval

ores

(in

form

ação

exp

licad

a)

73,53%

22,82%

2,46% 1,20%

-->plot(V(:,5),V(:,4),'rv')

No Statistica :

Page 23: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

23

Pesos de PC1 vs. PC2

Gols feitos

Gols Levados

Vitórias

Derrotas

Empates

-1,0 -0,5 0,0 0,5 1,0

PC1 (73,53%)

-1,0

-0,5

0,0

0,5

1,0

PC

2 (2

2,82

%)

Gols feitos

Gols Levados

Vitórias

Derrotas

Empates

-->T=Xa*V T = - 5.551D-17 - 0.2370993 0.0679003 - 1.9904136 1.934531 - 3.886D-16 0.2097120 0.2496441 - 0.3075918 - 2.627659 4.441D-16 - 0.1030331 - 0.3873549 0.2751562 - 0.0393643 - 5.551D-16 0.2067352 0.199407 0.4372066 0.3425877 - 1.166D-15 0.3888035 - 0.1485236 - 0.3114705 2.1159502 6.106D-16 - 0.1000563 - 0.3371179 - 0.4696422 - 3.0096111 4.441D-16 - 0.2188432 0.5688562 0.6785821 0.0177746 4.441D-16 - 0.1462188 - 0.2128111 1.6881732 1.265791 -->plot(T(:,5),T(:,4),'b.')

Page 24: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

24

No Statistica:

Gráficos dos escores de PC1 vs. PC2

Brasil

China

Costa RicaTurquia

AlemanhaArábia Saudita

Camarões

Irlanda

-4 -3 -2 -1 0 1 2 3

PC1 (73,53%)

-2,5

-2,0

-1,5

-1,0

-0,5

0,0

0,5

1,0

1,5

2,0

PC

2 (2

2,82

%)

Brasil

China

Costa RicaTurquia

AlemanhaArábia Saudita

Camarões

Irlanda

Para fazer um biplot basta normalizar os pesos e escores aos maiores valores deles e plotá-los juntos: -->diag(max(V,'r')) ans = 1.275D-15 0. 0. 0. 0. 0. 0.6133913 0. 0. 0. 0. 0. 0.1248618 0. 0.

Page 25: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

25

0. 0. 0. 0.7925197 0. 0. 0. 0. 0. 0.4681571 -->inv(ans) warning matrix is close to singular or badly scaled. rcond = 1.6083D-15 ans = 7.846D+14 0. 0. 0. 0. 0. 1.6302806 0. 0. 0. 0. 0. 8.0088555 0. 0. 0. 0. 0. 1.2617983 0. 0. 0. 0. 0. 2.1360349 -->Vbp=V*ans Vbp = - 1.091011 1. - 4.2646486 - 0.4389764 1. 1. - 0.6453332 - 6.0050558 - 0.2612912 - 1.0425618 - 4.463D+14 - 0.8355827 0.7934580 - 0.5628636 0.9670626 - 5.613D+14 0.7283228 1. - 0.1197758 - 1.0976213 - 3.184D+14 - 0.1127272 - 2.874764 1. 0.5794199 -->Tbp=T*inv(diag(max(T,'r'))) warning matrix is close to singular or badly scaled. rcond = 2.8858D-16 Tbp = - 0.0909091 - 0.6098179 0.1193628 - 1.179034 0.9142611 - 0.6363636 0.5393780 0.4388527 - 0.1822039 - 1.2418341 0.7272727 - 0.2650005 - 0.6809365 0.1629905 - 0.0186036 - 0.9090909 0.5317215 0.3505403 0.2589821 0.1619073 - 1.9090909 1. - 0.2610917 - 0.1845015 1. 1. - 0.2573441 - 0.5926241 - 0.2781955 - 1.422345 0.7272727 - 0.5628633 1. 0.4019624 0.0084003 0.7272727 - 0.3760738 - 0.3741035 1. 0.5982140 -->plot(Vbp(:,5),Vbp(:,4),'b.',Tbp(:,5),Tbp(:,4),'r.')

Page 26: Análise de Componentes Principais (PCA) no Scilab Matriz ... · 3 Estatisticamente cada elemento de Xc é os desvio de seu respectivo valor em X com relação a sua média. Logo

26