8.2 Any Way You Like It

Figure 8.2
Figure 8.2
Finding all paths
  1. Start at the treatment variable
  2. Follow one of the arrows coming in/out of the treatment variable to find another variable
  3. Follow one of the arrows coming in or out of that variable
  4. Keep repeating step 3 until you either come to a variable you’ve already visited (loop!), or find the outcome variable (path)
  5. Every time you find a path/loop, back up one and try a different arrow in/out until you’ve tried them all. Then, back up again and try all those arrows
Solution
Example 1 Paths
Example 1 Paths
Typst Code
#import "@preview/autograph:0.1.0": diagram, node, edge

#set page(width: 10in, height: 7.5in)
#set text(
  font: "New Computer Modern",
  size: 14pt
)

#set align(center)
= Figure 8.1: Starter Example
#diagram(bezier: true,
  node(<Treatment>, fill: red.lighten(50%)),
  node(<Outcome>, fill: blue.lighten(50%)),
  node(<A>, fill: purple.lighten(50%)),
  node(<B>, fill: purple.lighten(50%)),
  node(<C>, fill: purple.lighten(50%)),

  edge(<Treatment>, <Outcome>, stroke: 5pt, ),
  edge(<Treatment>, <A>, stroke: 2pt + gray.lighten(50%)),
  edge(<A>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <A>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <C>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <Treatment>, stroke: 2pt + gray.lighten(50%)),
  edge(<C>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
)

#diagram(bezier: true,
  node(<Treatment>, fill: red.lighten(50%)),
  node(<Outcome>, fill: blue.lighten(50%)),
  node(<A>, fill: purple.lighten(50%)),
  node(<B>, fill: purple.lighten(50%)),
  node(<C>, fill: purple.lighten(50%)),

  edge(<Treatment>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<Treatment>, <A>, stroke: 5pt, ),
  edge(<A>, <Outcome>, stroke: 5pt, ),
  edge(<B>, <A>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <C>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <Treatment>, stroke: 2pt + gray.lighten(50%)),
  edge(<C>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
)

#diagram(bezier: true,
  node(<Treatment>, fill: red.lighten(50%)),
  node(<Outcome>, fill: blue.lighten(50%)),
  node(<A>, fill: purple.lighten(50%)),
  node(<B>, fill: purple.lighten(50%)),
  node(<C>, fill: purple.lighten(50%)),

  edge(<Treatment>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<Treatment>, <A>, stroke: 5pt, ),
  edge(<A>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <A>, stroke: 5pt, ),
  edge(<B>, <C>, stroke: 5pt, ),
  edge(<B>, <Treatment>, stroke: 2pt + gray.lighten(50%)),
  edge(<C>, <Outcome>, stroke: 5pt, ),
)

#diagram(bezier: true,
  node(<Treatment>, fill: red.lighten(50%)),
  node(<Outcome>, fill: blue.lighten(50%)),
  node(<A>, fill: purple.lighten(50%)),
  node(<B>, fill: purple.lighten(50%)),
  node(<C>, fill: purple.lighten(50%)),

  edge(<Treatment>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<Treatment>, <A>, stroke: 2pt + gray.lighten(50%)),
  edge(<A>, <Outcome>, stroke: 5pt, ),
  edge(<B>, <A>, stroke: 5pt, ),
  edge(<B>, <C>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <Treatment>, stroke: 5pt, ),
  edge(<C>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
)

#diagram(bezier: true,
  node(<Treatment>, fill: red.lighten(50%)),
  node(<Outcome>, fill: blue.lighten(50%)),
  node(<A>, fill: purple.lighten(50%)),
  node(<B>, fill: purple.lighten(50%)),
  node(<C>, fill: purple.lighten(50%)),

  edge(<Treatment>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<Treatment>, <A>, stroke: 2pt + gray.lighten(50%)),
  edge(<A>, <Outcome>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <A>, stroke: 2pt + gray.lighten(50%)),
  edge(<B>, <C>, stroke: 5pt, ),
  edge(<B>, <Treatment>, stroke: 5pt, ),
  edge(<C>, <Outcome>, stroke: 5pt, ),
)