1.5.1 Modelagem de pressupostos causais
No post anterior, cobrimos gráficos acíclicos dirigidos. Nesta seção, aprendemos como podemos usar DAGs para raciocinar sobre as suposições causais em nossos modelos.
Matematicamente, Estrutural, Modelo Causal (SCM) consiste em um conjunto de Endógena (V) e um conjunto de forças Exógenas (U) variáveis ligadas por um conjunto de funções (F) que determinam os valores das variáveis em V com base nos valores das variáveis em U.
intuitivamente, se pensarmos num DAG como representando um fluxo de informação, Então as variáveis U são as entradas para o sistema, enquanto as variáveis V são os nós onde essa informação é processada.
Cada SCM está associado a um modelo de gráfico (DAG), onde cada nó é uma variável em U ou V e cada aresta é uma função f. Cada aresta (função) corresponde a uma suposição causal:
- Se a variável Y é filho de uma variável X, então dizemos que Y é causado por X, ou que X é a causa direta de Y.
- Se a variável Y é o descendente de uma variável X, então dizemos que Y é potencialmente causado por X, ou que X é a causa potencial de Y.
Vamos considerar o exemplo na figura 1.9:
a Partir de simplesmente observando este gráfico, que imediatamente e de forma intuitiva, segure um monte de detalhes do subjacente SCM:
- X e Y não têm arestas recebidas, por isso são variáveis exógenas (pertencentes a U).
- Z tem duas arestas entradas, por isso é uma variável endógena (pertencente a V).
- Z tem duas causas diretas X e Y, ou, em outras palavras, o valor de Z depende explicitamente dos valores de X e Y e fz=f(X, Y).
no Entanto, temos a especificação completa do SCM para saber exatamente qual é a função fz que determina o valor de Z. Estruturais Modelo Causal só é totalmente especificado quando, além de o DAG acima, nós também especificar:
Aqui é importante observar que, apesar de DAGs, contém menos informações do que a especificada SCM, eles são muitas vezes mais útil. Os gráficos são objetos extremamente visuais, tornando-os mais fáceis de interpretar e analisar. Além disso, é frequentemente o caso em que simplesmente não temos informações suficientes para especificar completamente o SCM, mas podemos intuitivamente definir como o grafo causal deve ser.
simulando modelos
uma das vantagens de um SCM totalmente especificado é que eles são bastante fáceis de simular. Por exemplo, podemos criar alguns falsos (determinístico) dados para o SCM descrito acima:
o Que gera um simples pandas DataFrame com os valores de X, Y e Z:
Eu te perdôo se você não está particularmente impressionado por este exemplo. Afinal, a única coisa que fizemos foi gerar alguns dados falsos baseados numa equação simples. Isto não é particularmente impressionante, até olharmos um pouco abaixo da superfície:
Este DataFrame representa um totalmente numérico descrição do nosso modelo… em outras palavras, este é um brinquedo versão de que os dados originais que poderia ter sido utilizado, em conjunto com a DAG acima, para caber a função de fz.
Se a gente tratar este DataFrame como o nosso “dados empíricos” e assumimos (baseado em algum domínio de conhecimento) que fz deve ser uma regressão linear de X e Y, então podemos simplesmente ajuste Z ~ X + Y:
Para recuperar os coeficientes de multiplicação de X e Y, respectivamente:
Vamos olhar com mais detalhe sobre como avaliar e ajustar Modelos Causais mais tarde, mas mesmo este simples modelo de brincar já nos fornece um gostinho do que está por vir e a simplicidade (e na generalidade) desta abordagem.
um exemplo estocástico
vamos agora dar uma olhada em um exemplo mais complexo, SCM 1.5.3. Neste caso, o SCM é dado por:
From this specification, we can easily obtain the corresponding DAG:
We are also told that all exogenous variables are independently distributed with an expected value zero. Isto implica que as variáveis exógenas correspondem a influências não observadas em nosso modelo, para que possam ser tratadas como fatores de erro.
Ligar aleatória normalmente distribuída valores para Ux, Uy e Uz podemos construir rapidamente uma DataFrame especificar os valores de X, Y e Z.
Vamos esquecer por um segundo que temos explícita analítica fórmulas que produzem os valores das variáveis endógenas e usar apenas os valores numéricos em nosso DataFrame.
quaisquer questões que possamos ter sobre o comportamento deste modelo podem ser respondidas por um procedimento semelhante ao utilizado acima: encaixar um modelo linear (uma vez que estamos assumindo que todas as dependências são lineares) onde nossos valores observados são as variáveis independentes e nossas incógnitas são as variáveis dependentes.
Por exemplo, se quisermos saber qual o valor de Z pode ser para um determinado valor de Y, vamos simplesmente ajuste Z ~ Y e, em seguida, o plugin correspondente valor de Y. Se Y=3, então o valor esperado de Z é 0.189261, como pode ser facilmente verificado ligando Y=3 na expressão de fZ acima (onde podemos rapidamente ver que Z=3/16).
Por outro lado, qual seria o valor de Z se além de observar Y = 3, também observamos que X = 1? Para responder a esta questão, nós poderia caber Z~X+Y. Quando realizamos este ajuste, obtemos:
Onde podemos ler os coeficientes de Y e X. Se agora ligue os valores de X e Y, obtemos Z=0.189821, que é similar ao valor obtido acima.
poderíamos ter adivinhado que este seria o resultado olhando para a tabela de resumo acima. Nós percebemos que o coeficiente para X é de 0,0053±0,003 tornando-o muito próximo de zero, praticamente desprezível.embora isto possa parecer surpreendente, é uma das principais razões por que esta classe de Modelos é tão poderosa.
O valor de uma determinada variável endógena pode depender apenas os valores de seus pais
Esta observação simples significa que podemos simplificar nossos cálculos, significativamente, ignorando quaisquer variáveis que não estão entre os pais do que estamos interessados em.
O que nos leva ao próximo tópico…
1.5.2 decomposição de produtos
podemos construir sobre a nossa observação acima para definir uma regra simples, mas poderosa, a “regra da decomposição de produtos” que é definida no livro como:
Para qualquer modelo cujo grafo é acíclico, a distribuição conjunta das variáveis no modelo é dada pelo produto das distribuições condicionais P(criança|pais) sobre todas as “famílias” no gráfico
Assim, para uma simples cadeia de gráfico:
Nós podemos escrever imediatamente:
Isso significa que, em vez de uma grande mesa de observações para cada combinação possível de X, Y e X, precisamos de muito menor tabelas para X, Y|X e Z|Y, que irá conter as mesmas informações e são muito mais fáceis de obter.
mais importante, os modelos gráficos permitem-nos anotar esta decomposição sem precisar de saber explicitamente nada sobre as funções subjacentes a cada variável.
In general, we write:
Let us now consider the example in Fig 1.10:
From this figure, we can immediately write:
and:
Which could also be obtained from the definition of the conditional probability P(X|Z). We can further write:
by the theorem of total probability. And if we plugin the values from the conditional probability tables above, we obtain:
And, similarly:
Finalmente, podemos estimar o efeito sobre a mortalidade (Y=1) de tomar a droga (X=1) calculando a diferença P(Y=1|X=1)-P(Y=1|X=0). Para a população com (Z=1) e sem (Z=0) a doença, temos:
Aqui deve ficar claro por que estamos condicionado em ambos X e Z: estamos impondo que cada indivíduo pertence a uma população específica (Z) e leva ou não a medicação (X).por outro lado, se queremos apenas um efeito médio em toda a população, então precisamos condicionar apenas o tratamento (X). Neste caso, queremos calcular P(Y=1|X=1)-P (Y=1|X=0). Reescrevemos esta expressão como:
Where we can easily plugin the expressions defined above.