Estruturas de dados multivariadas complexas são melhor compreendidas estudando projeções de baixa dimensão. Para um estudo conjunto de dois conjuntos de dados, podemos perguntar que tipo de projeção de baixa dimensão ajuda a encontrar possíveis estruturas conjuntas para as duas amostras. A análise de correlação canônica (CCA) é uma ferramenta padrão de análise estatística multivariada para a descoberta e quantificação de associações entre dois conjuntos de variáveis.
A técnica básica é baseada em projeções. Uma projeção define um índice ou variável multivariada projetada que se correlaciona ao máximo com o índice da outra variável, para cada amostra separadamente. O objetivo do CCA é maximizar a associação, medida por correlação, entre as projeções de baixa dimensão dos dois conjuntos de dados. Os vetores de correlação canônica são encontrados por uma análise de covariância conjunta das duas variáveis. A técnica é aplicada a um exemplo de marketing onde se analisa a associação de um fator preço e outras variáveis, como design, esportividade etc.. Testes são dados sobre como avaliar o significado da associação descoberta.
As associações entre dois conjuntos de variáveis podem ser identificadas e quantificadas por CCA. A técnica foi originalmente desenvolvida por Hotelling (1935) que analisou como a velocidade aritmética e o poder aritmético estão relacionados com a velocidade de leitura e o poder de leitura. Outros exemplos são a relação entre variáveis de política governamental e variáveis de desempenho econômico e a relação entre características do emprego as empresas.
Suponha que recebemos duas variáveis aleatórias \(X\in \mathbb{R}^q\) e \(Y\in\mathbb{R}^p\). A ideia é encontrar um índice que descreva uma possível ligação entre \(X\) e \(Y\). O CCA é baseado em índices lineares, ou seja, combinações lineares \[ a^\top X \qquad \mbox{e} \qquad b^\top Y \]
das variáveis aleatórias.
O CCA procura os vetores \(a\) e \(b\) tais que a relação dos dois índices \(a^\top X\) e \(b^\top Y\) seja quantificada de alguma forma interpretável. Mais precisamente, procura-se as projeções “mais interessantes” \(a\) e \(b\) no sentido de que maximizam a correlação \[ \rho(a,b) = \rho(a^\top X,b^\top Y) \]
entre os dois índices.
Consideremos a correlação \(\rho(a,b)\) entre as duas projeções com mais detalhes. Suponha que \[ \begin{pmatrix} X \\ Y \end{pmatrix} \sim \begin{pmatrix} \begin{pmatrix} \mu \\ \nu \end{pmatrix}, \begin{pmatrix} \Sigma_{XX} & \Sigma_{XY} \\ \Sigma_{YX} & \Sigma_{YY} \end{pmatrix}\end{pmatrix} \]
onde as submatrizes desta estrutura de covariância são dadas por \[ \mbox{Var}(X)=\Sigma_{XX}, \quad \mbox{Var}(Y) = \Sigma_{YY} \] e \[ \mbox{Cov}(X,Y)=\mbox{E}\big( (X-\mu)(Y-\nu)^\top\big) = \Sigma_{XY} = \Sigma_{YX}^\top\cdot \]Sabemos que \[ \rho(a,b) = \dfrac{a^\top \Sigma_{XY} b}{\big(a^\top\Sigma_{XX}a \big)^{1/2}\big(b^\top\Sigma_{YY} b\big)^{1/2}}\cdot \] Portanto, \(\rho(ca,b)=\rho(a,b)\) para qualquer \(c\in\mathbb{R}^+\).
Dada a invariância da escala, podemos redimensionar as projeções \(a\) e \(b\) e, assim, podemos resolver igualmente \[ \max_{a,b} a^\top \Sigma_{XY} b \] sob as restrições \[ a^\top \Sigma_{XX} a =1 \quad \mbox{e} \quad b^\top \Sigma_{YY} b=1\cdot \]
Para este problema, definamos \[ K = \Sigma_{XX}^{-1/2} \Sigma_{XY} \Sigma_{YY}^{-1/2}\cdot \]
Lembre-se da decomposição em valor singular de \(K\) do Teorema II.2. A matriz \(K\) pode ser decomposta como \[ K = \Gamma \Lambda \Delta^\top \]
com \(\Gamma=(\gamma_1,\cdots,\gamma_k)\), \(\Delta=(\delta_1,\cdots,\delta_k)\) e \(\Lambda=\mbox{diag} (\lambda_1^{1/2},\cdots,\lambda_k^{1/2})\), onde \[ k = \mbox{posto}(K)= \mbox{posto}(\Sigma_{xy})=\mbox{posto}(\Sigma_{YX}) \]
e \(\lambda_1\geq \lambda_2\geq \cdots\geq \lambda_k\) são os autovalores diferentes de zero de \(N_1=KK^\top\) e \(N_2=K^\top K\) e \(\gamma_i\) e \(\delta_j\) são os autovetores padronizados de \(N_1\) e \(N_2\), respectivamente.
Sejam agora, para \(i=1,\cdots,k\) os vetores \[ a_i = \Sigma_{XX}^{-1/2} \gamma_i \qquad \mbox{e} \qquad b_i = \Sigma_{YY}^{-1/2}\delta_i, \]
que são chamados de vetores de correlação canônicos. Usando esses vetores de correlação canônica, definimos as variáveis de correlação canônicas \[ \eta_i = a_i^\top X \qquad \mbox{e} \qquad \varphi_i = b_I^\top Y\cdot \] As quantidades \(\rho_i=\lambda_i^{1/2}\), para \(i = 1,\cdots,k\) são chamados de coeficientes de correlação canônica.Das propriedades da decomposição de valores singulares temos \[ \mbox{Cov}(\eta_i,\eta_j) = a_i^\top \Sigma_{XX} a_j = \gamma_i^\top \gamma_j =\left\{ \begin{array}{rcl} 1, & \mbox{caso} & i =j, \\ 0, & \mbox{caso} & i\neq j \cdot\end{array}\right. \] O mesmo é verdade para \(\mbox{Cov}(\varphi_i,\varphi_j)\). O seguinte teorema nos diz que os vetores de correlação canônicos são a solução para o problema de maximização.
Para qualquer \(r\), \(1\leq r\leq k\) o máximo \[ C(r)=\max_{a,b} \, a^\top \Sigma_{XY} b \] restrito a \[ a^\top \Sigma_{XX}a=1, \qquad b^\top \Sigma_{YY}b=1 \qquad \mbox{e} \qquad a_i^\top \Sigma_{XX}a =0, \]
para \(i=1,\cdots,r-1\) é dado por \[ C(r)=\rho_r=\lambda_r^{1/2} \]
e é atingido quando \(a=a_r\) e \(b=b_r\).
Seja \[ \begin{pmatrix} X \\ Y \end{pmatrix} \sim \begin{pmatrix} \begin{pmatrix} \mu \\ \nu \end{pmatrix}, \begin{pmatrix} \Sigma_{XX} & \Sigma_{XY} \\ \Sigma_{YX} & \Sigma_{YY} \end{pmatrix}\end{pmatrix}\cdot \]
Os vetores de correlação canônica \[ a_1 = \Sigma_{XX}^{-1/2}\gamma_1, \] \[ b_1 = \Sigma_{YY}^{-1/2}\delta_1 \]
maximizam a correlação entre as variáveis canônicas \[ \eta_1 = a_1^\top X, \]
\[ \varphi_1 = b_1^\top Y\cdot \]
A covariância das variáveis canônicas \(\eta\) e \(\varphi\) é dada no próximo teorema.Sejam \(\eta_i\) e \(\varphi_i\) sejam as \(i\)-ésimas variáveis de correlação canônicas, \(i=1,\cdots,k\). Definindo \(\eta=(\eta_1,\cdots,\eta_k)\) e \(\varphi=(\varphi_1,\cdots,\varphi_k)\). Então \[ \mbox{Var}\begin{pmatrix} \eta \\ \varphi \end{pmatrix} = \begin{pmatrix} \pmb{I}_k & \Lambda \\ \Lambda & \pmb{I}_k \end{pmatrix}, \] com \(\Lambda=\mbox{diag} (\lambda_1^{1/2},\cdots,\lambda_k^{1/2})\).
Este teorema mostra que os coeficientes de correlação canônica, \(\rho_i=\lambda_i^{1/2}\) são as covariâncias entre as variáveis canônicas \(\eta_i\) e \(\varphi_i\) e que os índices \(\eta_1= a^\top X\) e \(\varphi_1= b^\top Y\) têm a covariância máxima \(\sqrt{\lambda_1}=\rho_1\).
O seguinte teorema mostra que as correlações canônicas são invariantes a transformações lineares das variáveis originais.
Sejam \(X^* =U^\top X+u\) e \(Y^*= V^\top Y+\nu\) onde \(U\) e \(V\) são matrizes não singulares. Então as correlações canônicas entre \(X^*\) e \(Y^*\) são as mesmas entre \(X\) e \(Y\). Os vetores de correlação canônica de \(X^*\) e \(Y^*\) são dados por \[ a_i^*=U^{-1}a_i, \] \[ b_i^*=V^{-1}b_i\cdot \]
A hipótese de que os dois conjuntos de variáveis \(X\) e \(Y\) não são correlacionados pode ser testada, sob suposições de normalidade, com a estatística de razão de verossimilhança de Wilks (Gibbins, 1985): \[ T^{2/n} = \left| \pmb{I}-S_{YY}^{-1} S_{YX}S_{XX}^{-1} S_{XY}\right| = \prod_{1=1}^k \big( 1-\ell_i\big)\cdot \]
Esta estatística infelizmente tem uma distribuição bastante complicada. Bartlett (1939) fornece uma aproximação para \(n\) grande: \[ -\big(n-(p+q+3)/2 \big) \log \left( \prod_{i=1}^k \big( 1-\ell_i\big) \right) \sim \chi^2_{pq}\cdot \]
Um teste da hipótese de que apenas \(s\) dos coeficientes de correlação canônicos são diferentes de zero pode ser baseado (assintoticamente) na estatística \[ -\big(n-(p+q+3)/2 \big) \log \left( \prod_{i=s+1}^k \big( 1-\ell_i\big) \right) \sim \chi^2_{(p-s)(q-s)}\cdot \]
Na prática temos que estimar as matrizes de covariância \(\Sigma_{XX}\), \(\Sigma_{XY}\) e \(\Sigma_{YY}\). Vamos aplicar o CCA aos dados das marcas dos carros, CarMarks, Exercício 4, Seção XI.8. No contexto deste conjunto de dados interessa relacionar variáveis de preço com variáveis como esportividade e segurança. Em particular, gostaríamos de investigar a relação entre as duas variáveis de valor e preço não depreciado do carro e todas as outras variáveis.
Realizaremos a análise de correlção canônica (CCA) nas matrizes de dados \(X\) e \(Y\) que correspondem ao conjunto de valores \[ \{ \mbox{Price}, \mbox{Value}\} \] e
\[ \{\mbox{Economy}, \mbox{Service}, \mbox{Design}, \mbox{Sporty}, \mbox{Safety}, \mbox{Handling}\}, \] respectivamente.CarMarks = read.table(file = "http://leg.ufpr.br/~lucambio/MSM/CarMarks.txt", sep = "", header = TRUE)
head(CarMarks)
## Type Model Economy Service Value Price Design Sport Safety Handling
## 1 Audi 100 3.9 2.8 2.2 4.2 3.0 3.1 2.4 2.8
## 2 BMW 5 series 4.8 1.6 1.9 5.0 2.0 2.5 1.6 2.8
## 3 Citroen AX 3.0 3.8 3.8 2.7 4.0 4.4 4.0 2.6
## 4 Ferrari <NA> 5.3 2.9 2.2 5.9 1.7 1.1 3.3 4.3
## 5 Fiat Uno 2.1 3.9 4.0 2.6 4.5 4.4 4.4 2.2
## 6 Ford Fiesta 2.3 3.1 3.4 2.6 3.2 3.3 3.6 2.8
A análise de correlação canônica é usada para identificar e medir as associações entre dois conjuntos de variáveis. A correlação canônica é apropriada nas mesmas situações em que a regressão múltipla seria, mas onde existem múltiplas variáveis de resultado intercorrelacionadas. A análise de correlação canônica determina um conjunto de variáveis canônicas, combinações lineares ortogonais das variáveis dentro de cada conjunto que melhor explicam a variabilidade dentro e entre conjuntos.
library(ggplot2)
library(GGally)
library(CCA)
X = CarMarks[,c(6,5)]
ggpairs(X)
Y = CarMarks[,c(3,4,7,8,9,10)]
ggpairs(Y)
Para vermos as correlações dentro e entre os dois conjuntos de variáveis usamos a função matcor do pacote CCA.
matcor(X, Y)
## $Xcor
## Price Value
## Price 1.0000000 -0.8062525
## Value -0.8062525 1.0000000
##
## $Ycor
## Economy Service Design Sport Safety Handling
## Economy 1.0000000 -0.2669004 -0.6048308 -0.4485906 -0.2699442 0.6060373
## Service -0.2669004 1.0000000 0.7358654 0.6835027 0.9179337 0.3609505
## Design -0.6048308 0.7358654 1.0000000 0.8806639 0.7118285 -0.1987946
## Sport -0.4485906 0.6835027 0.8806639 1.0000000 0.6582605 -0.1995913
## Safety -0.2699442 0.9179337 0.7118285 0.6582605 1.0000000 0.3322673
## Handling 0.6060373 0.3609505 -0.1987946 -0.1995913 0.3322673 1.0000000
##
## $XYcor
## Price Value Economy Service Design Sport
## Price 1.0000000 -0.8062525 0.7608951 -0.6820468 -0.8812700 -0.8388292
## Value -0.8062525 1.0000000 -0.3822370 0.9311772 0.8090157 0.7964358
## Economy 0.7608951 -0.3822370 1.0000000 -0.2669004 -0.6048308 -0.4485906
## Service -0.6820468 0.9311772 -0.2669004 1.0000000 0.7358654 0.6835027
## Design -0.8812700 0.8090157 -0.6048308 0.7358654 1.0000000 0.8806639
## Sport -0.8388292 0.7964358 -0.4485906 0.6835027 0.8806639 1.0000000
## Safety -0.7045731 0.9019089 -0.2699442 0.9179337 0.7118285 0.6582605
## Handling 0.2926990 0.2478082 0.6060373 0.3609505 -0.1987946 -0.1995913
## Safety Handling
## Price -0.7045731 0.2926990
## Value 0.9019089 0.2478082
## Economy -0.2699442 0.6060373
## Service 0.9179337 0.3609505
## Design 0.7118285 -0.1987946
## Sport 0.6582605 -0.1995913
## Safety 1.0000000 0.3322673
## Handling 0.3322673 1.0000000
Encontrando e mostrando as correlações canônicas:
CCA = cc(X, Y)
CCA$cor
## [1] 0.9793946 0.9056556
Correlações canônicas brutas:
CCA[3:4]
## $xcoef
## [,1] [,2]
## Price -0.3204361 -1.408465
## Value 0.6169295 -1.422128
##
## $ycoef
## [,1] [,2]
## Economy -0.434867287 -0.461684146
## Service 0.205117606 -0.702965174
## Design 0.003710477 0.061419728
## Sport 0.467512331 -0.003467896
## Safety 0.221073933 0.295042657
## Handling 0.397165746 -1.006194586
Os coeficientes canônicos brutos são interpretados de maneira análoga
à interpretação dos coeficientes de regressão, ou seja, para a variável
Economy, um aumento de uma unidade nesta variável leva
a uma diminuição de -0.434867287 na primeira variável canônica do
conjunto 2 quando todas as outras variáveis são mantidas constantes.
Em seguida, usaremos comput para calcular os carregamentos das variáveis nas dimensões canônicas (variantes). Essas cargas são correlações entre as variáveis e as variáveis canônicas.
# computa carregamentos canônicos
CCA1 = comput(X, Y, CCA)
# exibe carregamentos canônicos
CCA1[3:4]
## $corr.X.xscores
## [,1] [,2]
## Price -0.9173969 -0.3979736
## Value 0.9750834 -0.2218386
##
## $corr.Y.xscores
## [,1] [,2]
## Economy -0.54248074 -0.6614131
## Service 0.88220655 -0.3198371
## Design 0.87473216 0.1979866
## Sport 0.85035387 0.1475404
## Safety 0.87096398 -0.2373185
## Handling 0.05694861 -0.8667496
As correlações acima são entre variáveis observadas e variáveis canônicas que são conhecidas como cargas canônicas. Essas variáveis canônicas são na verdade um tipo de variável latente.
Em geral, o número de dimensões canônicas é igual ao número de variáveis no conjunto menor; no entanto, o número de dimensões significativas pode ser ainda menor.
As dimensões canônicas, também conhecidas como variáveis canônicas, são variáveis latentes análogas aos fatores obtidos na análise fatorial. Para este modelo em particular, existem três dimensões canônicas, das quais apenas as duas primeiras são estatisticamente significativas.
Para os testes estatísticos usamos o pacote R CCP.
# testa as dimensões canônicas
rho = CCA$cor
rho
## [1] 0.9793946 0.9056556
# Definindo o número de observações, número de variáveis no primeiro conjunto e número de
# variáveis no segundo conjunto
n = dim(X)[1]
p = length(X)
q = length(Y)
library(CCP)
# Calcula o p-valor utilizando as aproximações F de diferentes testes estatísticos:
p.asym(rho, n, p, q, tstat = "Wilks")
## Wilks' Lambda, using F-approximation (Rao's F):
## stat approx df1 df2 p.value
## 1 to 2: 0.007332857 28.47430 12 32 1.117995e-13
## 2 to 2: 0.179787957 15.51117 5 17 8.143198e-06
p.asym(rho, n, p, q, tstat = "Hotelling")
## Hotelling-Lawley Trace, using F-approximation:
## stat approx df1 df2 p.value
## 1 to 2: 28.080239 35.10030 12 30 2.464695e-14
## 2 to 2: 4.562108 15.51117 5 34 5.954839e-08
p.asym(rho, n, p, q, tstat = "Pillai")
## Pillai-Bartlett Trace, using F-approximation:
## stat approx df1 df2 p.value
## 1 to 2: 1.779426 22.857202 12 34 8.031353e-13
## 2 to 2: 0.820212 5.283671 5 38 8.828018e-04
p.asym(rho, n, p, q, tstat = "Roy")
## Roy's Largest Root, using F-approximation:
## stat approx df1 df2 p.value
## 1 to 1: 0.9592139 66.63471 6 17 7.160728e-11
##
## F statistic for Roy's Greatest Root is an upper bound.
A variável canônica \(\widehat{\eta}_1\) pode ser interpretada como um índice de Price e Value. A variável canônica \(\widehat{\varphi}_1\) é formada principalmente pelas variáveis Service, Design, Sport e Safety.