Class Grasp

java.lang.Object
edu.cmu.tetrad.search.Grasp

public class Grasp extends Object
Implements the GRaSP algorithms, which uses a certain procedure to search in the space of permutations of variables for ones that imply CPDAGs that are especially close to the CPDAG of the true model. The reference is here:

Lam, W. Y., Andrews, B., & Ramsey, J. (2022, August). Greedy relaxations of the sparsest permutation algorithm. In Uncertainty in Artificial Intelligence (pp. 1052-1062). PMLR.

GRaSP can use either a score or an independence test; you can provide both, though if you do you need to use the parameters to choose which one will be used. The score option is more scalable and accurate, though the independence option is perhaps a little easier ot deal with theoretically and is useful for generating unit test results.

As shown the reference above, GRaSP generates results for the linear, Gaussian case for N = 1000 with precisions for adjacencies and arrowheads near 1 and recalls of about 0.85, when the linear, Gaussian BIC score is used with a penalty of 2. For N = 10,000 recalls also rise up to about 1, so it can be an extraordinarily accurate search for the linear, Gaussian case. But in principle, it can be used with any sort of data, so long as a BIC score is available for that data. So it can be used for the discrete case and for the mixed continuous/discrete case as well.

The version of GRaSP described in the above reference is limited to about 100 variables in execution time, after which it become impracticably slow. Recent optimizations allow it to scale further than that; hopefully these will be written up soon and made available.

Knowledge can be used with this search. If tiered knowledge is used, then the procedure is carried out for each tier separately, given the variable preceding that tier, which allows the SP algorithm to address tiered (e.g., time series) problems with larger numbers of variables.

This class is configured to respect knowledge of forbidden and required edges, including knowledge of temporal tiers.

Version:
$Id: $Id
Author:
bryanandrews, josephramsey
See Also: