-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Hi Abir,
First of all, thank you for releasing this code (as well as the Cure and Reval repos).
I'm having a look at recreating your results and I was a little lost on the below block of code in the edge resolution function of casual_model.py.
Lines 147 to 150 in cc7bcc3
| for i in range(int(len(s_edges)/2)): | |
| for obj in objectives: | |
| if s_edges[i][0]!=s_edges[i][1]: | |
| single_edges.append((s_edges[i][0],obj)) |
As far as I can tell, this resolve_edges function copies the PAG with 4 edge types to an ADMG which only has two edge types, and as such it must resolve these additional two edge types (undirected and definitely direct) into simply bi-directectional and directed edges. From what I can see the above code takes the first half of the single edge list and simply adds additional edges between whatever nodes exist there and the objective nodes. This results in the warnings from ananke that are being sent to the trash that report perfect separation between these nodes as there hasn't been any independence testing done on these new edges that are added above. Could you please explain why this has been done in the context of your paper?
Could you also please clarify where the entropy-based testing is taking place? I had a look at your reference [25] and it goes over some algorithms for doing this but I couldn't find any such code in the care repo.
Many thanks in advance!
Ted