Correlação, Causalidade e a Exploração de Múltiplas Variáveis

por Frank de Alcantara em 16/08/2026

Correlação, Causalidade e a Exploração de Múltiplas Variáveis

Os cinco artigos anteriores trataram uma variável de cada vez: o seu centro, a sua dispersão, a sua forma, a sua distribuição. A ciência de dados, porém, vive das relações entre variáveis. A pergunta que move quase toda análise não é como esta coluna se distribui?, mas como esta coluna se move quando aquela se move?. Idade e salário sobem juntos? Tempo de carregamento e taxa de abandono? Investimento em anúncios e receita? Medir essa comovimentação é o assunto da primeira metade deste artigo.

A segunda metade enfrenta a armadilha que espreita toda medida de associação, e que é, sem exagero, o erro mais caro da estatística aplicada: confundir correlação com causa. Duas variáveis que variam juntas podem estar ligadas por uma seta causal, por uma terceira variável que empurra as duas, ou por puro acaso, e distinguir esses casos exige mais do que um número entre $-1$ e $1$. Fechamos estendendo a exploração a muitas variáveis simultâneas, o retrato que precede qualquer modelo. Mantemos o exemplo da equipe de oito pessoas dos artigos anteriores e o combinado de sempre: exemplos em C++23, laboratório em Python no Colab e um experimento em JavaScript.

1. Covariância e correlação

Para medir se duas variáveis numéricas variam juntas, começamos pela covariância. A intuição é simples: quando $X$ está acima da sua média, $Y$ também tende a estar? Se sim, os desvios $(x_i-\bar{x})$ e $(y_i-\bar{y})$ têm o mesmo sinal, o produto é positivo, e a média desses produtos é positiva. Para $n$ pares observados, $x_i$ e $y_i$ são os valores do par $i$, enquanto $\bar x$ e $\bar y$ são as respectivas médias amostrais. A covariância amostral é

\[\operatorname{cov}(X,Y)=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y}),\]

na qual o divisor $n-1$ é o mesmo grau de liberdade perdido da variância amostral do segundo artigo; de fato, a covariância de uma variável com ela mesma é exatamente a sua variância. Na nossa equipe, cruzando idade e salário (em milhares de reais), a soma dos produtos dos desvios é $\sum(x_i-\bar{x})(y_i-\bar{y})=347{,}3125$, e dividindo por $n-1=7$ obtemos $\operatorname{cov}=49{,}6161$. O sinal positivo confirma que idade e salário sobem juntos nesta equipe.

O problema da covariância é a unidade: $49{,}6161$ está em anos vezes milhares de reais, uma grandeza sem interpretação intuitiva, e o seu valor cresce se trocarmos reais por centavos. A correlação de Pearson, denotada por $r$, resolve isso normalizando a covariância pelos desvios padrão amostrais $s_X$ e $s_Y$, produzindo um número puro:

\[r=\frac{\operatorname{cov}(X,Y)}{s_X\,s_Y}=\frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum(x_i-\bar{x})^2}\sqrt{\sum(y_i-\bar{y})^2}}.\]

Com $s_X=9{,}5235$ e $s_Y=5{,}2270$, a correlação entre idade e salário é $r=49{,}6161/(9{,}5235\times5{,}2270)\approx0{,}9967$, quase o máximo possível. O coeficiente $r$ é sempre limitado ao intervalo $[-1,1]$, uma consequência da desigualdade de Cauchy-Schwarz que a atenta leitora demonstrará nos exercícios: $r=1$ significa que os pontos caem exatamente sobre uma reta de inclinação positiva, $r=-1$ sobre uma reta de inclinação negativa, e $r=0$ significa ausência de associação linear. Duas propriedades tornam $r$ tão útil. Primeira, ele é invariante a transformações afins de cada variável: somar constantes ou multiplicar por fatores positivos não muda $r$, o que se verifica convertendo salário de reais para dólares e obtendo o mesmo $0{,}9967$. Segunda, e mais traiçoeira, $r$ mede apenas a associação linear: uma relação curva perfeita pode ter $r=0$, como veremos, de modo que $r=0$ nunca deve ser lido como sem relação, apenas como sem relação linear.

1.1 Exercícios da Seção 1

1. Calcule a covariância e a correlação de idade e salário da equipe, mostrando as somas intermediárias.

Solução: Com $\bar{x}=33{,}875$ anos e $\bar{y}=11{,}7125$ mil reais, calculam-se $\sum(x_i-\bar{x})(y_i-\bar{y})=347{,}3125$, $\sum(x_i-\bar{x})^2=634{,}875$ e $\sum(y_i-\bar{y})^2=191{,}2488$. A covariância é $347{,}3125/7\approx49{,}6161$. A correlação é $347{,}3125/\sqrt{634{,}875\times191{,}2488}\approx0{,}9967$. As duas versões da fórmula, com e sem o divisor $n-1$, dão o mesmo $r$ porque o divisor se cancela na razão.

2. Mostre que a correlação é invariante a mudanças de escala e de origem.

Solução: Seja $X’=aX+b$ com $a>0$. Os desvios de $X’$ são $x_i’-\bar{x}’=a(x_i-\bar{x})$, logo $\operatorname{cov}(X’,Y)=a\operatorname{cov}(X,Y)$ e $s_{X’}=a\,s_X$. Na razão $r=\operatorname{cov}(X’,Y)/(s_{X’}s_Y)$, o fator $a$ aparece no numerador e no denominador e se cancela; a constante $b$ desaparece na subtração dos desvios. Portanto, $r$ não muda. É por isso que converter reais em dólares ou anos em meses deixa a correlação intacta.

3. Prove que $-1\le r\le1$ e que $r=\pm1$ implica relação linear perfeita.

Solução: Sejam $u_i=x_i-\bar{x}$ e $v_i=y_i-\bar{y}$. Pela desigualdade de Cauchy-Schwarz, $\left(\sum u_iv_i\right)^2\le\left(\sum u_i^2\right)\left(\sum v_i^2\right)$, e dividindo pelos dois somatórios positivos obtemos $r^2\le1$, ou seja, $-1\le r\le1$. A igualdade em Cauchy-Schwarz ocorre se e só se os vetores $u$ e $v$ são proporcionais, $v_i=\lambda u_i$ para algum $\lambda$, o que significa $y_i-\bar{y}=\lambda(x_i-\bar{x})$: os pontos caem exatamente sobre uma reta. O sinal de $r$ é o sinal de $\lambda$.

4. Construa um conjunto com correlação zero mas dependência perfeita.

Solução: Tome $x\in{-3,-2,-1,0,1,2,3}$ e $y=x^2$. A dependência é determinística: conhecer $x$ dá $y$ exatamente. Ainda assim, $r=0$, porque a parábola é simétrica em torno de $x=0$ e os produtos $(x_i-\bar{x})(y_i-\bar{y})$ se cancelam aos pares. O exemplo mostra que $r=0$ significa ausência de associação linear, não ausência de associação: o olho vê a parábola que a correlação não vê.

5. Um conjunto de cinco pontos tem $r=0{,}69$. Acrescenta-se um sexto ponto muito afastado, $(20,20)$, e $r$ salta para $0{,}99$. Comente a robustez de $r$.

Solução: A correlação de Pearson não é robusta: um único ponto de alta alavancagem domina as somas de produtos e de quadrados, puxando $r$ para perto de $1$ mesmo que os cinco pontos originais estivessem quase sem relação. É o mesmo fenômeno de ponto de ruptura $1/n$ da média, do segundo artigo, agora em duas dimensões. Sempre que $r$ for alto, convém olhar o gráfico de dispersão, assunto da próxima seção, para verificar se um outlier isolado está fabricando a associação.

2. Visualizando duas variáveis numéricas

Nenhum número resume um par de variáveis tão honestamente quanto o gráfico de dispersão (scatterplot): um ponto por observação, com a primeira variável no eixo horizontal e a segunda no vertical. É a ferramenta que revela o que a correlação esconde. Dois conjuntos podem ter o mesmo $r$ e formas radicalmente diferentes, como o famoso quarteto de Anscombe demonstrou: uma reta ruidosa, uma curva, uma reta perfeita arruinada por um outlier e uma coluna vertical com um ponto solto podem compartilhar a mesma correlação. Ver o scatterplot antes de confiar no coeficiente é a disciplina que separa a análise da credulidade; foi ele que teria denunciado, no exercício final da seção anterior, que o $r=0{,}99$ vinha de um único ponto.

O scatterplot funciona bem para dezenas ou centenas de pontos, mas satura para milhões: os pontos se sobrepõem em uma mancha opaca em que nada se distingue. Para grandes volumes, duas técnicas restauram a informação. O hexbin divide o plano em células hexagonais e colore cada uma pela contagem de pontos que caem nela, transformando a nuvem em um mapa de densidade; regiões densas ficam escuras, esparsas ficam claras. Os contornos (contour plots) desenham curvas de nível da densidade estimada, como um mapa topográfico, ligando pontos de igual concentração. As duas técnicas trocam a posição individual, perdida na multidão, pela densidade local, que é o que de fato interessa quando há dados demais para contar um a um.

A escolha entre elas segue o tamanho dos dados. Até alguns milhares de pontos, o scatterplot simples, talvez com transparência para revelar sobreposições, é insuperável. De dezenas de milhares em diante, o hexbin e os contornos passam a contar a história que o scatterplot saturado esconde. Em todos os casos, a pergunta visual é a mesma: existe tendência? É linear ou curva? Há agrupamentos? Há pontos fora do padrão? Essas quatro perguntas, respondidas com os olhos antes de qualquer cálculo, orientam toda a análise que se segue.

2.1 Exercícios da Seção 2

1. Por que dois conjuntos podem ter a mesma correlação e scatterplots completamente diferentes?

Solução: A correlação resume toda a nuvem em um único número que mede apenas a tendência linear, descartando a forma, os agrupamentos e os outliers. O quarteto de Anscombe exibe quatro conjuntos com $r\approx0{,}82$ idêntico e formas opostas: linear, curva, linear com outlier e vertical com ponto solto. O scatterplot recupera exatamente a informação que o resumo joga fora.

2. Quando o hexbin é preferível ao scatterplot simples?

Solução: Quando o número de pontos é tão grande que eles se sobrepõem em uma mancha opaca, tipicamente de dezenas de milhares em diante. O scatterplot saturado esconde a densidade: uma região com mil pontos e outra com um milhão parecem igualmente pretas. O hexbin colore cada célula pela contagem, revelando onde os dados de fato se concentram.

Gráfico Grande volume de pontos Informação preservada
Scatterplot sofre sobreposição e saturação pontos individuais, quando ainda visíveis
Hexbin agrega observações por célula densidade espacial

Portanto, o hexbin é preferível quando a sobreposição impede o scatterplot de distinguir regiões com densidades diferentes.

3. O que um scatterplot revela que a correlação não revela?

Solução: Forma (linear ou curva), agrupamentos (subpopulações distintas), outliers (pontos influentes) e heterogeneidade (variância que muda ao longo do eixo). Nenhuma dessas quatro características aparece no valor de $r$, e todas mudam a interpretação. Um $r$ alto sobre uma curva, por exemplo, ajusta mal uma reta apesar do coeficiente elevado.

4. Como a transparência dos pontos ajuda em um scatterplot de tamanho médio?

Solução: Atribuindo opacidade parcial a cada ponto, regiões com muitas sobreposições ficam mais escuras que regiões esparsas, porque as transparências se somam. Isso recupera parte da informação de densidade sem trocar o gráfico por um hexbin, útil na faixa intermediária de alguns milhares de pontos em que o scatterplot começa a saturar mas ainda preserva estrutura individual.

5. Em um scatterplot de idade contra salário da equipe, o que a leitora esperaria ver, dado $r\approx0{,}9967$?

Solução: Oito pontos alinhados quase perfeitamente sobre uma reta ascendente, com dispersão vertical mínima em torno dela. A quase perfeição do alinhamento reflete o $r$ próximo de $1$. Convém, porém, notar que oito pontos são poucos para generalizar: a associação forte descreve esta equipe, não autoriza, sozinha, concluir que idade determina salário no mercado, questão que a próxima seção ataca de frente.

3. Correlação não é causalidade

Chegamos à lição mais importante do artigo, e talvez da série aplicada. Que idade e salário tenham $r\approx0{,}9967$ na equipe não prova que envelhecer aumenta o salário. A associação estatística é compatível com várias histórias causais diferentes, e a correlação sozinha não distingue entre elas. A primeira armadilha é a correlação espúria: duas variáveis que sobem juntas apenas porque ambas crescem no tempo, sem nenhuma ligação entre si. Duas séries independentes, cada uma com uma tendência crescente somada a ruído, exibem correlação próxima de $0{,}99$ sem que uma tenha qualquer efeito sobre a outra; a tendência comum fabrica a associação. Repositórios inteiros de correlações espúrias catalogam pares absurdos, como consumo de queijo e mortes por enrolamento em lençóis, com correlações altíssimas e nenhuma relação causal.

A segunda armadilha é a variável de confusão: uma causa comum $Z$ de $X$ e $Y$ abre um caminho não causal entre eles. Temperatura, por exemplo, aumenta tanto a venda de sorvete quanto a frequência de banhistas e pode criar associação entre sorvete e afogamentos. No caso de idade e salário, experiência não deve ser chamada automaticamente de confundidora, pois em muitas histórias ela é consequência da idade e possível mediadora. Coorte de nascimento, setor, escolaridade e regras de contratação podem gerar outras estruturas. O papel de uma variável vem da pergunta causal e da ordem temporal, não de sua correlação.

O paradoxo de Simpson é uma inversão entre a associação agregada e as associações por estrato. É possível construir dados em que, dentro de cada grupo, $X$ e $Y$ têm correlação positiva e, no agregado, negativa. Isso não significa que a versão estratificada seja sempre a verdade. Ajustar um confundidor pode remover viés; ajustar um mediador muda do efeito total para um efeito direto; ajustar um colisor pode criar viés. O grafo causal decide qual comparação responde à pergunta.

Para pensar com clareza sobre causa, usamos grafos acíclicos direcionados, ou DAGs. Na cadeia $X\to Z\to Y$, condicionar em $Z$ bloqueia o caminho mediado e muda a pergunta do efeito total para o efeito não transmitido por $Z$. No garfo $X\leftarrow Z\to Y$, condicionar adequadamente em $Z$ bloqueia o caminho de confusão. No colisor $X\to Z\leftarrow Y$, o caminho está bloqueado sem ajuste e pode ser aberto ao condicionar em $Z$ ou em um descendente seu.

Essas conclusões pressupõem que o grafo represente as relações causais relevantes e que não existam outros caminhos abertos omitidos. Independências marginais também podem falhar se houver uma causa comum adicional. Um DAG não é descoberto apenas pelas correlações e não prova suas próprias setas; ele registra hipóteses substantivas para que possamos derivar quais ajustes são coerentes e quais ameaçam a identificação.

3.1 Exercícios da Seção 3

1. Para a correlação idade-salário da equipe, proponha uma variável de confusão plausível e explique o mecanismo.

Solução: Não se deve classificar experiência como confundidora apenas porque se associa às duas variáveis. Em uma história plausível, idade influencia experiência, que influencia salário, formando uma mediação. Ajustar experiência removeria esse caminho e estimaria outra quantidade. Coorte, escolaridade ou setor podem funcionar como causas comuns em grafos específicos. É preciso desenhar a temporalidade e definir se o alvo é associação, efeito total ou efeito direto antes de escolher o ajuste.

2. Explique como duas séries independentes com tendência produzem correlação espúria.

Solução: Se $X_t=t+\varepsilon_t$ e $Y_t=t+\eta_t$, com ruídos $\varepsilon$ e $\eta$ independentes, ambas crescem com $t$. Nos anos iniciais as duas estão abaixo das suas médias, nos finais acima, de modo que os produtos dos desvios são majoritariamente positivos e $r$ se aproxima de $1$. A associação vem inteiramente da tendência temporal compartilhada, não de qualquer ligação entre $X$ e $Y$; remover a tendência de cada série antes de correlacionar dissolve o efeito.

3. Nos dados de Simpson do texto, verifique que cada estrato tem $r=1$ e o agregado tem $r<0$.

Solução: O grupo A, com pontos $(1,11),(2,12),(3,13)$, cai sobre a reta $y=x+10$, logo $r=1$; o grupo B, com $(6,6),(7,7),(8,8)$, cai sobre $y=x$, logo $r=1$. No agregado, A tem $x$ pequeno e $y$ grande (média $(2,12)$) e B tem $x$ grande e $y$ pequeno (média $(7,7)$), de modo que a tendência entre os grupos é decrescente e a correlação total vale $\approx-0{,}807$. A estratificação inverte o sinal.

4. Classifique como cadeia, garfo ou colisor: (a) fumar $\to$ alcatrão no pulmão $\to$ câncer; (b) talento $\to$ nota na prova $\leftarrow$ sorte no dia; (c) chuva $\leftarrow$ estação $\to$ turismo.

Solução: Em (a), a estrutura indicada é uma cadeia; condicionar no alcatrão bloqueia o caminho mediado representado. Em (b), nota é um colisor; condicionar nela pode associar talento e sorte se não houver outro caminho entre ambos. Em (c), estação é um garfo; ajustar a estação bloqueia esse caminho comum. As conclusões valem para os grafos declarados e podem mudar se houver setas ou causas adicionais.

5. Explique por que condicionar em um colisor cria associação espúria, com um exemplo numérico simples.

Solução: Sejam $X$ e $Y$ independentes valendo $0$ ou $1$ com probabilidade $1/2$, e $Z=X+Y$ o efeito comum (colisor). Marginalmente, saber $X$ nada diz sobre $Y$. Mas condicione em $Z=1$: os únicos casos são $(X,Y)=(1,0)$ ou $(0,1)$, de modo que, dado $Z=1$, saber que $X=1$ garante $Y=0$. A seleção pelo efeito comum tornou $X$ e $Y$ perfeitamente dependentes. É o mecanismo do viés de seleção: filtrar dados por um colisor, como estudar só quem foi admitido ou só quem sobreviveu, correlaciona causas que eram independentes na população.

3.2 Laboratório: ajustar pode ajudar ou prejudicar

O laboratório combina duas advertências. No paradoxo de Simpson, a associação agregada e as associações dentro dos grupos têm sinais opostos. No cenário do colisor, duas variáveis quase independentes tornam-se negativamente associadas depois de selecionar unidades por um efeito comum. Alterne as visualizações e observe que a decisão de estratificar não pode vir apenas do gráfico.

O painel não decide qual análise é causal. Ele mostra por que essa decisão precisa de um DAG: grupo pode ser confundidor, mediador ou colisor, e cada papel muda o significado do condicionamento.

4. Duas variáveis de tipos diferentes

Correlação de Pearson pressupõe duas variáveis numéricas. Quando os tipos diferem, precisamos de outras ferramentas. Para relacionar uma variável numérica com uma categórica, comparamos a distribuição numérica dentro de cada categoria. Com grupos pequenos, como os da equipe de oito pessoas, o gráfico mais honesto mostra todos os pontos, com leve deslocamento horizontal, e pode acrescentar mediana e intervalo. Um boxplot já resume demais quando há dois ou três valores por grupo.

O gráfico de violino usa uma densidade suavizada e pode revelar forma em amostras grandes. Em grupos minúsculos, a largura de banda pode fabricar picos e uma aparência de distribuição que os dados não sustentam. Ele deve vir acompanhado dos pontos e de tamanhos amostrais, e não ser apresentado como refinamento automático do boxplot.

Para relacionar duas variáveis categóricas, o instrumento é a tabela de contingência apresentada no quarto artigo: uma matriz que cruza as categorias, com a contagem de cada combinação nas células. A tabela de linguagem contra trabalho remoto da equipe mostra, por exemplo, quantos usuários de cada linguagem trabalham remoto. A associação aparece quando as proporções condicionais diferem entre linhas: se a fração de remotos varia conforme a linguagem, as duas variáveis estão associadas. O artigo 10 formalizará essa leitura com o teste qui-quadrado, que mede se a diferença de proporções excede o que o acaso produziria; por ora, basta a leitura visual das proporções.

A lição transversal é que associação não é um conceito único, mas uma família de perguntas cuja ferramenta depende dos tipos envolvidos. Numérica com numérica pede correlação e scatterplot; numérica com categórica pede comparação de distribuições por grupo; categórica com categórica pede tabela de contingência e proporções condicionais. Aplicar a ferramenta errada, como calcular a correlação entre salário e linguagem depois de codificar linguagem como $1,2,3,4$, produz um número tão vazio quanto a média de nível que o primeiro artigo condenou.

4.1 Exercícios da Seção 4

1. Que ferramenta usar para investigar se o salário depende da linguagem principal?

Solução: Como há apenas oito pessoas distribuídas por linguagens, deve-se mostrar cada salário por grupo com um strip plot ou pontos com leve deslocamento. Medianas podem ser acrescentadas, mas caixas e violinos dão uma sensação exagerada de forma com tão poucos valores. Diferenças visuais descrevem a amostra e não bastam para inferência populacional.

2. Por que não se deve calcular a correlação de Pearson entre salário e linguagem codificada como $1,2,3,4$?

Solução: A codificação impõe ordem e distâncias inexistentes em uma variável nominal; permutar os códigos mudaria o coeficiente sem alterar dado nenhum. A correlação resultante mede um artefato da rotulação, não uma associação real. Linguagem é nominal, e a associação com uma numérica se investiga comparando distribuições por grupo, não com Pearson.

3. Como uma tabela de contingência revela associação entre duas categóricas?

Solução: Comparando as proporções condicionais entre linhas. Se a fração de trabalho remoto é a mesma para todas as linguagens, as variáveis são (aproximadamente) independentes; se a fração varia de linha para linha, há associação. A tabela transforma a pergunta de associação em uma comparação de perfis de proporção, que o teste qui-quadrado do artigo 10 tornará quantitativa.

4. Qual a vantagem do violin plot sobre o boxplot ao comparar grupos?

Solução: Em amostras suficientemente grandes, o violino mostra uma estimativa da forma que quartis não exibem. O custo é depender da largura de banda e poder sugerir modos artificiais. Em amostras pequenas, os pontos individuais são indispensáveis e o violino pode ser inadequado. Portanto, sua vantagem é condicional ao tamanho e à resolução dos dados.

Gráfico Informação principal Limitação
Boxplot quartis, mediana e pontos extremos não revela a forma interna
Violin plot estimativa da densidade e possíveis modos depende da largura de banda

Assim, o violino acrescenta a forma da distribuição quando há dados suficientes, mas não substitui os pontos em amostras pequenas.

5. em uma tabela de contingência $2\times2$ de linguagem (Python/não-Python) contra remoto (sim/não), as proporções de remoto são $2/3$ para Python e $2/5$ para não-Python. Há associação?

Solução: As proporções condicionais diferem, $2/3\approx0{,}667$ contra $2/5=0{,}4$, o que sugere associação: usuários de Python trabalham remoto com frequência maior nesta equipe. É a mesma dependência que o quarto artigo detectou pela definição $P(A\cap B)\ne P(A)P(B)$. Com apenas oito pessoas, porém, a diferença pode ser fruto do acaso amostral; decidir isso exige o teste qui-quadrado, ainda por vir.

5. Muitas variáveis ao mesmo tempo

Dados reais têm dezenas de colunas, e examiná-las aos pares, uma dupla de cada vez, é inviável. Três ferramentas comprimem a exploração de muitas variáveis em um único olhar. A matriz de correlação é a tabela quadrada cujo elemento $(i,j)$ é a correlação de Pearson entre as variáveis $i$ e $j$; ela é simétrica, tem $1$ na diagonal (toda variável tem correlação perfeita consigo mesma) e resume em $p^2$ números todas as associações lineares entre $p$ variáveis. Visualizá-la como mapa de calor (heatmap), com uma escala de cor do azul (correlação negativa) ao vermelho (positiva), transforma a tabela em uma imagem em que blocos de variáveis correlacionadas saltam aos olhos, útil para detectar redundância antes de uma regressão.

A matriz de dispersão (scatterplot matrix) leva a ideia adiante: uma grade de scatterplots, um para cada par de variáveis, com histogramas na diagonal. Onde a matriz de correlação dá um número por par, a matriz de dispersão dá o gráfico inteiro, expondo as relações não lineares e os outliers que o coeficiente esconde. É o quarteto de Anscombe generalizado a muitas variáveis: nenhuma associação curva escapa a quem olha a grade completa. O custo é a legibilidade, que degrada acima de cerca de dez variáveis, quando os painéis ficam pequenos demais.

A terceira ferramenta, o facetamento (faceting), ataca um problema diferente: como uma relação entre duas variáveis muda ao longo dos níveis de uma terceira. Em vez de um único scatterplot, desenham-se vários, um por nível da variável de facetamento, dispostos em uma grade. Ver a relação idade-salário separada por nível de senioridade, por exemplo, é exatamente a estratificação que desarma o paradoxo de Simpson da Seção 3: o facetamento é a estratificação feita gráfico. As três ferramentas, matriz de correlação, matriz de dispersão e facetamento, formam o retrato exploratório que toda análise séria produz antes de ajustar o primeiro modelo, e que o artigo 12 retomará ao preparar a regressão.

5.1 Exercícios da Seção 5

1. Por que a diagonal de uma matriz de correlação é sempre $1$?

Solução: O elemento $(i,i)$ é a correlação de uma variável com ela mesma, $\operatorname{cov}(X,X)/(s_X s_X)=s_X^2/s_X^2=1$. Toda variável está em perfeita associação linear consigo mesma, com inclinação positiva. A diagonal não carrega informação; a estrutura interessante está fora dela, e é simétrica, porque $r(X,Y)=r(Y,X)$.

2. O que um bloco vermelho fora da diagonal em um heatmap de correlação indica, e por que isso importa antes de uma regressão?

Solução: Um bloco de correlações altas positivas entre um grupo de variáveis indica redundância: elas carregam informação parecida. Antes de uma regressão múltipla, isso alerta para multicolinearidade, o problema do artigo 13 em que preditores quase colineares inflam os erros padrão dos coeficientes e os tornam instáveis. Detectar o bloco cedo permite remover ou combinar variáveis antes de ajustar o modelo.

3. Que a matriz de dispersão mostra que a matriz de correlação não mostra?

Solução: A forma de cada relação: não linearidades, agrupamentos, outliers e heterogeneidade de variância. A matriz de correlação reduz cada par a um número que só capta a tendência linear; a matriz de dispersão exibe o scatterplot completo de cada par. Duas variáveis com $r=0$ mas dependência quadrática aparecem como parábola na matriz de dispersão e como zero inócuo na de correlação.

4. Como o facetamento se relaciona com o paradoxo de Simpson?

Solução: O facetamento desenha a relação entre duas variáveis separadamente para cada nível de uma terceira, que é exatamente estratificar. Se a associação agregada se inverte dentro dos estratos, como no paradoxo de Simpson, o facetamento torna a inversão visível: cada painel mostra a tendência real do grupo, enquanto o gráfico único mostra o agregado enganoso. O facetamento é, portanto, a defesa gráfica contra a confusão.

5. Acima de quantas variáveis a matriz de dispersão perde utilidade, e o que usar no lugar?

Solução: Acima de cerca de dez variáveis, a grade tem mais de cem painéis pequenos demais para ler, e a matriz de dispersão satura. Nesse regime, a matriz de correlação como heatmap escala melhor, porque cada par vira um pixel colorido em vez de um gráfico; perde-se a forma, ganha-se a visão de conjunto. Técnicas de redução de dimensionalidade, fora do escopo desta série, comprimem ainda mais.

6. Correlação em C++ e no Colab

Com a matemática assentada, implementamos o cálculo da correlação de Pearson e da matriz de correlação. O programa abaixo recebe as colunas de idade e salário da equipe, calcula a correlação em uma passagem numericamente cuidadosa, e monta a matriz de correlação de um conjunto de colunas. A função de correlação valida os tamanhos e a variância não nula antes de dividir, evitando a divisão por zero que ocorreria com uma coluna constante. Compile com g++ -std=c++23 -O2 -Wall -Wextra -Wconversion -Wshadow -pedantic correlacao.cpp -o correlacao.

#include <cmath>
#include <iomanip>
#include <iostream>
#include <optional>
#include <span>
#include <vector>

// Pearson correlation; returns nullopt if the inputs are ill-formed.
std::optional<double> correlacao(std::span<const double> x,
                                 std::span<const double> y) {
    const std::size_t n = x.size();
    if (n < 2 || y.size() != n) {
        return std::nullopt;
    }
    double mx = 0.0, my = 0.0;
    for (std::size_t i = 0; i < n; ++i) { mx += x[i]; my += y[i]; }
    mx /= static_cast<double>(n);
    my /= static_cast<double>(n);

    double sxy = 0.0, sxx = 0.0, syy = 0.0;
    for (std::size_t i = 0; i < n; ++i) {
        const double dx = x[i] - mx;
        const double dy = y[i] - my;
        sxy += dx * dy;
        sxx += dx * dx;
        syy += dy * dy;
    }
    if (sxx == 0.0 || syy == 0.0) {
        return std::nullopt; // a constant column has undefined correlation
    }
    return sxy / std::sqrt(sxx * syy);
}

int main() {
    const std::vector<double> idade   = {23, 29, 34, 41, 28, 52, 26, 38};
    const std::vector<double> salario = {6.5, 9.0, 12.0, 15.5, 8.2, 22.0, 7.1, 13.4};

    std::cout << std::fixed << std::setprecision(4);
    if (const auto r = correlacao(idade, salario)) {
        std::cout << "r(idade, salario) = " << *r << '\n';
    }

    // Correlation matrix of the two columns.
    const std::vector<std::span<const double>> colunas = {idade, salario};
    for (const auto& a : colunas) {
        for (const auto& b : colunas) {
            std::cout << std::setw(9) << correlacao(a, b).value_or(0.0) << ' ';
        }
        std::cout << '\n';
    }
}

A saída é

r(idade, salario) = 0.9967
   1.0000    0.9967
   0.9967    1.0000

A correlação confirma o cálculo manual, e a matriz exibe $1$ na diagonal e $0{,}9967$ fora dela. No Colab, df.corr() devolve a matriz e df["idade"].corr(df["salario"]), o coeficiente do par. O método spearman calcula a correlação dos postos e mede associação monótona, não necessariamente linear. A transformação em postos reduz o impacto da magnitude de valores extremos, mas não torna o coeficiente imune a pontos influentes, empates, seleção ou pequenas amostras.

6.1 Exercícios da Seção 6

1. Por que correlacao retorna std::nullopt quando uma coluna é constante?

Solução: Uma coluna constante tem todos os desvios nulos, logo $\sum(x_i-\bar{x})^2=0$, e a correlação exigiria dividir por zero. Matematicamente, a correlação com uma constante é indefinida, não zero: não há variação para associar. Retornar std::nullopt comunica essa indefinição ao chamador, em vez de propagar um NaN silencioso ou um zero enganoso.

2. Qual a complexidade de tempo e de espaço da função correlacao?

Solução: A função faz duas passagens lineares pelos dados, uma para as médias e outra para as somas de produtos, portanto tempo $O(n)$. Ela guarda apenas alguns acumuladores escalares, sem copiar os vetores, graças ao std::span, portanto espaço $O(1)$ além da entrada. É a mesma economia da classe de localização do segundo artigo.

3. O código usa duas passagens (médias, depois somas). Que risco tem a alternativa de uma passagem só, acumulando $\sum xy$, $\sum x$ e $\sum y$?

Solução: A fórmula de uma passagem, $\operatorname{cov}\propto\sum x_iy_i-\frac{1}{n}\sum x_i\sum y_i$, subtrai dois números grandes de magnitude parecida, sofrendo cancelamento catastrófico quando as médias são grandes em relação aos desvios. A perda de algarismos significativos pode produzir covariâncias negativas para dados positivamente associados. A versão de duas passagens, que centra antes de multiplicar, é numericamente estável, e o custo da passagem extra compensa.

4. Por que df.corr() no Colab devolve uma matriz e não um único número?

Solução: df.corr() calcula a correlação de todos os pares de colunas numéricas do data frame, devolvendo a matriz de correlação da Seção 5, simétrica e com $1$ na diagonal. Para um par específico, usa-se df["a"].corr(df["b"]), que devolve o escalar. A matriz é o retrato de conjunto; o escalar, o detalhe de um par.

5. Quando a correlação de Spearman é preferível à de Pearson?

Solução: Spearman é apropriado quando a pergunta é sobre ordenação monótona ou quando uma transformação em postos representa melhor a escala. Ele é menos sensível à magnitude de um valor extremo que Pearson, pois usa postos, mas um ponto pode alterar muitos postos e continuar influente. O gráfico de dispersão, os empates e uma análise com e sem pontos suspeitos continuam necessários.

Coeficiente Associação capturada Sensibilidade principal
Pearson relação linear nos valores magnitudes extremas
Spearman relação monótona nos postos empates e alterações de muitos postos

Logo, Spearman é preferível para uma pergunta de ordenação monótona, sem dispensar a inspeção gráfica e a análise de pontos influentes.

7. Um laboratório para a correlação

A correlação é um conceito que a intuição aprende melhor movendo pontos do que lendo fórmulas. O laboratório abaixo é um scatterplot editável: a leitora arrasta os pontos e vê, em tempo real, a correlação de Pearson e a reta de mínimos quadrados responderem. Um preset reproduz a relação idade-salário da equipe, com o seu $r\approx0{,}9967$; outro exibe a parábola de correlação zero da Seção 1, para tornar tátil a diferença entre dependência e associação linear; um terceiro mostra uma correlação forte com causalidade implausível, o lembrete visual de que o coeficiente não sabe nada sobre causa.

O que o laboratório ensina, ao permitir arrastar um único ponto para longe da nuvem, é a fragilidade de $r$ diante de outliers: um ponto influente move o coeficiente de forma desproporcional, exatamente como o exercício da Seção 1 previu. E ao alternar entre a reta ruidosa e a parábola com o mesmo $r$ próximo de zero, a leitora confirma nos olhos que a correlação vê apenas a componente linear da associação, cega para tudo o que se curva.

7.1 Exercícios da Seção 7

1. No preset da equipe, o que a leitora observa na reta de tendência e no valor de $r$?

Solução: Os oito pontos aparecem quase sobre uma reta ascendente, e $r\approx0{,}9967$ é exibido perto de $1$. A reta de mínimos quadrados passa pelo centro da nuvem com inclinação positiva pronunciada. É a associação forte que descreve a equipe, sem que isso, por si só, estabeleça que idade causa salário.

2. Arraste um ponto da nuvem para muito longe. O que acontece com $r$ e com a reta?

Solução: O coeficiente $r$ se desloca de forma desproporcional, e a reta gira para acompanhar o ponto distante, que exerce alta alavancagem. Um único outlier pode derrubar um $r$ alto ou fabricar um $r$ alto a partir de uma nuvem sem estrutura. É a não robustez de Pearson tornada visível, o mesmo fenômeno do exercício 5 da Seção 1.

3. Carregue a parábola e observe $r$. Por que ele é próximo de zero apesar da relação evidente?

Solução: A parábola simétrica tem, para cada ponto à esquerda com desvio negativo em $x$, um espelho à direita com desvio positivo, e ambos têm $y$ acima da média; os produtos $(x-\bar{x})(y-\bar{y})$ se cancelam aos pares, anulando a covariância. A relação é perfeita mas puramente não linear, e Pearson só enxerga a parte linear, que é nula.

4. Construa, arrastando pontos, uma nuvem com $r\approx0$ e outra com $r\approx-0{,}8$.

Solução: Para $r\approx0$, distribua os pontos sem tendência, em uma mancha aproximadamente circular, de modo que subir em $x$ não prediz subir nem descer em $y$. Para $r\approx-0{,}8$, alinhe os pontos ao longo de uma reta descendente com dispersão moderada: quando $x$ cresce, $y$ tende a cair. A reta de tendência confirma o sinal, e o valor exibido converge ao alvo conforme o alinhamento aperta.

5. No preset de causalidade implausível, explique por que o $r$ alto não autoriza conclusão causal.

Solução: O coeficiente mede apenas comovimentação; ele é idêntico quer $X$ cause $Y$, quer um confundidor cause os dois, quer seja coincidência de tendências. No preset, as duas variáveis não têm mecanismo plausível ligando-as, então o $r$ alto é espúrio ou confundido. Concluir causa exigiria uma estrutura causal justificada e, idealmente, um experimento, não um número entre $-1$ e $1$.

8. Conclusão

Este artigo mediu a associação entre variáveis e ergueu, no mesmo movimento, a barreira contra o erro de lê-la como causa. Definimos a covariância e a normalizamos na correlação de Pearson, limitada a $[-1,1]$ e cega para tudo o que não é linear. Aprendemos a ver o par com o scatterplot antes de confiar no coeficiente, a desconfiar da correlação espúria e da variável de confusão, a distinguir cadeia, garfo e colisor, e a temer o viés de colisão que a seleção de dados introduz. Estendemos a exploração a muitas variáveis com a matriz de correlação, a matriz de dispersão e o facetamento, e implementamos tudo em C++23 e em pandas.

O fio a levar adiante é a humildade da associação: a correlação descreve a amostra que temos, e todo salto dela para a população, ou dela para a causa, é um salto que exige justificativa própria. Até aqui, toda a análise, descritiva e exploratória, valeu para os dados em mãos. O próximo artigo abre a segunda metade da série e a questão que a define: o que uma amostra permite dizer sobre a população que não vemos? A resposta começa pela amostragem honesta e pela distribuição amostral, e culmina no teorema central do limite que torna a inferência possível.

Acrônimos e Abreviações neste artigo

A seguir está a lista de todos os acrônimos e abreviações identificados no texto, organizados em ordem alfabética com o termo original em inglês e a tradução para o português:

Acrônimo / Abreviação Definição em Inglês Tradução em Português
BLAS Basic Linear Algebra Subprograms Subprogramas Básicos de Álgebra Linear
CPU / CPUs Central Processing Unit Unidade Central de Processamento
FLOPs Floating Point Operations Operações de Ponto Flutuante
FP32 32-bit Floating Point Ponto Flutuante de 32 bits
GEMM General Matrix Multiply Multiplicação Geral de Matrizes
GPU Graphics Processing Unit Unidade de Processamento Gráfico
IA Artificial Intelligence Inteligência Artificial
I-JEPA Image Joint-Embedding Predictive Architecture Arquitetura Preditiva de Incorporação Conjunta de Imagem
JEPA Joint-Embedding Predictive Architecture Arquitetura Preditiva de Incorporação Conjunta
KiB Kibibyte Kibibyte
MAE Masked Autoencoder Autocodificador Mascarado
MSE Mean Squared Error Erro Quadrático Médio
MSVC Microsoft Visual C++ Microsoft Visual C++
PCA Principal Component Analysis Análise de Componentes Principais
SIMD Single Instruction, Multiple Data Instrução Única, Múltiplos Dados
SimCLR Simple Framework for Contrastive Learning of Visual Representations Estrutura Simples para Aprendizado Contrastivo de Representações Visuais

Referências

BRUCE, P.; BRUCE, A.; GEDECK, P. Practical Statistics for Data Scientists. 2. ed. Sebastopol: O’Reilly, 2020.

GIOLO, S. R. Introdução à análise de dados categóricos com aplicações. São Paulo: Blucher, 2017.

JAMES, G.; WITTEN, D.; HASTIE, T.; TIBSHIRANI, R. An Introduction to Statistical Learning. Stanford, ISLR. Disponível em: https://www.statlearning.com/. Acesso em: 23 jul. 2026.

LARSON, R.; FARBER, B. Estatística aplicada. 6. ed. São Paulo: Pearson, 2015.

PEARL, J.; MACKENZIE, D. The Book of Why: The New Science of Cause and Effect. New York: Basic Books, 2018.

SEMINAR FOR STATISTICS, ETH ZÜRICH. Regression. Notas de aula. Disponível em: https://stat.ethz.ch/education/semesters/ss2016/regression/Regression.pdf. Acesso em: 23 jul. 2026.

(Updated: )