8  Correlação

8.1 O que é correlação

Correlação é uma medida estatística que quantifica a força e a direção de uma associação linear entre duas variáveis quantitativas.

O coeficiente de correlação de Pearson (\(r\)) é o mais utilizado:

\[r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2 \cdot \sum_{i=1}^{n}(y_i - \bar{y})^2}}\]

Propriedades:

  • \(-1 \leq r \leq 1\)
  • \(r = 1\): correlação linear positiva perfeita
  • \(r = -1\): correlação linear negativa perfeita
  • \(r = 0\): ausência de correlação linear

8.1.1 Interpretação da magnitude

\(|r|\) Interpretação
0,00 - 0,10 Muito fraca
0,10 - 0,30 Fraca
0,30 - 0,50 Moderada
0,50 - 0,70 Forte
0,70 - 0,90 Muito forte
0,90 - 1,00 Quase perfeita

8.2 Correlação x causalidade

Mercado e pesquisa

Correlação não implica causalidade. Este é um dos conceitos mais importantes - e mais frequentemente mal aplicados - em análise de dados. Duas variáveis podem ser fortemente correlacionadas por:

  1. A causa: X causa Y
  2. Causalidade reversa: Y causa X
  3. Variável confundidora: uma terceira variável Z causa tanto X quanto Y
  4. Coincidência estatística

Antes de inferir causalidade, é necessário planejamento experimental adequado, como randomização e grupos de controle.

8.3 Pearson - Spearman: qual usar?

Critério Pearson Spearman
Pressuposto Normalidade bivariada, relação linear Nenhum sobre distribuição
Tipo de dado Contínuo Contínuo ou ordinal
Opera sobre Valores originais Ranks (ordens)
Sensível a outliers Sim Não
Detecta Correlação linear Correlação monotônica

Use Spearman quando os dados não são normais, contêm outliers ou a variável é ordinal.

8.4 Correlação de Pearson

# Correlação entre concentração e absorção
cor_pearson <- cor.test(CO2$conc, CO2$uptake, method = "pearson")

cat("Correlação de Pearson (r):", round(cor_pearson$estimate, 4), "\n")
Correlação de Pearson (r): 0.4852 
cat("R²:                       ", round(cor_pearson$estimate^2, 4), "\n")
R²:                        0.2354 
cat("p-valor:                  ", round(cor_pearson$p.value, 4), "\n")
p-valor:                   0 
cat("IC 95%:                   ",
    round(cor_pearson$conf.int[1], 3), "-",
    round(cor_pearson$conf.int[2], 3), "\n")
IC 95%:                    0.302 - 0.634 

8.5 Correlação de Spearman

cor_spearman <- cor.test(CO2$conc, CO2$uptake, method = "spearman", exact = FALSE)

cat("Correlação de Spearman (ρ):", round(cor_spearman$estimate, 4), "\n")
Correlação de Spearman (ρ): 0.58 
cat("p-valor:                   ", round(cor_spearman$p.value, 4), "\n")
p-valor:                    0 

8.6 Comparação: Pearson - Spearman

data.frame(
  Metodo       = c("Pearson (r)", "Spearman (ρ)"),
  Coeficiente  = round(c(cor_pearson$estimate, cor_spearman$estimate), 4),
  P_valor      = round(c(cor_pearson$p.value,  cor_spearman$p.value), 4),
  Interpretacao = c("Correlação linear", "Correlação monotônica")) |>
  kable(caption = "Correlação entre concentração e absorção de CO₂")
Correlação entre concentração e absorção de CO₂
Metodo Coeficiente P_valor Interpretacao
cor Pearson (r) 0.4852 0 Correlação linear
rho Spearman (ρ) 0.5800 0 Correlação monotônica

8.7 Correlação por subgrupo

CO2 |>
  group_by(Type, Treatment) |>
  summarise(
    r_pearson  = round(cor(conc, uptake, method = "pearson"), 4),
    r_spearman = round(cor(conc, uptake, method = "spearman"), 4),
    .groups    = "drop") |>
  kable(caption = "Correlação por grupo experimental")
Correlação por grupo experimental
Type Treatment r_pearson r_spearman
Quebec nonchilled 0.7039 0.8336
Quebec chilled 0.7422 0.8650
Mississippi nonchilled 0.7020 0.8004
Mississippi chilled 0.5587 0.6498

8.8 Visualização

8.8.1 Gráfico de dispersão com correlação anotada

r_val  <- round(cor_pearson$estimate, 3)
r2_val <- round(cor_pearson$estimate^2, 3)

ggplot(CO2, aes(x = conc, y = uptake)) +
  geom_point(aes(color = Type, shape = Treatment),
             size = 2.8, alpha = 0.7) +
  geom_smooth(method = "lm",
              color = "#224573",
              fill  = "#E5D3B3",
              alpha = 0.3) +
  scale_color_manual(values = c("#224573", "#6B4F4F")) +
  annotate("text",
           x     = max(CO2$conc) * 0.65,
           y     = min(CO2$uptake) * 1.3,
           label = paste0("r = ", r_val, "\nR² = ", r2_val),
           color = "#224573",
           size  = 4.5,
           hjust = 0) +
  labs(title    = "Correlação: concentração - absorção de CO₂",
       subtitle = "r de Pearson com intervalo de confiança",
       x     = "Concentração de CO₂ (mL/L)",
       y     = "Absorção de CO₂ (μmol/m²s)",
       color = "Origem",
       shape = "Tratamento",
      caption = "Jennifer Luz Lopes | Café com R") +
  theme_classic(base_size = 13) +
  theme(plot.title      = element_text(color = "#224573", face = "bold"),
        legend.position = "right")

8.8.2 Correlação por subgrupo: facetas

ggplot(CO2, aes(x = conc, y = uptake, color = Type)) +
  geom_point(size = 2.5, alpha = 0.7) +
  geom_smooth(method = "lm", se = TRUE, fill = "#E5D3B3", alpha = 0.3) +
  facet_wrap(~Treatment,
             labeller = labeller(
               Treatment = c("nonchilled" = "Nao resfriada",
                             "chilled"    = "Resfriada"))) +
  scale_color_manual(values = c("#224573", "#6B4F4F")) +
  labs(title    = "Correlação por tratamento",
       subtitle = "Regressão linear por grupo de origem",
       x     = "Concentração de CO₂ (mL/L)",
       y     = "Absorção de CO₂ (μmol/m²s)",
       color = "Origem",
      caption = "Jennifer Luz Lopes | Café com R") +
  theme_classic(base_size = 13) +
  theme(plot.title       = element_text(color = "#224573", face = "bold"),
        strip.background = element_rect(fill = "#E5D3B3", color = NA),
        strip.text       = element_text(color = "#224573", face = "bold"),
        legend.position  = "bottom")

8.9 Teste de significância da correlação

Testar se a correlação observada é estatisticamente diferente de zero não é suficiente para concluir que ela é praticamente relevante. Com amostras grandes, correlações muito pequenas podem ser altamente significativas.

Boas práticas

Sempre reporte o coeficiente \(r\) (ou \(\rho\)), o p-valor e o intervalo de confiança. O \(r^2\) indica a proporção da variância de uma variável explicada pela outra - é mais informativo para a interpretação prática do que o p-valor isolado.

# Intervalo de confiança de 95% para r de Pearson
cat("Correlação r =", round(cor_pearson$estimate, 4), "\n")
Correlação r = 0.4852 
cat("IC 95%: [",
    round(cor_pearson$conf.int[1], 4), ",",
    round(cor_pearson$conf.int[2], 4), "]\n")
IC 95%: [ 0.3022 , 0.6337 ]
cat("R² =", round(cor_pearson$estimate^2 * 100, 1),
    "% da variância de uptake é explicada por conc\n")
R² = 23.5 % da variância de uptake é explicada por conc
Atenção - erros comuns
  • Interpretar r = 0 como ausência de relação: pode existir relação não linear
  • Usar Pearson com dados que têm relação curvilínea: o coeficiente subestimará a associação
  • Ignorar outliers: um único ponto extremo pode alterar r drasticamente
  • Confundir r com R²: r = 0,5 significa que apenas 25% da variância é explicada (0,5² = 0,25)