Teoria dos Coeficientes de Correlação
A correlação mede a força e a direção da relação linear ou monotônica entre duas variáveis quantitativas. O valor do coeficiente de correlação, frequentemente representado por r (amostra) ou ρ (população), varia entre −1 e 1.
|
Os três principais tipos de coeficientes de correlação:
Pearson (Paramétrica): Mede a relação linear e pressupõe que os dados são contínuos, têm uma distribuição aproximadamente normal e não possuem outliers significativos.
Spearman (Não Paramétrica): Mede a relação monotônica (a tendência de as variáveis mudarem juntas) e é baseado nos postos (ordem) dos dados. É robusto para dados não-normais, relações não-lineares e variáveis ordinais.
Kendall (Não Paramétrica): Semelhante ao Spearman, mede a força de dependência entre pares de variáveis (concordância) e é também uma alternativa não paramétrica, útil para dados ordinais ou contínuos com outliers.
Iremos utilizar o dataset embutido do R, mtcars
(Motor Trend Car Road Tests), que contém dados de 32 automóveis.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 4.0.0 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library (dplyr)
library(ggcorrplot)
Comando | Descrição |
library(tidyverse) |
Carrega um conjunto de pacotes (como dplyr e
ggplot2 ) que são essenciais para manipulação, análise e
visualização de dados. |
library(ggplot2) |
Pacote fundamental para a criação de gráficos estatísticos (já
incluído no tidyverse , mas listado separadamente). |
library(dplyr) |
Pacote para manipulação de dados, como filtragem, seleção e
sumarização (já incluído no tidyverse , mas listado
separadamente). |
library(ggcorrplot) |
Pacote especializado para visualizar a matriz de correlação em formato de mapa de calor (heatmap). |
Comando | Descrição |
mtcars |
Exibe o conjunto de dados. |
?mtcars |
Abre a documentação (ajuda) do conjunto de dados para entender as variáveis. |
mtcars %>% ggplot(aes(x=wt, y=mpg)) + geom_point() |
Cria um gráfico de dispersão simples. Ele plota as
Milhas por Galão (mpg ) em função do
Peso do Carro (wt ). A visualização é o
primeiro passo para confirmar se a relação é linear e negativa (carro
mais pesado → menor milhagem). |
# grafico de dispersão simples
mtcars %>%
ggplot(aes(x=wt, y=mpg)) + geom_point()
Estes comandos aplicam a teoria descrita acima às variáveis
mpg
e wt
para demonstrar a aplicação de cada
método.
Comando | Descrição |
cor(mtcars$mpg, mtcars$wt, method = c("pearson")) |
Calcula o coeficiente de Pearson entre as duas variáveis. Espera-se um valor negativo próximo de −1, indicando uma forte relação linear inversa. |
cor(mtcars$mpg, mtcars$wt, method = c("spearman")) |
Calcula o coeficiente de Spearman. Uma alternativa robusta, que geralmente fornece resultados similares ao Pearson para relações lineares fortes. |
cor(mtcars$mpg, mtcars$wt, method = c("kendall")) |
Calcula o coeficiente de Kendall. Outra medida não paramétrica de dependência. |
cor(mtcars$mpg, mtcars$wt, method = c("pearson"))
## [1] -0.8676594
cor(mtcars$mpg, mtcars$wt, method = c("spearman"))
## [1] -0.886422
cor(mtcars$mpg, mtcars$wt, method = c("kendall"))
## [1] -0.7278321
Em vez de calcular a correlação entre apenas duas variáveis, a
matriz de correlação calcula o coeficiente para
todos os pares possíveis de variáveis no
dataset mtcars
.
Comando | Descrição |
cor(mtcars, method = "spearman") |
Calcula a matriz usando o método Spearman (baseado em postos) para todas as colunas. |
cor(mtcars, method = "pearson") |
Calcula a matriz usando o método Pearson. |
cor(mtcars, method = "kendall") |
Calcula a matriz usando o método Kendall. |
correl <- cor(mtcars, method = "spearman") |
Armazena a matriz de correlação de Spearman na
variável correl para uso nos gráficos de
heatmap. |
## Matriz de correlaçao
cor(mtcars, method = "spearman")
## mpg cyl disp hp drat wt
## mpg 1.0000000 -0.9108013 -0.9088824 -0.8946646 0.65145546 -0.8864220
## cyl -0.9108013 1.0000000 0.9276516 0.9017909 -0.67888119 0.8577282
## disp -0.9088824 0.9276516 1.0000000 0.8510426 -0.68359210 0.8977064
## hp -0.8946646 0.9017909 0.8510426 1.0000000 -0.52012499 0.7746767
## drat 0.6514555 -0.6788812 -0.6835921 -0.5201250 1.00000000 -0.7503904
## wt -0.8864220 0.8577282 0.8977064 0.7746767 -0.75039041 1.0000000
## qsec 0.4669358 -0.5723509 -0.4597818 -0.6666060 0.09186863 -0.2254012
## vs 0.7065968 -0.8137890 -0.7236643 -0.7515934 0.44745745 -0.5870162
## am 0.5620057 -0.5220712 -0.6240677 -0.3623276 0.68657079 -0.7377126
## gear 0.5427816 -0.5643105 -0.5944703 -0.3314016 0.74481617 -0.6761284
## carb -0.6574976 0.5800680 0.5397781 0.7333794 -0.12522294 0.4998120
## qsec vs am gear carb
## mpg 0.46693575 0.7065968 0.56200569 0.5427816 -0.65749764
## cyl -0.57235095 -0.8137890 -0.52207118 -0.5643105 0.58006798
## disp -0.45978176 -0.7236643 -0.62406767 -0.5944703 0.53977806
## hp -0.66660602 -0.7515934 -0.36232756 -0.3314016 0.73337937
## drat 0.09186863 0.4474575 0.68657079 0.7448162 -0.12522294
## wt -0.22540120 -0.5870162 -0.73771259 -0.6761284 0.49981205
## qsec 1.00000000 0.7915715 -0.20333211 -0.1481997 -0.65871814
## vs 0.79157148 1.0000000 0.16834512 0.2826617 -0.63369482
## am -0.20333211 0.1683451 1.00000000 0.8076880 -0.06436525
## gear -0.14819967 0.2826617 0.80768800 1.0000000 0.11488698
## carb -0.65871814 -0.6336948 -0.06436525 0.1148870 1.00000000
cor(mtcars, method = "pearson")
## mpg cyl disp hp drat wt
## mpg 1.0000000 -0.8521620 -0.8475514 -0.7761684 0.68117191 -0.8676594
## cyl -0.8521620 1.0000000 0.9020329 0.8324475 -0.69993811 0.7824958
## disp -0.8475514 0.9020329 1.0000000 0.7909486 -0.71021393 0.8879799
## hp -0.7761684 0.8324475 0.7909486 1.0000000 -0.44875912 0.6587479
## drat 0.6811719 -0.6999381 -0.7102139 -0.4487591 1.00000000 -0.7124406
## wt -0.8676594 0.7824958 0.8879799 0.6587479 -0.71244065 1.0000000
## qsec 0.4186840 -0.5912421 -0.4336979 -0.7082234 0.09120476 -0.1747159
## vs 0.6640389 -0.8108118 -0.7104159 -0.7230967 0.44027846 -0.5549157
## am 0.5998324 -0.5226070 -0.5912270 -0.2432043 0.71271113 -0.6924953
## gear 0.4802848 -0.4926866 -0.5555692 -0.1257043 0.69961013 -0.5832870
## carb -0.5509251 0.5269883 0.3949769 0.7498125 -0.09078980 0.4276059
## qsec vs am gear carb
## mpg 0.41868403 0.6640389 0.59983243 0.4802848 -0.55092507
## cyl -0.59124207 -0.8108118 -0.52260705 -0.4926866 0.52698829
## disp -0.43369788 -0.7104159 -0.59122704 -0.5555692 0.39497686
## hp -0.70822339 -0.7230967 -0.24320426 -0.1257043 0.74981247
## drat 0.09120476 0.4402785 0.71271113 0.6996101 -0.09078980
## wt -0.17471588 -0.5549157 -0.69249526 -0.5832870 0.42760594
## qsec 1.00000000 0.7445354 -0.22986086 -0.2126822 -0.65624923
## vs 0.74453544 1.0000000 0.16834512 0.2060233 -0.56960714
## am -0.22986086 0.1683451 1.00000000 0.7940588 0.05753435
## gear -0.21268223 0.2060233 0.79405876 1.0000000 0.27407284
## carb -0.65624923 -0.5696071 0.05753435 0.2740728 1.00000000
cor(mtcars, method = "kendall")
## mpg cyl disp hp drat wt
## mpg 1.0000000 -0.7953134 -0.7681311 -0.7428125 0.46454879 -0.7278321
## cyl -0.7953134 1.0000000 0.8144263 0.7851865 -0.55131785 0.7282611
## disp -0.7681311 0.8144263 1.0000000 0.6659987 -0.49898277 0.7433824
## hp -0.7428125 0.7851865 0.6659987 1.0000000 -0.38262689 0.6113081
## drat 0.4645488 -0.5513178 -0.4989828 -0.3826269 1.00000000 -0.5471495
## wt -0.7278321 0.7282611 0.7433824 0.6113081 -0.54714953 1.0000000
## qsec 0.3153652 -0.4489698 -0.3008155 -0.4729061 0.03272155 -0.1419881
## vs 0.5896790 -0.7710007 -0.6033059 -0.6305926 0.37510111 -0.4884787
## am 0.4690128 -0.4946212 -0.5202739 -0.3039956 0.57554849 -0.6138790
## gear 0.4331509 -0.5125435 -0.4759795 -0.2794458 0.58392476 -0.5435956
## carb -0.5043945 0.4654299 0.4137360 0.5959842 -0.09535193 0.3713741
## qsec vs am gear carb
## mpg 0.31536522 0.5896790 0.46901280 0.43315089 -0.50439455
## cyl -0.44896982 -0.7710007 -0.49462115 -0.51254349 0.46542994
## disp -0.30081549 -0.6033059 -0.52027392 -0.47597955 0.41373600
## hp -0.47290613 -0.6305926 -0.30399557 -0.27944584 0.59598416
## drat 0.03272155 0.3751011 0.57554849 0.58392476 -0.09535193
## wt -0.14198812 -0.4884787 -0.61387896 -0.54359562 0.37137413
## qsec 1.00000000 0.6575431 -0.16890405 -0.09126069 -0.50643945
## vs 0.65754312 1.0000000 0.16834512 0.26974788 -0.57692729
## am -0.16890405 0.1683451 1.00000000 0.77078758 -0.05859929
## gear -0.09126069 0.2697479 0.77078758 1.00000000 0.09801487
## carb -0.50643945 -0.5769273 -0.05859929 0.09801487 1.00000000
Esta seção aplica o pacote ggcorrplot
para visualizar a
matriz de correlação, tornando a interpretação de muitas relações de
pares muito mais fácil.
Comando | Descrição |
ggcorrplot(correl) |
Cria o heatmap básico da matriz armazenada. |
ggcorrplot(correl, method = "circle") |
Define a forma dos elementos (neste caso, círculos) para representar a magnitude da correlação. |
ggcorrplot(correl, method = "circle", hc.order = TRUE) |
Ordena as variáveis usando um método de
agrupamento hierárquico (hc.order = TRUE ),
o que agrupa visualmente variáveis com correlações similares. |
ggcorrplot(..., type = "lower") |
Exibe apenas a metade inferior da matriz, pois a matriz é simétrica (a correlação de A com B é a mesma de B com A), simplificando a visualização. |
ggcorrplot(..., lab = TRUE, lab_size = 3.5) |
Adiciona os valores numéricos
(lab = TRUE ) dos coeficientes de correlação diretamente no
gráfico. |
ggcorrplot(..., p.mat = cor_pmat(mtcars), insig = "blank") |
O comando mais avançado: Ele calcula os valores-p
(p.mat ) de cada correlação e, em seguida, deixa em
branco (insig = "blank" ) aquelas
correlações que não são estatisticamente
significativas. Isso foca a atenção apenas nas correlações que
não são devidas ao acaso (nível de significância padrão α=0.05). |
correl <- cor(mtcars, method = "spearman")
ggcorrplot(correl)
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the ggcorrplot package.
## Please report the issue at <https://github.com/kassambara/ggcorrplot/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ggcorrplot(correl, method = "circle")
ggcorrplot(correl, method = "circle", hc.order = TRUE)
ggcorrplot(correl, method = "circle", hc.order = TRUE, type = "lower")
ggcorrplot(correl, method = "square", hc.order = TRUE, type = "lower",
lab = TRUE, lab_size = 3.5)
ggcorrplot(
correl,
method = "square",
hc.order = TRUE,
type = "lower",
lab = TRUE,
lab_size = 3.5,
p.mat = cor_pmat(mtcars),
insig = "blank"
)