Skip to content

Looking for clarification #1

@TedVanderfeen

Description

@TedVanderfeen

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.

care/src/causal_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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions