Construct the partially directed equivalence class implied by the DAG.
Returns:
| Type |
Description |
DAG
|
A new DAG instance representing the Markov equivalence class,
where edges are undirected unless compelled by v-structures.
|
Notes
The equivalence class replaces directional edges with undirected edges
except in v-structures (triples X -> Z <- Y where X and Y
are not adjacent).
Examples:
>>> G = DAG(graph="X -> Z -> Y")
>>> eq = G.equivalence_class()
>>> eq
Graph:
Z -- X
Z -- Y
Observed: Z, Y, X
>>> eq.undirected
[{'X', 'Z'}, {'Z', 'Y'}]
Source code in causalinf/gcm.py
| def equivalence_class(self):
"""
Construct the partially directed equivalence class implied by the DAG.
Returns
-------
DAG
A new `DAG` instance representing the Markov equivalence class,
where edges are undirected unless compelled by v-structures.
Notes
-----
The equivalence class replaces directional edges with undirected edges
except in v-structures (triples ``X -> Z <- Y`` where ``X`` and ``Y``
are not adjacent).
Examples
--------
>>> G = DAG(graph="X -> Z -> Y")
>>> eq = G.equivalence_class()
>>> eq
Graph:
Z -- X
Z -- Y
Observed: Z, Y, X
>>> eq.undirected
[{'X', 'Z'}, {'Z', 'Y'}]
"""
eq = dagitty.equivalenceClass(self.__dagitty__)
dag, _ = self.__dagitty2inputs__(eq)
res = self.__rebuild_graph__(dag)
return res
|