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:
A causa: X causa Y
Causalidade reversa: Y causa X
Variável confundidora: uma terceira variável Z causa tanto X quanto Y
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çãocor_pearson <-cor.test(CO2$conc, CO2$uptake, method ="pearson")cat("Correlação de Pearson (r):", round(cor_pearson$estimate, 4), "\n")
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 Pearsoncat("Correlação r =", round(cor_pearson$estimate, 4), "\n")
---title: "Correlação"---```{r setup, include=FALSE}knitr::opts_chunk$set(echo=TRUE, warning=FALSE, message=FALSE, fig.align="center", fig.width=9, fig.height=5.5)library(tidyverse); library(corrplot); library(knitr)cores_cafe <-c("#224573", "#6B4F4F", "#4A6FA5", "#E5D3B3")data("CO2")```## 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### 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 |## Correlação x causalidade::: callout-important## 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 Y2. Causalidade reversa: Y causa X3. Variável confundidora: uma terceira variável Z causa tanto X quanto Y4. Coincidência estatísticaAntes de inferir causalidade, é necessário planejamento experimental adequado, como randomização e grupos de controle.:::## 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.## Correlação de Pearson```{r pearson}# Correlação entre concentração e absorçãocor_pearson <-cor.test(CO2$conc, CO2$uptake, method ="pearson")cat("Correlação de Pearson (r):", round(cor_pearson$estimate, 4), "\n")cat("R²: ", round(cor_pearson$estimate^2, 4), "\n")cat("p-valor: ", round(cor_pearson$p.value, 4), "\n")cat("IC 95%: ",round(cor_pearson$conf.int[1], 3), "-",round(cor_pearson$conf.int[2], 3), "\n")```## Correlação de Spearman```{r spearman}cor_spearman <-cor.test(CO2$conc, CO2$uptake, method ="spearman", exact =FALSE)cat("Correlação de Spearman (ρ):", round(cor_spearman$estimate, 4), "\n")cat("p-valor: ", round(cor_spearman$p.value, 4), "\n")```## Comparação: Pearson - Spearman```{r comparacao_corr}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 por subgrupo```{r corr_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")```## Visualização### Gráfico de dispersão com correlação anotada```{r dispersao_correlacao}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")```### Correlação por subgrupo: facetas```{r dispersao_facetado}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")```## Teste de significância da correlaçãoTestar 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.::: callout-tip## Boas práticasSempre 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.:::```{r ic_correlacao}# Intervalo de confiança de 95% para r de Pearsoncat("Correlação r =", round(cor_pearson$estimate, 4), "\n")cat("IC 95%: [",round(cor_pearson$conf.int[1], 4), ",",round(cor_pearson$conf.int[2], 4), "]\n")cat("R² =", round(cor_pearson$estimate^2*100, 1),"% da variância de uptake é explicada por conc\n")```::: callout-warning## 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):::