# skeleton: Estimate (Initial) Skeleton of a DAG using the PC / PC-Stable... In pcalg: Methods for Graphical Models and Causal Inference

## Description

Estimate the skeleton of a DAG without latent and selection variables using the PC Algorithm or estimate an initial skeleton of a DAG with arbitrarily many latent and selection variables using the FCI and the RFCI algorithms.

If used in the PC algorithm, it estimates the order-independent “PC-stable” (`"stable"`) or original PC (`"original"`) “skeleton” of a directed acyclic graph (DAG) from observational data.

When used in the FCI and RFCI algorithms, this function estimates only an initial order-independent (or PC original) “skeleton”. Because of the presence of latent and selection variables, to find the final skeleton those algorithms need to perform additional tests later on and consequently some edges can be further deleted.

## Usage

 ```1 2 3 4``` ```skeleton(suffStat, indepTest, alpha, labels, p, method = c("stable", "original", "stable.fast"), m.max = Inf, fixedGaps = NULL, fixedEdges = NULL, NAdelete = TRUE, numCores = 1, verbose = FALSE) ```

## Arguments

 `suffStat` Sufficient statistics: List containing all necessary elements for the conditional independence decisions in the function `indepTest`. `indepTest` Predefined `function` for testing conditional independence. The function is internally called as `indepTest(x,y,S,suffStat)` and tests conditional independence of `x` and `y` given `S`. Here, `x` and `y` are variables, and `S` is a (possibly empty) vector of variables (all variables are denoted by their column numbers in the adjacency matrix). `suffStat` is a list containing all relevant elements for the conditional independence decisions. The return value of `indepTest` is the p-value of the test for conditional independence. `alpha` significance level (number in (0,1) for the individual conditional independence tests. `labels` (optional) character vector of variable (or “node”) names. Typically preferred to specifying `p`. `p` (optional) number of variables (or nodes). May be specified if `labels` are not, in which case `labels` is set to `1:p`. `method` Character string specifying method; the default, `"stable"` provides an order-independent skeleton, see ‘Details’ below. `m.max` Maximal size of the conditioning sets that are considered in the conditional independence tests. `fixedGaps` logical symmetric matrix of dimension p*p. If entry `[i,j]` is true, the edge i-j is removed before starting the algorithm. Therefore, this edge is guaranteed to be absent in the resulting graph. `fixedEdges` a logical symmetric matrix of dimension p*p. If entry `[i,j]` is true, the edge i-j is never considered for removal. Therefore, this edge is guaranteed to be present in the resulting graph. `NAdelete` logical needed for the case `indepTest(*)` returns `NA`. If it is true, the corresponding edge is deleted, otherwise not. `numCores` number of processor cores to use for parallel computation. Only available for `method = "stable.fast"`. `verbose` if `TRUE`, detailed output is provided.

## Details

Under the assumption that the distribution of the observed variables is faithful to a DAG and that there are no latent and selection variables, this function estimates the skeleton of the DAG. The skeleton of a DAG is the undirected graph resulting from removing all arrowheads from the DAG. Edges in the skeleton of a DAG have the following interpretation:
There is an edge between i and j, ij, if and only if variables i and j are conditionally dependent given S for all possible subsets S of the remaining nodes.

On the other hand, the distribution of the observed variables is faithful to a DAG with arbitrarily many latent and selection variables, `skeleton()` estimates the initial skeleton of the DAG. Edges in this initial skeleton of a DAG have the following interpretation:
There is an edge ij if and only if variables i and j are conditionally dependent given S for all possible subsets S of the neighbours of i and the neighbours of j.

The data are not required to follow a specific distribution, but one should make sure that the conditional indepedence test used in `indepTest` is appropriate for the data. Pre-programmed versions of `indepTest` are available for Gaussian data (`gaussCItest`), discrete data (`disCItest`), and binary data (see `binCItest`). Users may also specify their own `indepTest` function.

The PC algorithm (Spirtes, Glymour and Scheines, 2000) (`method = "original"`) is known to be order-dependent, in the sense that the output may depend on the order in which the variables are given. Therefore, Colombo and Maathuis (2014) proposed a simple modification, called “PC-stable”, which yields order-independent adjacencies in the skeleton, provided by `pc()` with the new default `method = "stable"`. This stable variant of the algorithm is also available with the `method = "stable.fast"`: it runs the algorithm of Colombo and Maathuis (2014) faster than `method = "stable"` in general, but should be regarded as an experimental option at the moment.

The algorithm starts with a complete undirected graph. In each step, it visits all pairs (i,j) of adjacent nodes in the current graph, and determines based on conditional independence tests whether the edge i-j should be removed. In particular, for each step m (m=0,1,…) of the size of the conditioning sets, the algorithm at first determines the neighbours a(i) of each node i in the graph. Then, the algorithm visits all pairs (i,j) of adjacent nodes in the current graph, and the edge i-j is kept if and only if the null hypothesis
i and j are conditionally independent given S
rejected at significance level `alpha` for all subsets S of size m of a(i) and of a(j) (as judged by the function `indepTest`). For the `"stable"` method, the neighborhoods a(i) are kept fixed within each value of m, and this makes the algorithm order-independent. Method `"original"`, the original PC algorithm would update the neighbour list after each edge change.

The algorithm stops when m is larger than the largest neighbourhood size of all nodes, or when m has reached the limit `m.max` which may be set by the user.

Since the FCI (Spirtes, Glymour and Scheines, 2000) and RFCI (Colombo et al., 2012) algorithms are built up from the PC algorithm, they are also order-dependent in the skeleton. To resolve their order-dependence issues in the skeleton is more involved, see Colombo and Maathuis (2014). However now, with `method = "stable"`, this function estimates an initial order-independent skeleton in these algorithms (for additional details on how to make the final skeleton of FCI fully order-independent see `fci` and Colombo and Maathuis (2014)).

The information in `fixedGaps` and `fixedEdges` is used as follows. The gaps given in `fixedGaps` are introduced in the very beginning of the algorithm by removing the corresponding edges from the complete undirected graph. Pairs (i,j) in `fixedEdges` are skipped in all steps of the algorithm, so that these edges remain in the graph.

Note: Throughout, the algorithm works with the column positions of the variables in the adjacency matrix, and not with the names of the variables.

## Value

An object of `class` `"pcAlgo"` (see `pcAlgo`) containing an estimate of the skeleton of the underlying DAG, the conditioning sets (`sepset`) that led to edge removals and several other parameters.

## Author(s)

Markus Kalisch ([email protected]), Martin Maechler, Alain Hauser, and Diego Colombo.

## References

D. Colombo and M.H. Maathuis (2014).Order-independent constraint-based causal structure learning. Journal of Machine Learning Research 15 3741-3782.

D. Colombo, M. H. Maathuis, M. Kalisch, T. S. Richardson (2012). Learning high-dimensional directed acyclic graphs with latent and selection variables. Ann. Statist. 40, 294-321.

M. Kalisch and P. Buehlmann (2007). Estimating high-dimensional directed acyclic graphs with the PC-algorithm, JMLR 8 613-636.

P. Spirtes, C. Glymour and R. Scheines (2000). Causation, Prediction, and Search, 2nd edition, MIT Press.

`pc` for generating a partially directed graph using the PC algorithm; `fci` for generating a partial ancestral graph using the FCI algorithm; `rfci` for generating a partial ancestral graph using the RFCI algorithm; `udag2pdag` for converting the skeleton to a CPDAG.

Further, `gaussCItest`, `disCItest`, `binCItest` and `dsepTest` as examples for `indepTest`.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72``` ```################################################## ## Using Gaussian Data ################################################## ## Load predefined data data(gmG) n <- nrow (gmG8\$x) V <- colnames(gmG8\$x) # labels aka node names ## estimate Skeleton skel.fit <- skeleton(suffStat = list(C = cor(gmG8\$x), n = n), indepTest = gaussCItest, ## (partial correlations) alpha = 0.01, labels = V, verbose = TRUE) if (require(Rgraphviz)) { ## show estimated Skeleton par(mfrow=c(1,2)) plot(skel.fit, main = "Estimated Skeleton") plot(gmG8\$g, main = "True DAG") } ################################################## ## Using d-separation oracle ################################################## ## define sufficient statistics (d-separation oracle) Ora.stat <- list(g = gmG8\$g, jp = RBGL::johnson.all.pairs.sp(gmG8\$g)) ## estimate Skeleton fit.Ora <- skeleton(suffStat=Ora.stat, indepTest = dsepTest, labels = V, alpha=0.01) # <- irrelevant as dsepTest returns either 0 or 1 if (require(Rgraphviz)) { ## show estimated Skeleton plot(fit.Ora, main = "Estimated Skeleton (d-sep oracle)") plot(gmG8\$g, main = "True DAG") } ################################################## ## Using discrete data ################################################## ## Load data data(gmD) V <- colnames(gmD\$x) # labels aka node names ## define sufficient statistics suffStat <- list(dm = gmD\$x, nlev = c(3,2,3,4,2), adaptDF = FALSE) ## estimate Skeleton skel.fit <- skeleton(suffStat, indepTest = disCItest, ## (G^2 statistics independence test) alpha = 0.01, labels = V, verbose = TRUE) if (require(Rgraphviz)) { ## show estimated Skeleton par(mfrow = c(1,2)) plot(skel.fit, main = "Estimated Skeleton") plot(gmD\$g, main = "True DAG") } ################################################## ## Using binary data ################################################## ## Load binary data data(gmB) X <- gmB\$x ## estimate Skeleton skel.fm2 <- skeleton(suffStat = list(dm = X, adaptDF = FALSE), indepTest = binCItest, alpha = 0.01, labels = colnames(X), verbose = TRUE) if (require(Rgraphviz)) { ## show estimated Skeleton par(mfrow = c(1,2)) plot(skel.fm2, main = "Binary Data 'gmB': Estimated Skeleton") plot(gmB\$g, main = "True DAG") } ```

### Example output

```Order=0; remaining edges:56
x= 1  y= 2  S=  : pval = 9.117711e-86
x= 1  y= 3  S=  : pval = 1.239262e-28
x= 1  y= 4  S=  : pval = 0.474742
x= 1  y= 5  S=  : pval = 0.002609827
x= 1  y= 6  S=  : pval = 1.495292e-267
x= 1  y= 7  S=  : pval = 6.325238e-39
x= 1  y= 8  S=  : pval = 2.531073e-49
x= 2  y= 1  S=  : pval = 9.117711e-86
x= 2  y= 3  S=  : pval = 0
x= 2  y= 4  S=  : pval = 0.7632856
x= 2  y= 5  S=  : pval = 3.260209e-36
x= 2  y= 6  S=  : pval = 5.03673e-20
x= 2  y= 7  S=  : pval = 0.0001009499
x= 2  y= 8  S=  : pval = 8.217523e-33
x= 3  y= 1  S=  : pval = 1.239262e-28
x= 3  y= 2  S=  : pval = 0
x= 3  y= 4  S=  : pval = 0.9913656
x= 3  y= 5  S=  : pval = 6.410519e-15
x= 3  y= 6  S=  : pval = 1.800441e-05
x= 3  y= 7  S=  : pval = 0.04240381
x= 3  y= 8  S=  : pval = 4.258044e-15
x= 4  y= 5  S=  : pval = 0.463391
x= 4  y= 6  S=  : pval = 0.8826698
x= 4  y= 7  S=  : pval = 0.2876146
x= 4  y= 8  S=  : pval = 0.1192273
x= 5  y= 1  S=  : pval = 0.002609827
x= 5  y= 2  S=  : pval = 3.260209e-36
x= 5  y= 3  S=  : pval = 6.410519e-15
x= 5  y= 6  S=  : pval = 1.972262e-38
x= 5  y= 7  S=  : pval = 8.995386e-08
x= 5  y= 8  S=  : pval = 0
x= 6  y= 1  S=  : pval = 1.495292e-267
x= 6  y= 2  S=  : pval = 5.03673e-20
x= 6  y= 3  S=  : pval = 1.800441e-05
x= 6  y= 5  S=  : pval = 1.972262e-38
x= 6  y= 7  S=  : pval = 6.006472e-188
x= 6  y= 8  S=  : pval = 7.161189e-47
x= 7  y= 1  S=  : pval = 6.325238e-39
x= 7  y= 2  S=  : pval = 0.0001009499
x= 7  y= 5  S=  : pval = 8.995386e-08
x= 7  y= 6  S=  : pval = 6.006472e-188
x= 7  y= 8  S=  : pval = 3.443919e-09
x= 8  y= 1  S=  : pval = 2.531073e-49
x= 8  y= 2  S=  : pval = 8.217523e-33
x= 8  y= 3  S=  : pval = 4.258044e-15
x= 8  y= 5  S=  : pval = 0
x= 8  y= 6  S=  : pval = 7.161189e-47
x= 8  y= 7  S=  : pval = 3.443919e-09
Order=1; remaining edges:40
x= 1  y= 2  S= 3 : pval = 7.522838e-59
x= 1  y= 2  S= 5 : pval = 9.259048e-84
x= 1  y= 2  S= 6 : pval = 3.841769e-67
x= 1  y= 2  S= 7 : pval = 2.043591e-82
x= 1  y= 2  S= 8 : pval = 6.958407e-70
x= 1  y= 3  S= 2 : pval = 0.1785691
x= 1  y= 5  S= 2 : pval = 0.7056143
x= 1  y= 6  S= 2 : pval = 6.12495e-248
x= 1  y= 6  S= 3 : pval = 2.316729e-263
x= 1  y= 6  S= 5 : pval = 6.956318e-268
x= 1  y= 6  S= 7 : pval = 5.511863e-228
x= 1  y= 6  S= 8 : pval = 4.077708e-237
x= 1  y= 7  S= 2 : pval = 1.280151e-35
x= 1  y= 7  S= 3 : pval = 5.222661e-38
x= 1  y= 7  S= 5 : pval = 7.205581e-38
x= 1  y= 7  S= 6 : pval = 0.7728157
x= 1  y= 8  S= 2 : pval = 1.408376e-33
x= 1  y= 8  S= 3 : pval = 4.916297e-43
x= 1  y= 8  S= 5 : pval = 8.389774e-71
x= 1  y= 8  S= 6 : pval = 1.311437e-20
x= 1  y= 8  S= 7 : pval = 4.133606e-44
x= 2  y= 1  S= 3 : pval = 7.522838e-59
x= 2  y= 1  S= 5 : pval = 9.259048e-84
x= 2  y= 1  S= 6 : pval = 3.841769e-67
x= 2  y= 1  S= 7 : pval = 2.043591e-82
x= 2  y= 1  S= 8 : pval = 6.958407e-70
x= 2  y= 3  S= 1 : pval = 0
x= 2  y= 3  S= 5 : pval = 0
x= 2  y= 3  S= 6 : pval = 0
x= 2  y= 3  S= 7 : pval = 0
x= 2  y= 3  S= 8 : pval = 0
x= 2  y= 5  S= 1 : pval = 3.078331e-34
x= 2  y= 5  S= 3 : pval = 7.993791e-23
x= 2  y= 5  S= 6 : pval = 7.416698e-29
x= 2  y= 5  S= 7 : pval = 7.34587e-35
x= 2  y= 5  S= 8 : pval = 2.97999e-09
x= 2  y= 6  S= 1 : pval = 0.6795661
x= 2  y= 7  S= 1 : pval = 0.6796416
x= 2  y= 8  S= 1 : pval = 4.389289e-17
x= 2  y= 8  S= 3 : pval = 2.659807e-19
x= 2  y= 8  S= 5 : pval = 8.763232e-06
x= 2  y= 8  S= 6 : pval = 3.939417e-25
x= 2  y= 8  S= 7 : pval = 2.152424e-31
x= 3  y= 2  S= 1 : pval = 0
x= 3  y= 2  S= 5 : pval = 0
x= 3  y= 2  S= 6 : pval = 0
x= 3  y= 2  S= 8 : pval = 0
x= 3  y= 5  S= 1 : pval = 1.182173e-13
x= 3  y= 5  S= 2 : pval = 0.9531188
x= 3  y= 6  S= 1 : pval = 0.3892508
x= 3  y= 8  S= 1 : pval = 8.823512e-09
x= 3  y= 8  S= 2 : pval = 0.6084929
x= 5  y= 2  S= 1 : pval = 3.078331e-34
x= 5  y= 2  S= 3 : pval = 7.993791e-23
x= 5  y= 2  S= 6 : pval = 7.416698e-29
x= 5  y= 2  S= 7 : pval = 7.34587e-35
x= 5  y= 2  S= 8 : pval = 2.97999e-09
x= 5  y= 6  S= 1 : pval = 8.702638e-39
x= 5  y= 6  S= 2 : pval = 4.506636e-31
x= 5  y= 6  S= 3 : pval = 2.80785e-36
x= 5  y= 6  S= 7 : pval = 3.783284e-32
x= 5  y= 6  S= 8 : pval = 3.295542e-05
x= 5  y= 7  S= 1 : pval = 1.06063e-06
x= 5  y= 7  S= 2 : pval = 2.137931e-06
x= 5  y= 7  S= 3 : pval = 2.539606e-07
x= 5  y= 7  S= 6 : pval = 0.726996
x= 5  y= 8  S= 1 : pval = 0
x= 5  y= 8  S= 2 : pval = 0
x= 5  y= 8  S= 3 : pval = 0
x= 5  y= 8  S= 6 : pval = 0
x= 5  y= 8  S= 7 : pval = 0
x= 6  y= 1  S= 2 : pval = 6.12495e-248
x= 6  y= 1  S= 3 : pval = 2.316729e-263
x= 6  y= 1  S= 5 : pval = 6.956318e-268
x= 6  y= 1  S= 7 : pval = 5.511863e-228
x= 6  y= 1  S= 8 : pval = 4.077708e-237
x= 6  y= 5  S= 1 : pval = 8.702638e-39
x= 6  y= 5  S= 2 : pval = 4.506636e-31
x= 6  y= 5  S= 3 : pval = 2.80785e-36
x= 6  y= 5  S= 7 : pval = 3.783284e-32
x= 6  y= 5  S= 8 : pval = 3.295542e-05
x= 6  y= 7  S= 1 : pval = 2.978163e-149
x= 6  y= 7  S= 2 : pval = 1.80437e-184
x= 6  y= 7  S= 3 : pval = 5.341311e-187
x= 6  y= 7  S= 5 : pval = 2.176768e-181
x= 6  y= 7  S= 8 : pval = 6.048826e-180
x= 6  y= 8  S= 1 : pval = 3.679235e-18
x= 6  y= 8  S= 2 : pval = 3.551406e-39
x= 6  y= 8  S= 3 : pval = 1.609748e-44
x= 6  y= 8  S= 5 : pval = 9.294928e-14
x= 6  y= 8  S= 7 : pval = 3.460516e-39
x= 7  y= 6  S= 1 : pval = 2.978163e-149
x= 7  y= 6  S= 2 : pval = 1.80437e-184
x= 7  y= 6  S= 5 : pval = 2.176768e-181
x= 7  y= 6  S= 8 : pval = 6.048826e-180
x= 7  y= 8  S= 1 : pval = 0.0007560835
x= 7  y= 8  S= 2 : pval = 9.382642e-08
x= 7  y= 8  S= 5 : pval = 0.002380491
x= 7  y= 8  S= 6 : pval = 0.7045185
x= 8  y= 1  S= 2 : pval = 1.408376e-33
x= 8  y= 1  S= 3 : pval = 4.916297e-43
x= 8  y= 1  S= 5 : pval = 8.389774e-71
x= 8  y= 1  S= 6 : pval = 1.311437e-20
x= 8  y= 1  S= 7 : pval = 4.133606e-44
x= 8  y= 2  S= 1 : pval = 4.389289e-17
x= 8  y= 2  S= 3 : pval = 2.659807e-19
x= 8  y= 2  S= 5 : pval = 8.763232e-06
x= 8  y= 2  S= 6 : pval = 3.939417e-25
x= 8  y= 2  S= 7 : pval = 2.152424e-31
x= 8  y= 5  S= 1 : pval = 0
x= 8  y= 5  S= 2 : pval = 0
x= 8  y= 5  S= 3 : pval = 0
x= 8  y= 5  S= 6 : pval = 0
x= 8  y= 5  S= 7 : pval = 0
x= 8  y= 6  S= 1 : pval = 3.679235e-18
x= 8  y= 6  S= 2 : pval = 3.551406e-39
x= 8  y= 6  S= 3 : pval = 1.609748e-44
x= 8  y= 6  S= 5 : pval = 9.294928e-14
x= 8  y= 6  S= 7 : pval = 3.460516e-39
Order=2; remaining edges:20
x= 1  y= 2  S= 6 8 : pval = 4.330701e-59
x= 1  y= 6  S= 2 8 : pval = 8.746101e-226
x= 1  y= 8  S= 2 6 : pval = 1.367637e-12
x= 2  y= 1  S= 3 5 : pval = 3.985688e-58
x= 2  y= 1  S= 3 8 : pval = 2.015432e-49
x= 2  y= 1  S= 5 8 : pval = 2.367033e-79
x= 2  y= 3  S= 1 5 : pval = 0
x= 2  y= 3  S= 1 8 : pval = 0
x= 2  y= 3  S= 5 8 : pval = 0
x= 2  y= 5  S= 1 3 : pval = 4.136107e-22
x= 2  y= 5  S= 1 8 : pval = 1.061362e-18
x= 2  y= 5  S= 3 8 : pval = 5.719906e-07
x= 2  y= 8  S= 1 3 : pval = 7.132684e-10
x= 2  y= 8  S= 1 5 : pval = 0.8105926
x= 5  y= 2  S= 6 8 : pval = 2.747452e-08
x= 5  y= 6  S= 2 8 : pval = 0.0003234808
x= 5  y= 8  S= 2 6 : pval = 0
x= 6  y= 1  S= 5 7 : pval = 1.994606e-229
x= 6  y= 1  S= 5 8 : pval = 6.035798e-255
x= 6  y= 1  S= 7 8 : pval = 2.636081e-203
x= 6  y= 5  S= 1 7 : pval = 1.483179e-33
x= 6  y= 5  S= 1 8 : pval = 2.968796e-22
x= 6  y= 5  S= 7 8 : pval = 0.0001524055
x= 6  y= 7  S= 1 5 : pval = 7.497209e-144
x= 6  y= 7  S= 1 8 : pval = 1.127022e-146
x= 6  y= 7  S= 5 8 : pval = 3.017061e-179
x= 6  y= 8  S= 1 5 : pval = 0.5185239
x= 8  y= 1  S= 2 5 : pval = 2.061742e-66
x= 8  y= 1  S= 2 6 : pval = 1.367637e-12
x= 8  y= 1  S= 5 6 : pval = 1.403791e-58
x= 8  y= 5  S= 1 2 : pval = 0
x= 8  y= 5  S= 1 6 : pval = 0
x= 8  y= 5  S= 2 6 : pval = 0
Order=3; remaining edges:16

Attaching package: 'BiocGenerics'

The following objects are masked from 'package:parallel':

clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
clusterExport, clusterMap, parApply, parCapply, parLapply,
parLapplyLB, parRapply, parSapply, parSapplyLB

The following objects are masked from 'package:stats':

The following objects are masked from 'package:base':

Filter, Find, Map, Position, Reduce, anyDuplicated, append,
as.data.frame, cbind, colnames, do.call, duplicated, eval, evalq,
get, grep, grepl, intersect, is.unsorted, lapply, lengths, mapply,
match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank,
rbind, rownames, sapply, setdiff, sort, table, tapply, union,
unique, unsplit, which, which.max, which.min

Warning messages:
1: In bfs(object, node, TRUE) :
graph is not connected; returning bfs applied to each connected component
2: In bfs(object, node, TRUE) :
graph is not connected; returning bfs applied to each connected component
3: In bfs(object, node, TRUE) :
graph is not connected; returning bfs applied to each connected component
4: In bfs(object, node, TRUE) :
graph is not connected; returning bfs applied to each connected component
5: In bfs(object, node, TRUE) :
graph is not connected; returning bfs applied to each connected component
6: In bfs(object, node, TRUE) :
graph is not connected; returning bfs applied to each connected component
Order=0; remaining edges:20
x= 1  y= 2  S=  : pval = 0.3551245
x= 1  y= 3  S=  : pval = 0
x= 1  y= 4  S=  : pval = 0.2132192
x= 1  y= 5  S=  : pval = 0.5073849
x= 2  y= 3  S=  : pval = 7.690449e-49
x= 2  y= 4  S=  : pval = 2.855907e-79
x= 2  y= 5  S=  : pval = 0.565885
x= 3  y= 1  S=  : pval = 0
x= 3  y= 2  S=  : pval = 7.690449e-49
x= 3  y= 4  S=  : pval = 0.09429652
x= 3  y= 5  S=  : pval = 0.1341955
x= 4  y= 2  S=  : pval = 2.855907e-79
x= 4  y= 5  S=  : pval = 6.976787e-232
x= 5  y= 4  S=  : pval = 6.976787e-232
Order=1; remaining edges:8
x= 2  y= 3  S= 4 : pval = 1.250955e-42
x= 2  y= 4  S= 3 : pval = 9.714191e-73
x= 3  y= 1  S= 2 : pval = 0
x= 3  y= 2  S= 1 : pval = 1.442632e-51
x= 4  y= 2  S= 5 : pval = 5.618453e-124
x= 4  y= 5  S= 2 : pval = 3.864918e-276
Order=0; remaining edges:20
x= 1  y= 2  S=  : pval = 9.953947e-256
x= 1  y= 3  S=  : pval = 9.082948e-06
x= 1  y= 4  S=  : pval = 0.03933131
x= 1  y= 5  S=  : pval = 1.414214e-95
x= 2  y= 1  S=  : pval = 9.953947e-256
x= 2  y= 3  S=  : pval = 2.783621e-17
x= 2  y= 4  S=  : pval = 6.584309e-09
x= 2  y= 5  S=  : pval = 0
x= 3  y= 1  S=  : pval = 9.082948e-06
x= 3  y= 2  S=  : pval = 2.783621e-17
x= 3  y= 4  S=  : pval = 2.445323e-41
x= 3  y= 5  S=  : pval = 6.410634e-65
x= 4  y= 2  S=  : pval = 6.584309e-09
x= 4  y= 3  S=  : pval = 2.445323e-41
x= 4  y= 5  S=  : pval = 0.003960591
x= 5  y= 1  S=  : pval = 1.414214e-95
x= 5  y= 2  S=  : pval = 0
x= 5  y= 3  S=  : pval = 6.410634e-65
x= 5  y= 4  S=  : pval = 0.003960591
Order=1; remaining edges:18
x= 1  y= 2  S= 3 : pval = 6.9655e-250
x= 1  y= 2  S= 5 : pval = 8.253147e-161
x= 1  y= 3  S= 2 : pval = 0.8635111
x= 1  y= 5  S= 2 : pval = 0.7130915
x= 2  y= 1  S= 3 : pval = 6.9655e-250
x= 2  y= 1  S= 4 : pval = 2.396259e-253
x= 2  y= 1  S= 5 : pval = 8.253147e-161
x= 2  y= 3  S= 1 : pval = 4.883148e-12
x= 2  y= 3  S= 4 : pval = 2.580833e-26
x= 2  y= 3  S= 5 : pval = 9.47727e-10
x= 2  y= 4  S= 1 : pval = 2.765395e-07
x= 2  y= 4  S= 3 : pval = 4.248502e-18
x= 2  y= 4  S= 5 : pval = 3.935485e-126
x= 2  y= 5  S= 1 : pval = 4.940656e-324
x= 2  y= 5  S= 3 : pval = 0
x= 2  y= 5  S= 4 : pval = 0
x= 3  y= 2  S= 1 : pval = 4.883148e-12
x= 3  y= 2  S= 4 : pval = 2.580833e-26
x= 3  y= 2  S= 5 : pval = 9.47727e-10
x= 3  y= 4  S= 1 : pval = 2.559598e-42
x= 3  y= 4  S= 2 : pval = 3.581916e-50
x= 3  y= 4  S= 5 : pval = 1.883917e-38
x= 3  y= 5  S= 1 : pval = 2.791544e-62
x= 3  y= 5  S= 2 : pval = 4.347867e-57
x= 3  y= 5  S= 4 : pval = 6.227292e-62
x= 4  y= 2  S= 3 : pval = 4.248502e-18
x= 4  y= 2  S= 5 : pval = 3.935485e-126
x= 4  y= 3  S= 2 : pval = 3.581916e-50
x= 4  y= 3  S= 5 : pval = 1.883917e-38
x= 4  y= 5  S= 2 : pval = 1.259319e-120
x= 4  y= 5  S= 3 : pval = 0.7150221
x= 5  y= 2  S= 1 : pval = 4.940656e-324
x= 5  y= 2  S= 3 : pval = 0
x= 5  y= 2  S= 4 : pval = 0
x= 5  y= 3  S= 1 : pval = 2.791544e-62
x= 5  y= 3  S= 2 : pval = 4.347867e-57
x= 5  y= 3  S= 4 : pval = 6.227292e-62
Order=2; remaining edges:12
x= 2  y= 1  S= 3 4 : pval = 2.709864e-244
x= 2  y= 1  S= 3 5 : pval = 7.101437e-156
x= 2  y= 1  S= 4 5 : pval = 1.660283e-137
x= 2  y= 3  S= 1 4 : pval = 2.332881e-18
x= 2  y= 3  S= 1 5 : pval = 3.652957e-06
x= 2  y= 3  S= 4 5 : pval = 0.3391282
x= 2  y= 4  S= 1 3 : pval = 1.00277e-13
x= 2  y= 4  S= 1 5 : pval = 5.952032e-103
x= 2  y= 4  S= 3 5 : pval = 1.170103e-115
x= 2  y= 5  S= 1 3 : pval = 1.281738e-316
x= 2  y= 5  S= 1 4 : pval = 0
x= 2  y= 5  S= 3 4 : pval = 0
x= 3  y= 4  S= 2 5 : pval = 1.432156e-28
x= 3  y= 5  S= 2 4 : pval = 2.137569e-35
Order=3; remaining edges:10
```

pcalg documentation built on June 5, 2018, 1:05 a.m.