Para Calcular A Correlação Entre Duas Variáveis - Capítulo 26 Correlação entre variáveis | Estatística + R
Capítulo 26 Correlação entre variáveis | Estatística + R

Correlação entre variáveis: como fazer sem errar

A maioria das pessoas que precisa de correlação entra no assunto achando que é só puxar uma fórmula e pronto. Na prática, o problema começa antes de qualquer cálculo. A forma como os dados estão organizados, se há outliers silenciosos ou se as variáveis têm escalas completamente diferentes muda tudo. Eu já vi relatórios serem refeitos por causa disso várias vezes.

Para calcular a correlação entre duas variáveis, o primeiro passo é escolher o método certo

O coeficiente de Pearson é o mais usado, mas ele só faz sentido quando a relação entre as variáveis é aproximadamente linear e os dados seguem uma distribuição normal. Ele mede covariância padronizada, variando de -1 a +1. Um valor próximo de zero não significa necessariamente que não há relação alguma, apenas que não há relação linear. Isso é algo que muitos confundem na primeira vez que olham para um scatter plot com uma nuvem em forma de U. Quando a linearidade não se aplica, o Spearman é a alternativa mais razoável. Ele opera sobre postos, não sobre valores brutos, o que o torna resistente a outliers e a relações monótonas que não são estritamente lineares. O Kendall tau também funciona com postos e tende a ser mais conservador, especialmente em amostras pequenas. Se você tem menos de 30 observações, o poder do teste do Spearman já cai consideravelmente, e o Kendall entrega resultados mais confiáveis nesse cenário.

Eu tive um caso recente com dados de churn de clientes. A variável tempo de uso e a variável número de tickets abertos pareciam ter uma correlação fraca com Pearson, quase zero. Quando replotei usando Spearman, o coeficiente subiu para cerca de 0,41. O problema era que a maioria dos pontos estava agrupada em baixos valores, mas havia alguns clientes com tickets extraordinariamente altos que distorciam a média. Pearson estava sendo enganado por essa cauda longa. Spearman ignorou a magnitude e focou na ordem, que era onde a informação relevante estava.

Como calcular na prática

Se você trabalha com Python, a biblioteca pandas resolve isso em uma linha. O comando df.corr() calcula a matriz de correlação inteira, usando Pearson como padrão. Para Spearman, basta passar method='spearman'. Com numPy, existe o corrcoef(), mas ele não oferece alternativas, então acaba sendo limitado quando você precisa testar mais de uma métrica rapidamente. Em R, a função cor() com o parâmetro method='pearson' ou method='spearman' é o padrão. O pacote Hmisc oferece a função rcorr(), que além do coeficiente retorna valores-p para testar significância estatística, o que evita aarmadilha clássica de interpretar correlações aparentes como relevantes.

No Excel, a função CORREL calcula Pearson diretamente. Para Spearman, você precisa rankizar as colunas primeiro com a função CORRENGO e depois aplicar CORREL nos postos. Não é intuitivo, mas funciona. Eu recomendo evitar Excel para amostras grandes, porque a planilha começa a travar e a propensão a erros de referência aumenta drasticamente a partir de algumas dezenas de milhares de linhas. O código básico em Python seria algo como isto:

import pandas as pd
df = pd.read_csv('seu_arquivo.csv')
pearson = df['var1'].corr(df['var2'], method='pearson')
spearman = df['var1'].corr(df['var2'], method='spearman')

👉 Clique no botão abaixo para saber mais sobre o assunto!

O que ninguém te conta sobre correlação

A correlação não captura relações não monotônicas. Dois dados podem ter um Pearson de zero e uma dependência perfeita do tipo quadrática. Sempre visualize os dados antes de confiar no número. Um gráfico de dispersão leva trinta segundos e evita horas de interpretação errada. Outro ponto que gera confusão é a diferença entre correlação e causalidade, mas vou além disso. Correlações altas em dados temporais muitas vezes refletem tendência, não relação real. Duas séries com tendência de alta podem ter correlação de 0,85 por puro acaso estrutural. A solução é diferenciar as séries ou usar correlação de Pearson em diferenças, não nos níveis. Eu perdi uma tarde inteira acreditando em uma correlação de 0,78 entre preço de imóvel e volume de search por imobiliária até lembrar de verificar se ambas seguiam tendência temporal. Quando difereneci, o coeficiente caiu para 0,12. A relação que eu via era apenas ruído compartilhado de sazonalidade.

O tamanho da amostra também importa. Uma correlação de 0,3 com cinquenta observações pode não ser estatisticamente significativa. O valor-p associado depende diretamente de n. Use a função scipy.stats.pearsonr ou cor.test no R para obter o valor-p automaticamente. Sem ele, você está chuteando com números bonitos.

Erros comuns que eu vejo todo dia

O erro mais frequente é tratar correlação como prova de padrão previsível. Correlação de 0,6 não quer dizer que aumentar uma variável vai aumentar a outra com certeza. Quer dizer que, na média, há uma associação positiva. A dispersão ao redor dessa tendência pode ser enorme. Outro erro grave é aplicar correlação em dados agrupados sem considerar a estrutura de grupos. Se você tem dados de múltiplas regiões ou departamentos misturados, a correlação global pode mascarar padrões diferentes dentro de cada grupo. O efeito Simpson aparece com frequência aqui. A solução é calcular correlação dentro de cada grupo e comparar, ou usar modelos hierárquicos se a complexidade exigir.

Também é comum ignorar a influência de variáveis de confusão. Correlação marginal entre duas variáveis pode desaparecer completamente quando você controla uma terceira. Nesse caso, a correlação parcial é mais informativa. Em Python, o statsmodels tem funções para calcular correlação parcial. No R, o pacote ppcor faz isso de forma direta.

Quando a correlação simplesmente não serve

Se suas variáveis são categóricas nominais, correlação de Pearson e Spearman são inadequadas. Use phi, tetracórica ou a correlação bicromática, dependendo do caso. Para variáveis ordinais misturadas com contínuas, Spearman é aceitável, mas leia a literatura específica sobre o assunto antes de apresentar como fato consolidado. Em séries temporais com autocorrelação forte, os intervalos de confiança tradicionais da correlação são inválidos. Você precisa ajustar os graus de liberdade efetivos ou usar bootstrapping com blocos. Ignorar isso leva a valores-p completamente errados e conclusões falsamente precisas.

Finalmente, correlação é sensível a outliers de forma desproporcional. Um único ponto malhado pode elevar ou derrubar um coeficiente em trinta por cento ou mais. Antes de calcular, examine boxplots e gráficos de dispersão. Se encontrar outliers, decida se eles são erros de coleta ou eventos reais. Se forem erros, remova. Se forem reais, considere usar métodos robustos como a correlação de Bravais-Pearson comWinsorização ou a correlação de biweight midcorrelation, disponível no pacote WGCNA do R. Isso é o que eu vejo funcionando no dia a dia. Sem romantização, apenas o que evita dor de cabeça quando o relatório precisa sair certo.