Descoberta Causal
Visão geral
Descoberta causal (causal discovery) é a tarefa de inferir aspectos da estrutura causal (causal structure) entre variáveis a partir de dados. Diferentemente da modelagem preditiva padrão (standard predictive modeling), que se concentra em estimar (P(Y \mid X)), a descoberta causal busca aprender (partes de) o processo gerador de dados (data-generating process): quais variáveis causam quais e por quais caminhos.
O tema central é:
- O que você consegue inferir a partir dos dados depende das suas suposições.
- Com dados puramente observacionais (observational data), em geral não é possível identificar um único grafo causal (causal graph) — apenas uma classe de equivalência (equivalence class) de grafos que atende às mesmas restrições estatísticas.
- Adicionar suposições mais fortes (por exemplo, ruído não gaussiano (non-Gaussian noise), ruído aditivo (additive noise), ordem temporal (time order), intervenções (interventions), múltiplos ambientes (multiple environments)) pode tornar identificável uma parte maior da estrutura.
Este artigo explica os fundamentos teóricos que determinam a identificabilidade (identifiability), as principais famílias de algoritmos (algorithm families), fluxos de trabalho práticos (workflows) e modos de falha comuns (common failure modes). Ele se conecta a conceitos relacionados em Grafos Causais e Confundimento e Ajuste.
Descoberta causal vs. estimação de efeito causal
A inferência causal (causal inference) costuma ser separada em duas tarefas:
- Descoberta causal: aprender (parte de) o grafo/estrutura.
- Estimação de efeito causal: dado um grafo (ou suposições sobre confundidores), estimar quantidades como (E[Y \mid do(X=x)]).
A descoberta causal é uma etapa anterior: ela propõe estruturas candidatas que podem então ser usadas para justificar conjuntos de ajuste (adjustment sets) ou identificar instrumentos (ver Variáveis Instrumentais). Mas a descoberta causal, por si só, não garante estimativas corretas de efeito — uma estrutura especificada incorretamente pode levar a ajustes incorretos e estimativas enviesadas.
Fundamentos: grafos, SCMs e as suposições-chave
A maioria dos métodos de descoberta causal assume que os dados vêm de um Modelo Causal Estrutural (Structural Causal Model, SCM) sobre variáveis (X_1,\dots,X_d):
[ X_i := f_i(\text{Pa}(X_i), \varepsilon_i) ]
onde:
- (\text{Pa}(X_i)) são os pais (causas diretas) de (X_i),
- (\varepsilon_i) são termos de ruído,
- a estrutura causal é frequentemente representada como um grafo acíclico direcionado (directed acyclic graph, DAG).
Veja Grafos Causais para a semântica de DAGs, d-separação (d-separation) e o significado de intervenções.
As suposições de Markov e Fidelidade
A maior parte da descoberta causal observacional se apoia em duas suposições centrais:
- Condição de Markov causal (Causal Markov condition): cada variável é independente de seus não-efeitos, dado suas causas diretas.
- Fidelidade (Faithfulness) (estabilidade): todas e apenas as independências condicionais (conditional independencies, CIs) na distribuição dos dados correspondem a d-separações no grafo verdadeiro. Em outras palavras, não existem independências “coincidentes” por cancelamento de parâmetros.
Sob essas suposições, informações de independência condicional restringem o grafo.
Suficiência causal vs. confundimento oculto
Uma divisão importante:
- Suficiência causal (causal sufficiency): todas as causas comuns das variáveis medidas também são medidas (não há confundidores ocultos).
- Confundimento latente permitido (latent confounding): pode haver variáveis não observadas que causam múltiplas variáveis observadas.
Permitir confundidores ocultos torna o problema significativamente mais difícil; os algoritmos produzem estruturas mais conservadoras.
O que pode (e o que não pode) ser inferido a partir de dados observacionais
O que você *pode* inferir: classes de equivalência de Markov
Com apenas dados observacionais e as suposições de Markov + Fidelidade, em geral não é possível identificar um único grafo acíclico direcionado. Você pode identificar sua classe de equivalência de Markov (Markov equivalence class): todos os grafos acíclicos direcionados que implicam o mesmo conjunto de independências condicionais.
Dentro de uma classe de equivalência:
- O esqueleto (skeleton) (o padrão de adjacência não direcionado) é identificável.
- O conjunto de estruturas em V (v-structures) (colisores (colliders)) é identificável.
Uma estrutura em V é (X \rightarrow Z \leftarrow Y), com (X) e (Y) não adjacentes. Isso é importante porque colisores muitas vezes podem ser orientados a partir de padrões de independência condicional.
A classe de equivalência é comumente representada como um CPDAG (Completed Partially Directed Acyclic Graph), contendo:
- arestas direcionadas que são forçadas (mesma direção em todos os grafos acíclicos direcionados equivalentes),
- arestas não direcionadas em que a direção é ambígua.
O que você *não pode* inferir (em geral): direções de arestas e efeitos causais
Não-identificabilidades comuns com dados puramente observacionais:
- Ambiguidade de direção em cadeias: (X \rightarrow Y \rightarrow Z) e (X \leftarrow Y \leftarrow Z) podem implicar as mesmas independências condicionais.
- Modelos puramente lineares-gaussianos (linear-Gaussian): em cenários lineares gaussianos, a direção muitas vezes não é identificável apenas com dados observacionais.
- Efeitos causais sem estrutura: mesmo que você aprenda adjacências, estimar efeitos (do(\cdot)) ainda exige tratamento correto de confundidores (ver Confundimento e Ajuste).
Um exemplo simples: três variáveis
Suponha que você aprenda estas independências a partir dos dados:
- (X \not!\perp!!!\perp Y)
- (Y \not!\perp!!!\perp Z)
- (X \perp!!!\perp Z \mid Y)
Isso é consistente com:
- (X \rightarrow Y \rightarrow Z)
- (X \leftarrow Y \leftarrow Z)
- (X \leftarrow Y \rightarrow Z)
Mas não com (X \rightarrow Y \leftarrow Z), que tipicamente implicaria (X \perp Z) incondicionalmente e (X \not!\perp Z \mid Y) (condicionar em um colisor abre um caminho).
Assim, você consegue reduzir as possibilidades, mas não consegue orientar todas as arestas de forma única.
Como informações adicionais aumentam a identificabilidade
A descoberta causal se torna mais informativa quando você adiciona suposições ou dados mais ricos.
Intervenções (experimentos)
Se você pode intervir — por exemplo, randomizar (X) — você consegue identificar mais direções porque intervenções quebram arestas de entrada em (X). Mesmo um pequeno número de intervenções direcionadas pode colapsar grandes classes de equivalência.
Intervenções podem ser:
- perfeitas (duras) (perfect (hard)): definir (X := x),
- suaves (soft): alterar o mecanismo (f_X) ou a distribuição do ruído sem fixar o valor.
Ordem temporal e dados longitudinais
Se você conhece a precedência temporal (causas ocorrem antes de efeitos), muitas direções se tornam obrigatórias. A descoberta causal em séries temporais (time-series) tipicamente assume ausência de ciclos instantâneos (ou os modela explicitamente) e usa a estrutura de defasagens (lags) para orientar arestas.
Cuidado: causalidade de Granger (Granger causality) (precedência preditiva) não é idêntica à descoberta causal, mas frequentemente é usada como heurística em cenários de séries temporais; veja Causalidade de Granger.
Múltiplos ambientes / mudanças de distribuição
Se você observa as mesmas variáveis em diferentes ambientes (por exemplo, domínios, políticas, regiões) e assume que mecanismos causais são invariantes, às vezes é possível identificar causas buscando preditores cuja relação com o alvo permanece estável.
Essa ideia sustenta métodos baseados em invariância (invariance-based) (por exemplo, ICP) e se conecta a robustez e Adaptação de Domínio.
Suposições mais fortes sobre a forma funcional
Alguns métodos assumem formas especiais que tornam a direção identificável mesmo com dados observacionais, por exemplo:
- LiNGAM: ruído não gaussiano linear pode identificar direção.
- Modelos de Ruído Aditivo (Additive Noise Models, ANM): em muitos cenários não lineares, se (Y=f(X)+\varepsilon) com (\varepsilon \perp X), a direção reversa pode não admitir tal decomposição.
Essas suposições podem ser poderosas — mas frágeis se forem violadas.
Principais famílias de métodos de descoberta causal
1) Métodos baseados em restrições (constraint-based methods) (teste de independência condicional)
Esses métodos:
- testam independências (condicionais),
- constroem um esqueleto,
- orientam arestas usando regras que preservam as estruturas em V descobertas e evitam ciclos.
Algoritmos-chave:
- PC (Peter–Clark): assume suficiência causal (sem confundidores ocultos).
- FCI (Fast Causal Inference): permite confundidores latentes e viés de seleção; produz um PAG (Partial Ancestral Graph) expressando o que é identificável na presença de variáveis ocultas.
Saídas:
- PC → CPDAG (classe de equivalência sobre grafos acíclicos direcionados)
- FCI → PAG (mais cauteloso; arestas podem ter extremidades em círculo indicando ambiguidade)
Pontos fortes:
- Restrições interpretáveis.
- Pode incorporar conhecimento de fundo (por exemplo, “A não pode causar B”).
Pontos fracos:
- Depende de muitos testes de independência condicional; pode ser instável com amostras pequenas.
- Testes de independência condicional são difíceis em alta dimensão e com tipos de dados mistos.
- Violações de fidelidade podem quebrar a correção.
2) Métodos baseados em pontuação (score-based methods) (busca + pontuação)
Esses métodos definem uma pontuação para um grafo candidato, muitas vezes aproximando a evidência do modelo:
- pontuações BIC/MDL para redes Bayesianas (Bayesian networks),
- verossimilhança penalizada (penalized likelihood).
Então eles buscam sobre grafos usando:
- subida de encosta gulosa (greedy hill climbing),
- programação dinâmica (dynamic programming) (para (d) pequeno),
- GES (Greedy Equivalence Search), que busca sobre classes de equivalência.
Pontos fortes:
- Frequentemente competitivos em amostras finitas.
- Podem integrar priors e regularização (regularization).
Pontos fracos:
- A busca é combinatória; heurísticas podem ficar presas.
- A pontuação depende de suposições sobre a família de modelos (por exemplo, linearidade).
3) Métodos de modelos causais funcionais (functional causal model methods) (assimetria em ruído/mecanismo)
Esses métodos exploram o fato de que “causa → efeito” frequentemente tem um modelo de ruído mais simples ou mais independente do que “efeito → causa”.
Exemplos:
- LiNGAM (linear, não gaussiano): usa ideias no estilo ICA para identificar ordenação.
- ANM e modelos pós-não-lineares (post-nonlinear): testam se os resíduos são independentes das entradas.
Pontos fortes:
- Podem identificar direções que não são identificáveis apenas via independências condicionais.
- Funcionam bem em certos domínios contínuos.
Pontos fracos:
- Sensíveis a especificação incorreta do modelo e a ruído de medição.
- Menos diretos para variáveis discretas ou confundimento forte.
4) Otimização contínua (continuous optimization) e abordagens neurais (neural approaches)
Abordagens recentes relaxam a aciclicidade em restrições diferenciáveis e usam otimização baseada em gradiente:
- NOTEARS: impõe a restrição de grafo acíclico direcionado via uma função suave da matriz de adjacência ponderada.
- Variantes tratam não linearidades (MLPs) ou variáveis latentes (com suposições adicionais).
Pontos fortes:
- Escalam melhor para grafos de tamanho moderado.
- Integram-se com ferramentas modernas de otimização.
Pontos fracos:
- Ainda assumem ausência de confundimento oculto, a menos que seja explicitamente modelado.
- A otimização pode ser sensível; pode retornar grafos densos sem regularização cuidadosa.
Exemplo prático: executando PC em dados observacionais
Abaixo está um exemplo mínimo usando causal-learn (uma biblioteca popular em Python). O uso real exige escolha cuidadosa de testes de independência condicional e pré-processamento.
import numpy as np
from causallearn.search.ConstraintBased.PC import pc
from causallearn.utils.cit import fisherz
# X: n x d data matrix (continuous, roughly Gaussian for Fisher-Z)
X = np.loadtxt("data.csv", delimiter=",")
cg = pc(X, alpha=0.01, indep_test_func=fisherz)
# Estimated graph (CPDAG-like object)
print(cg.G)
Notas práticas:
alphacontrola o limiar do teste de independência condicional: valores menores tendem a produzir grafos mais densos.- Fisher-Z assume normalidade gaussiana (condicional); para dados não gaussianos ou discretos, são necessários outros testes.
- A análise de estabilidade por bootstrap (bootstrap) (reexecutar em dados reamostrados) frequentemente é essencial para avaliar a confiança nas arestas.
Aplicações em IA/AM e ciência de dados
Seleção de atributos e aprendizado de representações causais
Um grafo descoberto pode orientar quais atributos são prováveis causas do alvo (mais robustas sob intervenções) versus efeitos (potencialmente com vazamento). Essa ideia se relaciona à robustez a mudança de distribuição (distribution shift) e ao aprendizado de representações causais (causal representation learning).
Descoberta científica (biologia, epidemiologia, economia)
- Redes de regulação gênica: experimentos de perturbação + descoberta causal podem sugerir direcionalidade.
- Avaliação de políticas: múltiplos ambientes podem ajudar a distinguir confundimento de causalidade.
Depuração de sistemas complexos
Em observabilidade/monitoramento (microservices, redes), a descoberta causal em logs pode propor grafos candidatos de propagação de incidentes. Atenção: carga de trabalho correlacionada e variáveis não medidas são confundidores comuns.
Tomada de decisão e personalização
A estrutura causal pode informar como desenhar experimentos e como estimar efeitos heterogêneos (ver Modelagem de Uplift).
Armadilhas comuns e modos de falha
Confundimento oculto
Causas comuns não observadas podem criar associações espúrias que imitam causalidade direta. Métodos como FCI podem contabilizar parcialmente isso, mas a identificabilidade é limitada.
Viés de seleção
Se os dados são coletados condicionalmente a um evento do tipo colisor (por exemplo, “apenas pacientes hospitalizados”), associações podem ser distorcidas.
Erro de medição e proxies
Medições ruidosas podem:
- adicionar ou remover independências condicionais,
- criar arestas aparentes,
- obscurecer estruturas em V.
Usar uma variável proxy (proxy) para variáveis não observadas não é automaticamente seguro; isso pode introduzir viés dependendo da relação da proxy.
Loops de realimentação e simultaneidade (ciclos)
Muitos domínios têm ciclos (economia, sistemas de controle, feedback biológico). Métodos baseados em grafos acíclicos direcionados assumem aciclicidade; a descoberta causal cíclica existe, mas é menos madura e frequentemente exige estrutura de séries temporais.
Violações de fidelidade
Se efeitos se cancelam (por exemplo, dois caminhos com coeficientes opostos), os dados podem exibir independências não implicadas pelo grafo, quebrando métodos baseados em restrições.
“Descoberta causal” não substitui conhecimento do domínio
Conhecimento de fundo (ordenação temporal, direções impossíveis, mecanismos conhecidos) pode melhorar drasticamente os resultados e evitar grafos sem sentido.
Como interpretar e validar grafos descobertos
Como a descoberta causal depende fortemente de suposições, uma boa prática é tratar as saídas como hipóteses.
Fluxo de trabalho recomendado:
- Defina variáveis com cuidado: evite misturar causas e efeitos na mesma medida (variáveis pós-tratamento (post-treatment variables)).
- Verifique o regime de dados: observacional vs. intervencional; série temporal vs. i.i.d.
- Escolha um método alinhado às suposições:
- possível confundimento oculto → considere FCI/PAG,
- mecanismos contínuos não lineares → considere variantes de ANM/NOTEARS,
- múltiplos ambientes → considere métodos baseados em invariância.
- Avalie a estabilidade:
- frequências de arestas por bootstrap,
- sensibilidade a hiperparâmetros (hyperparameters) e limiares de independência condicional.
- Incorpore restrições de fundo:
- proíba arestas que violem tempo/física,
- exija vínculos causais conhecidos.
- Valide com intervenções quando possível:
- execute experimentos direcionados,
- compare efeitos previstos com mudanças medidas.
Métricas de avaliação em pesquisa frequentemente incluem:
- SHD (Structural Hamming Distance) entre grafos estimados e verdadeiros (benchmarks sintéticos),
- SID (Structural Intervention Distance), focando em implicações intervencionais.
Resumo: o que pode e o que não pode ser inferido
O que você frequentemente consegue inferir a partir de dados observacionais (sob Markov + Fidelidade):
- o esqueleto de adjacência,
- colisores (estruturas em V),
- uma classe de equivalência de Markov (CPDAG), não um único grafo acíclico direcionado.
O que, em geral, você não consegue inferir apenas com dados observacionais:
- todas as direções das arestas,
- estrutura causal na presença de confundimento latente arbitrário (sem suposições adicionais),
- alegações causais confiáveis quando viés de seleção, erro de medição ou violações do modelo dominam.
O que se torna possível com suposições ou dados extras:
- mais direções (às vezes identificabilidade completa) usando intervenções, ordem temporal, múltiplos ambientes ou assimetrias de modelos funcionais (ruído não gaussiano/ruído aditivo).
A descoberta causal é melhor vista como uma forma principiada de transformar dados + suposições em hipóteses causais testáveis, intimamente conectada a Grafos Causais e a questões fundamentais em Confundimento e Ajuste.