Description Usage Arguments Details Value Author(s) References Examples
Estimates the weakly additive noise partially directed acyclic graph (WAN-PDAG) from observational data, using the kPC algorithm. This is a version of pc
from pcalg package, that uses HSIC (hsic.gamma, hsic.perm or hsic.clust) or distance covariance (dcov.test
or dcov.gamma) independence tests and udag2wanpdag instead of udag2pdag
in the last step.
1 2 3 4 5 |
suffStat |
a list of sufficient statistics, containing all necessary elements for the conditional independence decisions in the function indepTest |
indepTest |
A function for testing conditional independence. It 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, see the argument above. The return value of indepTest is the p-value of the test for conditional independence. Default is kernelCItest. |
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. |
fixedGaps |
A logical matrix of dimension p*p. If entry [i,j] or [j,i] (or both) are 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 matrix of dimension p*p. If entry [i,j] or [j,i] (or both) are TRUE, the edge i-j is never considered for removal. Therefore, this edge is guaranteed to be present in the resulting graph. |
NAdelete |
If indepTest returns NA and this option is TRUE, the corresponding edge is deleted. If this option is FALSE, the edge is not deleted. |
m.max |
Maximal size of the conditioning sets that are considered in the conditional independence tests. |
u2pd |
String specifying the method for dealing with conflicting information when trying to orient edges (see details below). |
skel.method |
Character string specifying method; the default, "stable" provides an order-independent skeleton, see skeleton. |
conservative |
Logical indicating if the conservative PC is used. In this case, only option u2pd = "relaxed" is supported. Note that therefore the resulting object might not be extendable to a DAG. See details for more information. |
maj.rule |
Logical indicating that the triples shall be checked for ambiguity using a majority rule idea, which is less strict than the conservative PC algorithm. For more information, see details. |
solve.confl |
If TRUE, the orientation of the v-structures and the orientation rules work with lists for candidate sets and allow bi-directed edges to resolve conflicting edge orientations. In this case, only option u2pd = relaxed is supported. Note, that therefore the resulting object might not be a CPDAG because bi-directed edges might be present. See details for more information. |
verbose |
If TRUE, detailed output is provided. |
For more information: pc
.
An object of class "pcAlgo" (see pcAlgo
) containing an estimate of the equivalence class of the underlying DAG.
Petras Verbyla (petras.verbyla@mrc-bsu.cam.ac.uk)
Tillman, R. E., Gretton, A. and Spirtes, P. (2009). Nonlinear directed acyclic structure learning with weakly additive noise model. NIPS 22, Vancouver.
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 | ## Not run:
library(pcalg)
set.seed(4)
n <- 300
data <- NULL
x1 <- 2*(runif(n)-0.5)
x2 <- x1 + runif(n)-0.5
x3 <- x1^2 + 0.6*runif(n)
x4 <- rnorm(n)
x5 <- x3 + x4^2 + 2*runif(n)
x6 <- 10*(runif(n)-0.5)
x7 <- x6^2 + 5*runif(n)
x8 <- 2*x7^2 + 1.5*rnorm(n)
x9 <- x7 + 4*runif(n)
data <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9)
true <- matrix(0,9,9)
true[c(1),c(2,3)]<-true[c(3,4),5]<-true[c(6),c(7)]<-true[c(7),c(8)]<-true[7,9]<-1
pc <- pc(suffStat = list(C = cor(data), n = 9),
indepTest = gaussCItest,
alpha = 0.9,
labels = colnames(data),
u2pd = "relaxed",
skel.method = "stable",
verbose = TRUE)
kpc1 <- kpc(suffStat = list(data=data, ic.method="dcc.perm"),
indepTest = kernelCItest,
alpha = 0.1,
labels = colnames(data),
u2pd = "relaxed",
skel.method = "stable",
verbose = TRUE)
kpc2 <- kpc(suffStat = list(data=data, ic.method="hsic.gamma"),
indepTest = kernelCItest,
alpha = 0.1,
labels = colnames(data),
u2pd = "relaxed",
skel.method = "stable",
verbose = TRUE)
kpc3 <- kpc(suffStat = list(data=data, ic.method="hsic.perm"),
indepTest = kernelCItest,
alpha = 0.1,
labels = colnames(data),
u2pd = "relaxed",
skel.method = "stable",
verbose = TRUE)
kpc4 <- kpc(suffStat = list(data=data, ic.method="hsic.clust"),
indepTest = kernelCItest,
alpha = 0.1,
labels = colnames(data),
u2pd = "relaxed",
skel.method = "stable",
verbose = TRUE)
if (require(Rgraphviz)) {
par(mfrow=c(2,3))
plot(pc,main="pc")
plot(kpc1,main="dpc.perm")
plot(kpc2,main="kpc.gamma")
plot(kpc3,main="kpc.perm")
plot(kpc4,main="kpc.clust")
plot(as(true,"graphNEL"),main="True DAG")
}
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.