Todos os modelos estão errados, mas alguns são inúteis

Parte I: Correlação de Pearson e significância

time-series
Autor

Alberson Miranda

Data de Publicação

19 de abril de 2025

TL;DR

Quando usar o coeficiente de correlação de Pearson, sempre teste a significância. Mas não o utilize para analisar séries temporais. É um erro comum. Isso viola a independência das observações e ignora o relacionamento entre defasagens. Em vez disso, use a análise de cross-correlograma para identificar relações entre séries temporais, incluindo relações defasadas.

“Todos os modelos estão errados, mas alguns são úteis” é uma frase recorrente entre aqueles que praticam estatística. Ela se origina de uma afirmação de George Box, um dos grandes estatísticos do século XX: “Since all models are wrong the scientist must be alert to what is importantly wrong.” (Box 1976). “Todos os modelos estão errados” significa que os modelos são intrinsecamente limitados e não capturam perfeitamente a realidade. Em outras palavras, um modelo é uma representação simplificada da realidade, usada para explicar ou prever um fenômeno. Se fosse uma explicação perfeita desse fenômeno, deixaria de ser um modelo e se tornaria uma lei.

Na estatística, lidamos essencialmente com variáveis aleatórias ou estocásticas, ou seja, variáveis que possuem uma distribuição de probabilidade (Gujarati e Porter 2021). Nossa missão como analistas é desenvolver e utilizar métodos que nos digam como formular funções que nos permitam descrever e prever o relacionamento entre essas variáveis, minimizando os erros estocásticos.

Dependendo da forma funcional e do método de estimação escolhido, há uma série de pressupostos que devem ser atendidos para que qualquer inferência sobre o erro, coeficientes, preditores e regressandos seja válida. Se esses pressupostos forem ignorados, não há garantia de que os resultados encontrados sejam uma aproximação ótima da função que se deseja estimar. Mais do que isso, a violação de alguns desses pressupostos pode gerar resultados enganosos, mostrando relações estatísticas significativas onde não deveria haver, subestimando ou superestimando o objeto de estudo.

Neste post, abordo alguns erros metodológicos frequentes que fazem com que alguns modelos sejam inúteis.

1 VAMOS PEGAR ALGUNS DADOS

Você já ouviu falar do conjunto de dados presidents? Do pacote {datasets}, ele armazena as avaliações trimestrais de aprovação dos presidentes dos EUA de 1945 a 1974. Será que existe alguma relação com o índice de preços ao consumidor (CPI), PIB real, taxa de desemprego ou taxas de juros? Vamos descobrir!

# convert to dataframe
presi <- data.frame(
  date = zoo::as.Date(zoo::as.yearqtr(time(presidents))),
  ratings = as.vector(presidents)
) |>
  na.omit()

# get CPI and funds rates from FRED
quantmod::getSymbols(
  c("CPIAUCSL", "FEDFUNDS", "GDPC1", "UNRATE"),
  src = "FRED"
)
[1] "CPIAUCSL" "FEDFUNDS" "GDPC1"    "UNRATE"  
# convert to time series
series <- lapply(list(CPIAUCSL, FEDFUNDS, GDPC1, UNRATE), function(serie) {

  # serie name
  serie_name <- names(serie)
  # convert to dataframe
  data.frame(
    date = zoo::as.Date(zoo::as.yearmon(time(serie))),
    value = as.vector(serie)
  ) |>
    setNames(c("date", serie_name))
})

# merge datasets
presi_merged <- Reduce(
  function(x, y) merge(x, y, by = "date"),
  c(list(presi), series)
)

# visualize
kbl(head(presi_merged), booktabs = TRUE, digits = 2) |>
  kable_styling(latex_options = c("striped", "scale_down"))
Tabela 1: Base de dados.
date ratings CPIAUCSL FEDFUNDS GDPC1 UNRATE
1954-07-01 71 26.86 0.80 2880.48 5.8
1954-10-01 57 26.72 0.85 2936.85 5.7
1955-01-01 71 26.77 1.39 3020.75 4.9
1955-04-01 68 26.79 1.43 3069.91 4.7
1955-07-01 79 26.76 1.68 3111.38 4.0
1955-10-01 73 26.82 2.24 3130.07 4.3
# plot
presi_merged |>
  tidyr::pivot_longer(-date) |>
  ggplot(aes(x = date, y = value)) +
  geom_line() +
  scale_x_date(date_labels = "%Y") +
  facet_wrap(~name, nrow = 5, scales = "free_y")
Figura 1: Séries temporais em nível.

2 ERRO #1: NÃO TESTAR SIGNIFICÂNCIA

O primeiro, e frequentemente único, recurso para seleção de variáveis e especificação de modelos entre aqueles não iniciados em análise de séries temporais é o coeficiente de correlação de Pearson \(r\). Se tentarmos usá-lo, teremos os seguintes resultados (Tabela 2):

# Pearson correlation
cor(subset(presi_merged, select = -date)) |>
  kbl(booktabs = TRUE, digits = 2) |>
  kable_styling(latex_options = c("striped", "scale_down"))
Tabela 2: Pearson’s \(r\).
ratings CPIAUCSL FEDFUNDS GDPC1 UNRATE
ratings 1.00 -0.70 -0.64 -0.65 0.10
CPIAUCSL -0.70 1.00 0.86 0.93 -0.02
FEDFUNDS -0.64 0.86 1.00 0.84 -0.35
GDPC1 -0.65 0.93 0.84 1.00 -0.24
UNRATE 0.10 -0.02 -0.35 -0.24 1.00

De acordo com a regra de bolso para interpretar o tamanho do efeito do coeficiente de correlação de Pearson1, CPI, taxas de juros e PIB têm alta correlação com a aprovação presidencial, enquanto a taxa de desemprego tem correlação pequena.

Mesmo que fosse apropriado usar o coeficiente de correlação de Pearson para selecionar variáveis, seria necessário realizar um teste para verificar se o coeficiente encontrado é estatisticamente significativo. Neste caso, podemos verificar que a correlação de 10% entre aprovação presidencial e taxa de desemprego não é significativa. Ignorar testes de significância resulta em interpretações errôneas, levando o analista a encontrar relações onde, na verdade, não existem.

# p-values for t-test
sapply(subset(presi_merged, select = -c(date, ratings)), function(serie) {
  cor.test(presi_merged$ratings, serie)$p.value
}) |>
  kbl(booktabs = TRUE, digits = 2) |>
  kable_styling(latex_options = c("striped", "scale_down"))
Tabela 3: P-values for \(r\)
x
CPIAUCSL 0.00
FEDFUNDS 0.00
GDPC1 0.00
UNRATE 0.38

Quando se trata de estatística inferencial, fazer qualquer afirmação exige a realização de testes de hipótese. Exceto em casos extremos que impedem a estimação de algum coeficiente, na maioria dos casos, é possível obter alguma medida estatística, como em regressões, análise de variância, correlações, etc. No entanto, obter um número não significa que ele é válido ou pode ser utilizado.

O coeficiente de correlação calculado a partir de uma amostra (\(r\)) é uma estimativa pontual de um parâmetro populacional (\(\rho\)). Como qualquer estimativa baseada em amostra, possui variabilidade amostral e, portanto, deve ser acompanhado de um intervalo de confiança (IC) que reflita a incerteza dessa estimativa e forneça um intervalo de valores plausíveis para o verdadeiro parâmetro populacional. Esse valor \(r\) é um ponto central (média) em torno do qual o intervalo de confiança para o valor verdadeiro é construído.

Se, devido à variabilidade amostral, \(0 \in IC\) (por exemplo, \(r=0.05\) com intervalo de confiança de \([-0.01,0.11]\)), então não há evidência estatística para afirmar que o valor médio de 0,05 é diferente de zero.

3 ERRO #2: USAR O COEFICIENTE DE CORRELAÇÃO DE PEARSON

Na seção Seção 2, eu disse “mesmo que fosse apropriado”, porque não é. O coeficiente de Pearson é inadequado para avaliar a correlação entre duas séries temporais porque viola pressupostos fundamentais do coeficiente de Pearson.

Primeiro, viola a independência das observações. Um dos pressupostos de \(r\) é a independência das observações dentro de cada variável e entre variáveis. Séries temporais, por natureza, geralmente apresentam autocorrelação, ou seja, uma observação \(y_t\) está correlacionada com \(y_{t-1}, y_{t-2}, \ldots, y_{t-n}\).

Segundo, ignora o relacionamento entre defasagens. A correlação entre duas séries temporais \(y_t\) e \(z_t\) pode não ser contemporânea. Uma série pode influenciar a outra com algum atraso (por exemplo, \(y_t\) correlacionada com \(z_{t-3}\), mas não com \(z_t\)). O coeficiente de Pearson mede apenas a relação linear no mesmo ponto do tempo, ignorando essas relações defasadas.

Existem algumas formas válidas de identificar a relação entre duas séries temporais. Uma das mais simples é a análise do correlograma cruzado. Ela permite identificar não apenas a relação contemporânea, mas também a relação em cada defasagem da série temporal.

Agora vamos observar o correlograma cruzado entre a série temporal da taxa de desemprego e a aprovação presidencial:

ccf(
  presi_merged[["UNRATE"]],
  presi_merged[["ratings"]],
  main = ""
)
Figura 2: Correlograma cruzado entre a taxa de desemprego e as avaliações de aprovação presidencial.

Se fosse apropriado analisar as duas séries temporais diretamente, veríamos que, embora não haja correlação contemporânea significativa — como vemos pela correlação dentro do intervalo de confiança em lag 0 —, elas aparecem a partir de \(t-2\), o que significaria que a taxa de desemprego de 2 meses atrás impacta a aprovação presidencial atual.

Referências

Box, George Edard Pelham. 1976. «Science and Statistics». Journal of the American Statistical Association 71 (356): 791–99.
Cambridge University. 2021. «FAQ/effectSize - CBU statistics Wiki. MRC Cognition and Brain Sciences Unit». 30 de novembro de 2021. https://imaging.mrc-cbu.cam.ac.uk/statswiki/FAQ/effectSize.
Gujarati, Damodar N., e Dawn C. Porter. 2021. Econometria básica. 5.ª ed. Porto alegre: Amgh.

Notas de rodapé

  1. Um resumo pode ser encontrado em Cambridge University (2021).↩︎