Class FasLofs
- All Implemented Interfaces:
IGraphSearch
Runs Fast Adjacency Search (FAS) and then orients each edge using the robust skew orientation algorithm. Checks are done for adding two-cycles. The two-cycle checks do not require non-Gaussianity. The robust skew orientation of edges left or right does.
Moving this to the work_in_progress package because the functionality can be generalized. Instead of hard-coding FAS, an arbitrary algorithm can be used to obtain adjacencies. Instead of hard-coding robust skew, and arbitrary algorithm can be used to to pairwise orientation. Instead of orienting all edges, an option can be given to just orient the edges that are unoriented in the input graph (see, e.g., PC LiNGAM). This was an early attempt at this. For PC-LiNGAM, see this paper:
Hoyer, P. O., Hyvarinen, A., Scheines, R., Spirtes, P. L., Ramsey, J., Lacerda, G., & Shimizu, S. (2012). Causal discovery of linear acyclic models with arbitrary distributions. arXiv preprint arXiv:1206.3260.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
getDepth()
long
double
search()
Runs the search on the concatenated data, returning a graph, possibly cyclic, possibly with two-cycles.void
setDepth
(int depth) void
setKnowledge
(Knowledge knowledge) void
setPenaltyDiscount
(double penaltyDiscount)
-
Constructor Details
-
FasLofs
- Parameters:
dataSet
- These datasets to analyze.
-
-
Method Details
-
search
Runs the search on the concatenated data, returning a graph, possibly cyclic, possibly with two-cycles. Runs the fast adjacency search (FAS, Spirtes et al., 2000) follows by a modification of the robust skew rule (Pairwise Likelihood Ratios for Estimation of Non-Gaussian Structural Equation Models, Smith and Hyvarinen), together with some heuristics for orienting two-cycles.- Specified by:
search
in interfaceIGraphSearch
- Returns:
- the graph. Some of the edges may be undirected (though it shouldn't be many in most cases) and some of the adjacencies may be two-cycles.
-
getDepth
public int getDepth()- Returns:
- The depth of search for the Fast Adjacency Search (FAS).
-
setDepth
public void setDepth(int depth) - Parameters:
depth
- The depth of search for the Fast Adjacency Search (S). The default is -1. unlimited. Making this too high may results in statistical errors.
-
getElapsedTime
public long getElapsedTime()- Returns:
- The elapsed time in milliseconds.
-
getPenaltyDiscount
public double getPenaltyDiscount()- Returns:
- Returns the penalty discount used for the adjacency search. The default is 1, though a higher value is recommended, say, 2, 3, or 4.
-
setPenaltyDiscount
public void setPenaltyDiscount(double penaltyDiscount) - Parameters:
penaltyDiscount
- Sets the penalty discount used for the adjacency search. The default is 1, though a higher value is recommended, say, 2, 3, or 4.
-
getKnowledge
- Returns:
- the current knowledge.
-
setKnowledge
- Parameters:
knowledge
- Knowledge of forbidden and required edges.
-