Exposed public API for RSL-D
learn_and_get_skeleton(ci_test, data, find_markov_boundary_matrix_fun=None)
Learn the skeleton of a diamond-free graph using the RSL-D algorithm.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ci_test
|
Callable[[int, int, List[int], ndarray], bool]
|
A conditional independence test function that takes in the indices of two variables and a list of variable indices as the conditioning set, and returns True if the two variables are independent given the conditioning set, and False otherwise. |
required |
data_matrix
|
ndarray
|
The data matrix with shape (num_samples, num_vars), where each column corresponds to a variable and each row corresponds to a sample. |
required |
Returns:
Type | Description |
---|---|
Graph
|
nx.Graph: A networkx graph representing the learned skeleton. |
Source code in rcd/rsl/rsl_d.py
RSL-D implementation details
Bases: _RSLBase
Implementation for the RSL-D algorithm for learning diamond-free graphs from i.i.d. samples.
This class is initialized with a conditional independence test function, which determines whether two variables are independent given another set of variables, using the data provided.
The class has a learn_and_get_skeleton function that takes in a data matrix (numpy array), where each column corresponds to a variable and each row corresponds to a sample, and returns a networkx graph representing the learned skeleton.
Source code in rcd/rsl/rsl_d.py
__init__(ci_test, find_markov_boundary_matrix_fun=None)
Initialize the RSL-D algorithm with the conditional independence test to use.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ci_test
|
Callable[[int, int, List[int], ndarray], bool]
|
A conditional independence test function that takes in the indices of two variables and a list of variable indices as the conditioning set, and returns True if the two variables are independent given the conditioning set, and False otherwise. |
required |
find_markov_boundary_matrix_fun
|
Callable[[ndarray], ndarray]
|
A function to find the Markov boundary matrix. This function should take in a numpy array of data, and return a 2D numpy array, where the (i, j)th entry is True if the jth variable is in the Markov boundary of the ith variable, and False otherwise. |
None
|
Source code in rcd/rsl/rsl_d.py
find_neighborhood(var)
Find the neighborhood of a variable using Proposition 40.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var
|
int
|
The variable whose neighborhood we want to find. |
required |
Returns:
Type | Description |
---|---|
ndarray
|
np.ndarray: 1D numpy array containing the variables in the neighborhood. |
Source code in rcd/rsl/rsl_d.py
is_removable(var)
Check whether a variable is removable using Theorem 39.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var
|
int
|
The variable to check. |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
bool
|
True if the variable is removable, False otherwise. |