CAD 009 - Atividade 4 e 5

Code
library(dagitty)
library(ggdag)
library(ggplot2)
library(gridExtra)

1 Exercício 4

1.1 Considere o grafo apresentado abaixo:

Code
dagified <- dagify(y ~ x + w,
                   w ~ x,
                   z ~ w + y,
                   t ~ y + z)

dagified <- tidy_dagitty(dagified)

ggdag(dagified) +
  theme_dag()

1.1.1 Nomeie todos os pais de Z

Como podemos ver pelo gráfico acima, “y” e “w” são pais de z.

De fato, quando a mesma pergunta é feita para o software, o resultado retornado é o mesmo exposto acima.

Code
ggdag_parents(dagified, "z") +
  theme_dag()

1.1.2 Nomeie todos os ancestrais de Z

Seguindo o mesmo raciocínio, “x”, “y” e “w” são ancestrais de “z”.

1.1.3 Nomeie todos os filhos de W

Os filhos de “w” são “y” e “z”.

1.1.4 Nomeie todos os descendentes de W

Os descendentes de “w” são “y”, “z” e “t”

1.1.5 Desenhe todos os caminhos (simples) entre X e T (ou seja, nenhum nó deve aparecer mais de uma vez).

Code
# Path 1
dagified <- dagitty("dag{x -> y -> t}")

dagified <- tidy_dagitty(dagified)

path1 <- ggdag(dagified)

# Path 2
dagified <- dagitty("dag{x -> w -> z -> t}")

dagified <- tidy_dagitty(dagified)

path2 <- ggdag(dagified)

1.1.6 Desenhe todos os caminhos direcionados entre X e T

Code
all_paths <- list("dag{x -> y -> t}",
                  "dag{x -> y -> z -> t}",
                  "dag{x -> w -> z -> t}",
                  "dag{x -> w -> y -> t}",
                  "dag{x -> w -> y -> z -> t}")

# Para cada caminho, transformamos em objeto (i) dagitty; (ii) tidy; (iii) ggplot
all_paths <- lapply(all_paths, function(x) ggdag(tidy_dagitty(dagitty(x))))

for (i in seq_along(all_paths)) {
  all_paths[[i]] <- all_paths[[i]] +
  ggtitle(paste("Path", i)) +
  theme(legend.position = "none",
        panel.grid = element_blank(),
        axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())
    
}

2 Exercício 5

2.1 Considere o DAG apresentado abaixo:

Code
dagified <- dagify(x ~ z1 + z3,
                   w ~ x,
                   y ~ w + z2 + z3,
                   z3 ~ z1 + z2)

dagified <- tidy_dagitty(dagified)

ggdag(dagified) +
  theme_dag()

2.1.1 Para cada par de nós não-adjacentes neste grafo, encontre um conjunto de variáveis que d-separa este par.

{z1, z2} - z3 é colisor {z1, w} - {x} e {z3, x} {z1, y} - {z3, x} e {z3, w} {z2, w} - {z3} e {x} {z2, x} - {z3} {z3, w} - {x} {x, y} - {w}

2.1.2 O que essa lista de independências nos diz sobre os dados?

Essa lista nos mostra como que condicionar por uma variável pode alterar a distribuição dos dados. Por exemplo, em um modelo de regressão, teríamos que existe uma relação entre “x” e “y”. Entretanto, se adicionarmos “w” a essa regressão, a relação entre “x” e “y” deixaria de existir. Assim, essa lista de independências nos mostra como a relação entre variáveis pode ser alterada drasticamente após a inclusão ou retirada de uma outra variável.