dowhy icon indicating copy to clipboard operation
dowhy copied to clipboard

Clarification on frontdoor identification

Open vicbeldo98 opened this issue 4 years ago • 1 comments

A set of variables Z is said to satisfy the front-door criterion relative to an ordered pair of variables (X, Y), if:

  1. Z intercepts all directed paths from X to Y
  2. There is no unblocked backdoor path from X to Z
  3. All backdoor paths from Z to Y are blocked by X I want to study the causal effect of A on C in the following diagram: image

DoWhy identification retrieves B as a valid Z in order to apply frontdoor criterion. Though, I don't think the third condition is being fulfilled. Have I understood anything the wrong way?

image

Thank you in advance!

vicbeldo98 avatar Jun 11 '21 12:06 vicbeldo98

thank you for raising this issue @vicbeldo98 This may be a bug. Let me check.

amit-sharma avatar Jun 14 '21 08:06 amit-sharma

Hi, I am not able to reproduce the output in the OP (in my case no frontdoor estimand is found). However, I similarly believe there is an incorrect behavior in the following graph:

1

In this case {M} should not satisfy the frontdoor criterion, although {M, R} would. However dowhy identifies {M} as an adjustment set and is impervious even to whether {E, R} are unobserved.

2

The desired behavior, if I understand it correctly, is that it should return {M, R} or {M, E} as frontdoor adjustment sets if either of E and R are observable, and should return no frontdoor variables found if both are unobservable.

I have been looking at the source code but I haven't found where it might be going wrong. What I did learn is that only 1-variable frontdoor adjustment sets are supported for the moment. I think it would be important that this would be specified in the documentation. But in any case, I would consider the situation above to be a bug (the call should return that no 1-variable frontdoor adjustment sets are found).

gabrielgorenroig avatar Dec 02 '22 22:12 gabrielgorenroig

As @gabrielgorenroig remarked, this issue has been fixed in recent releases. I tested with v0.10.

Following up on @gabrielgorenroig issue in #971.

amit-sharma avatar Aug 17 '23 10:08 amit-sharma