Atividade 6

Author

Pedro Teles

Code
library(dagitty)
library(ggdag)

1 Questão 1

Considere o DAG apresentado abaixo, o qual não contém os termos de erro a título de simplificação:

Code
dag_q1 <- dagitty('dag {
M [pos="-0.475,0.800"]
X [exposure,pos="-1.600,0.800"]
Y [outcome,pos="0.650,0.800"]
Z1 [pos="-1.600,0.850"]
Z2 [pos="0.650,0.850"]
Z3 [pos="-0.475,0.850"]
M -> Y
X -> M
Z1 -> X
Z1 -> Z3
Z2 -> Y
Z2 -> Z3
Z3 -> X
Z3 -> Y
}')

dagified_q1 <- tidy_dagitty(dag_q1)

ggdag(dagified_q1) +
  theme_dag()

Escreva uma equação de regressão para Y tal que, se um determinado coeficiente nessa equação for diferente de zero, o modelo da Figura acima está errado.

Para responder essa pergunta, utilizamos o conceito de d-separation. Segundo o material desenvolvido pelo dagitty, “d-separation é um critério para decidir, dado um certo gráfico causal, se um conjunto de variáveis \(X\) é independente de um conjunto de variáveis \(Y\), dado um terceiro conjunto \(Z\).

Assim, nosso primeiro modelo de regressão que atinge o objetivo especificado na questão é:

\[ Y = \alpha + \beta_1 X + \beta_2 W + \epsilon \]

Nesse caso, supondo que o DAG está corretamente especificado, \(\beta_1\) deveria ser igual a 0. Isso porque, segundo a Regra 2 do material citado acima, o caminho entre \(X\) e \(Y\) passa a estar bloqueado quando condicionamos por \(W\).

Um outro exemplo é o seguinte modelo:

\[ Y = \alpha + \beta_1 Z1 + \beta_2 Z2 + \beta_3 Z3 + \beta_4 X + \epsilon \]

Nesse caso, supondo que o DAG está corretamente especificado, \(\beta_1\) deveria ser igual a 0.

Esse caso é interessante e merece ser estudado com maior profundidade. Se repararmos, \(Z1\) impacta \(Y\) através de 2 caminhos diretos: \(Z1 \rightarrow Z3 \rightarrow Y\) e \(Z1 \rightarrow X \rightarrow M \rightarrow Y\). O leitor menos atento pode pensar que \(P(Y | Z1, Z3, X) = P(Y | Z3, X)\). Ou seja, que condicionado a \(Z3\) e \(X\) (ou \(Z3\) e \(M\)), \(Z1 \perp Y\). Entretanto, quando condicionamos em \(Z3\), abrimos um caminho entre \(Z1\) e \(Z2\), dado que \(Z3\) é um colisor (Regra 3). Com isso, \(Z1\) passa a estar d-conectado com \(Y\) através do caminho \(Z1 \rightarrow Z3 \leftarrow Z2 \rightarrow Y\). Assim, para garantir que \(\beta_1\) na equação de regressão acima seja 0, precisamos condicionar por \(Z2\) também.

2 Questão 2

Considere agora este DAG:

Code
dag_q2 <- dagitty('dag {
bb="0,0,1,1"
A [pos="0.040,-0.470"]
B [pos="0.040,-0.065"]
C [pos="0.900,-0.065"]
D [pos="0.900,-0.470"]
W [pos="0.470,-0.875"]
X [exposure,pos="0.040,-0.875"]
Y [outcome,pos="0.900,-0.875"]
Z [pos="0.470,-0.450"]
A -> X
B -> A
B -> Z
C -> D
C -> Z
D -> Y
W -> Y
X -> W
Z -> X
Z -> Y
}
')

dagified_q2 <- tidy_dagitty(dag_q2)

ggdag(dagified_q2) +
  theme_dag()

2.1 Letra A

Liste todos os conjuntos de variáveis (V) que satisfazem o critério backdoor para determinar o efeito causal de X sobre Y.

Segundo Cinelli, Forney, Pearl (2022), “um conjunto de variáveis \(V\) satisfaz o critério back-door relativo a (\(X\), \(Y\)) em um DAG G se (i) nenhum nó em \(V\) for descendente de \(X\) e (ii) \(V\) bloqueia todos os caminhos entre \(X\) e \(Y\) que contém uma seta chegando em \(X\).”

Primeiro, podemos perceber que \(W\) não pode estar em \(V\), dado que isso seria uma violação do ponto (i) especificado acima. Agora, temos que determinar os conjuntos \(V\) que atendem ao critério (ii). Assim,

\[\begin{aligned} V = [\{A, Z\}, \{B, Z\}, \{C, Z\}, \{D, Z\}, \nonumber \\ \{A, B, Z\}, \{C, D, Z\}, \{A, C, Z\}, \nonumber \\ \{A, Z, D\}, \{B, C, Z\}, \{B, Z, D\}, \nonumber \\ \{A, B, C, Z\}, \{A, B, D, Z\}, \nonumber \\ \{B, C, D, Z\}, \{C, D, Z, B\}, \nonumber \\ \{C, D, A, Z\}, \{A, B, C, D, Z\}] \nonumber \end{aligned}\]

2.2 Letra B

Liste todos os conjuntos mínimos de variáveis que satisfazem o critério backdoor para determinar o efeito causal de X em Y (ou seja, qualquer conjunto de variáveis tal que, se você remover qualquer uma das variáveis do conjunto, este conjunto não atende mais ao critério backdoor).

\[ V = [\{A, Z\}, \{B, Z\}, \{C, Z\}, \{D, Z\}] \]