1 Introdução

A Análise de Correlação Canônica (ACC) é uma técnica estatística multivariada sofisticada que tem como objetivo principal descobrir e quantificar a associação entre dois conjuntos de variáveis. Através da criação de combinações lineares, também conhecidas como variáveis canônicas, a ACC maximiza a correlação entre os conjuntos de variáveis. Esta técnica é empregada em uma variedade de campos, incluindo economia, ecologia e psicologia, para analisar a interação entre variáveis multidimensionais e auxiliar na tomada de decisões baseadas em dados. A ACC, portanto, atua como uma ferramenta para explorar a estrutura de correlação entre dois conjuntos de variáveis, fornecendo uma compreensão mais profunda da natureza dessas relações.

2 Carregando pacotes

library(tidyverse)
library(readxl)
library(DT)
library(ggcorrplot)
library(corrplot)
library(CCA)
library(CCP)
library(candisc)

3 Conjunto de dados

Os dados utilizados são do pacote palmerpenguins, que contém informações sobre pinguins. O conjunto de dados contém 344 observações e 8 variáveis. As variáveis que serão utilizadas são: bill_length_mm: comprimento do bico em milímetros. bill_depth_mm: profundidade do bico em milímetros. flipper_length_mm: comprimento da nadadeira em milímetros. body_mass_g: massa corporal em gramas.

Essas variáveis serão divididas em dois conjuntos de dados, X e Y, para a análise de correlação canônica.

data("penguins", package = 'palmerpenguins')
Dados<- penguins
Dados <- na.omit(Dados)
Dados<- Dados[,c(3:6)]
datatable(Dados,
           class = "row-border hover",
      options = list(
        scrollX = TRUE,
        dom = 'ltipr'
      ))

4 Gráfico da matriz de correlação

X<- Dados[,1:2]
Y<- Dados[,3:4]
XY<- cbind(X,Y)
 ggcorrplot(
            cor(XY),
            hc.order = T,
            type = "lower",
            lab = T,
            colors = c("#003262", "#FFFFFF", "#D21E1C")
          )

5 Análise de correlação canônica

CCA<-cancor(X,Y, set.names = c("X", "Y"))
CCA
## 
## Canonical correlation analysis of:
##   2   X  variables:  bill_length_mm, bill_depth_mm 
##   with    2   Y  variables:  flipper_length_mm, body_mass_g 
## 
##      CanR   CanRSQ    Eigen percent    cum                          scree
## 1 0.78763 0.620363 1.634098  99.542  99.54 ******************************
## 2 0.08639 0.007463 0.007519   0.458 100.00                               
## 
## Test of H0: The canonical correlations in the 
## current row and all that follow are zero
## 
##    CanR LR test stat approx F numDF denDF Pr(> F)    
## 1 0.788        0.377    103.5     4   658  <2e-16 ***
## 2 0.086        0.993      2.5     1   330    0.12    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

A saída anterior apresenta a correlação do par de variáveis canônicas e o teste de hipótese para a significância da correlação canônica. No nosso exemplo, apenas um par de variável canônica foi significativo, utilizando um alpha de 0.05. A correlação do par de variável canônica foi de 0.788 e a porcentagem da variância explicada foi de aproximadamente 99%.

6 Coeficientes canônicos

coef(CCA, type = "both", standardize = T)
## [[1]]
##                  Xcan1  Xcan2
## bill_length_mm -0.6969 0.7546
## bill_depth_mm   0.5753 0.8510
## 
## [[2]]
##                     Ycan1  Ycan2
## flipper_length_mm -1.0240 -1.776
## body_mass_g        0.0276  2.050

7 Gráficos para a verificação da qualidade do ajuste

plot(CCA,  main = "Análise de correlação canônica")

Este gráfico é o gráfico de dispersão dos escores canônicos. Ele mostra a relação entre os escores canônicos de X e Y. Se os escores canônicos de X e Y estiverem correlacionados, os pontos estarão alinhados em uma linha. Se os escores canônicos de X e Y não estiverem correlacionados, os pontos estarão dispersos. Por padrão a função traça uma elipse que capta 68% dos dados, quanto mais achatada estiver essa elipse, maior a correlação entre os escores canônicos.

Perceba que este gráfico foi feito apenas para o par de variáveis canônicas significativo, caso houvesse mais de um par significativo, deverá ser feito um gráfico para cada par.

heplot(CCA, col=c("red", "black"),var.vectors = "X" ,main = "Hypothesis- Error (HE) plots for canonical correlation analysis")

## Vector scale factor set to  8
heplot(CCA, col=c("red", "black"),var.vectors = "Y" ,main = "Hypothesis- Error (HE) plots for canonical correlation analysis")

## Vector scale factor set to  5

Os 2 gráficos anteriores são os gráficos de hipótese-erro (HE). Eles mostram a relação entre os escores canônicos e as variáveis originais. Se as variáveis originais estiverem correlacionadas com os escores canônicos, elas estarão alinhadas com os vetores canônicos. Quanto maior o tamanho da reta, mais significativa é a variável original para a variável canônica.

A elipse no centro do gráfico é a elipse para os erros, quanto menor a elipse, melhor o ajuste do modelo.