Closed benibela closed 1 year ago
I merged this and made it available on dagitty.net/experimental/ for now.
I do still find the output a bit confusing. Can you explain the behavior in the DAG below? Why does it say "biasing paths are open" and "no adjustment set found" here? Wouldn't it be more logical to say something like "no front-door adjustment necessary" because the causal effect is simply identified?
Why does it say "biasing paths are open"
Because I did not change the red text, only the logic.
It tests, form the adjusted nodes a front-door adjustment set, and then shows the text for the old adjustment sets:
if( GraphAnalyzer[f]( g ) ){
if( adjusted.length == 0 ){
tgt_el.appendChild( msgOKP( "No open biasing paths." ) )
} else {
tgt_el.appendChild( msgOKP( "Correctly adjusted." ) )
}
} else {
if( adjusted.length == 0 ){
tgt_el.appendChild( msgWarnP( "Biasing paths are open." ) )
} else {
tgt_el.appendChild( msgWarnP( "Incorrectly adjusted." ) )
}
}
and then it ends up with the biasing paths, because the empty set is not a front-door adjustment set.
and "no adjustment set found" here?
Because there is no front door adjustment.
A front door set would need to block all causal paths
Algorithms from "Linear-Time Algorithms for Front-Door Adjustment in Causal Graphs"