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 BOSS-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.
- Version:
- $Id: $Id
- Author:
- josephramsey
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
getDepth()
Getter for the fielddepth
.long
getElapsedTime.Getter for the fieldknowledge
.double
Getter for the fieldpenaltyDiscount
.search()
Runs the search on the concatenated data, returning a graph, possibly cyclic, possibly with two-cycles.void
setDepth
(int depth) Setter for the fielddepth
.void
setKnowledge
(Knowledge knowledge) Setter for the fieldknowledge
.void
setPenaltyDiscount
(double penaltyDiscount) Setter for the fieldpenaltyDiscount
.
-
Constructor Details
-
FasLofs
-
-
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.
- Throws:
InterruptedException
- if any.
-
getDepth
public int getDepth()Getter for the field
depth
.- Returns:
- The depth of search for the Fast Adjacency Search (FAS).
-
setDepth
public void setDepth(int depth) Setter for the field
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()getElapsedTime.
- Returns:
- The elapsed time in milliseconds.
-
getPenaltyDiscount
public double getPenaltyDiscount()Getter for the field
penaltyDiscount
.- 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) Setter for the field
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
-
setKnowledge
Setter for the field
knowledge
.- Parameters:
knowledge
- Knowledge of forbidden and required edges.
-