Class FlopInitialOrder
The order is constructed so that strongly correlated variables are placed adjacent to one another: it begins with the two most correlated variables and then repeatedly appends the unplaced variable with the smallest residual variance when regressed on the variables already placed. This is computed via a pivoted Cholesky decomposition of the correlation matrix, requiring O(p^3) time and O(p^2) memory in the worst case.
The motivation is that order-based searches using grow-shrink parent selection can fail on far-apart ancestor-descendant pairs whose marginal dependence is too weak to detect in finite samples (path graphs are the canonical hard case). Placing strongly correlated variables adjacently in the initial order avoids asking grow-shrink to detect such weak long-range dependencies.
The correlation matrix (rather than the covariance matrix) is used throughout, which makes the resulting order invariant to the scaling of the individual variables.
Typical usage with BOSS:
PermutationSearch search = new PermutationSearch(new Boss(score));
search.setOrder(FlopInitialOrder.initialOrder(dataSet));
Graph cpdag = search.search();
- Version:
- $Id: $Id
- Author:
- josephramsey
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptioninitialOrder(DataSet dataSet) Computes the FLOP initial order for the variables in the given data set.initialOrder(ICovarianceMatrix covariances) Computes the FLOP initial order for the variables of the given covariance matrix.
-
Method Details
-
initialOrder
-
initialOrder
Computes the FLOP initial order for the variables of the given covariance matrix. The matrix is first converted to a correlation matrix, so the result is scale-invariant.- Parameters:
covariances- A covariance (or correlation) matrix.- Returns:
- The variables of the covariance matrix, in the FLOP initial order.
-