8.2 Any Way You Like It
Figure 8.2
Finding all paths
- Start at the treatment variable
- Follow one of the arrows coming in/out of the treatment variable to find another variable
- Follow one of the arrows coming in or out of that variable
- Keep repeating step 3 until you either come to a variable you’ve already visited (loop!), or find the outcome variable (path)
- 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
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, ),
)