Description Usage Arguments References Examples
This is an adapted version of SCCI for which the output can be interpreted as a p-value. For this, we adapted SCCI such that if SCCI = 0 (X is independent of Y given Z) it gives a p-value greater than 0.01 and for SCCI > 0 (X is not independent of Y given Z) gives a p-value smaller or equal to 0.01. Note that we just transformed the output of SCCI and do not obtain a real p-value. In essence, we define the artificial p-value as follows. Let v the output of SCCI divided by the number of samples n. p = 2^{-(6.643855 - v)}, which is equal to 0.01000001 if v = 0. Further, p ≤ 0.01 for SCCI ≥ 0.000001. We restrict the p-values to be between 0 and 1.
Unlike SCCI, pSCCI is currently only instantiated with fNML.
pSCCI can be used directly in the PC algorithm developed by Spirtes et al. (2000), which was implemented in the 'pcalg' R-package by Kalisch et al. (2012), as shown in the example.
1 | pSCCI(x, y, S, suffStat)
|
x |
Position of x variabe (integer). |
y |
Position of y variabe (integer). |
S |
Vector of the position of zero or more conditioning variables (integer). |
suffStat |
This format was adapted such that it can be used in the PC algorithm and other algorithms from the 'pcalg' package. SCCI only need the filed "dm" that contains the data matrix. |
Markus Kalisch, Martin Mächler, Diego Colombo, Marloes H. Maathuis, Peter Bühlmann; Causal inference using graphical models with the R package pcalg, Journal of Statistical Software, 2012
Alexander Marx and Jilles Vreeken; Testing Conditional Independence on Discrete Data using Stochastic Complexity, Proceedings of the 22nd International Conference on Artificial Intelligence and Statistics (AISTATS), PMLR, 2019
Peter Spirtes, Clark N. Glymour, Richard Scheines, David Heckerman, Christopher Meek, Gregory Cooper and Thomas Richardson; Causation, Prediction, and Search, MIT press, 2000
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 | set.seed(1)
x = round((runif(1000, min=0, max=5)))
y = round((runif(1000, min=0, max=5)))
Z = data.frame(round((runif(1000, min=0, max=5))), round((runif(1000, min=0, max=5))))
## create data matrix
data_matrix = as.matrix(data.frame(x,y,S1=Z[,1], S2=Z[,2]))
suffStat = list(dm=data_matrix)
pSCCI(x=1,y=2,S=c(3,4),suffStat=suffStat) ## 0.01000001
### Using SCI within the PC algorithm
if(require(pcalg)){
## Load data
data(gmD)
V <- colnames(gmD$x)
## define sufficient statistics
suffStat <- list(dm = gmD$x, nlev = c(3,2,3,4,2), adaptDF = FALSE)
## estimate CPDAG
pc.D <- pc(suffStat,
## independence test: SCCI using fNML
indepTest = pSCCI, alpha = 0.01, labels = V, verbose = TRUE)
}
if (require(pcalg) & require(Rgraphviz)) {
## show estimated CPDAG
par(mfrow = c(1,2))
plot(pc.D, main = "Estimated CPDAG")
plot(gmD$g, main = "True DAG")
}
|
[1] 0.01000001
Loading required package: pcalg
Order=0; remaining edges:20
x= 1 y= 2 S= : pval = 0.01000001
x= 1 y= 3 S= : pval = 0.009214604
x= 1 y= 4 S= : pval = 0.01000001
x= 1 y= 5 S= : pval = 0.01000001
x= 2 y= 3 S= : pval = 0.009897158
x= 2 y= 4 S= : pval = 0.009828555
x= 2 y= 5 S= : pval = 0.01000001
x= 3 y= 1 S= : pval = 0.009214604
x= 3 y= 2 S= : pval = 0.009897158
x= 3 y= 4 S= : pval = 0.01000001
x= 3 y= 5 S= : pval = 0.01000001
x= 4 y= 2 S= : pval = 0.009828555
x= 4 y= 5 S= : pval = 0.009488683
x= 5 y= 4 S= : pval = 0.009488683
Order=1; remaining edges:8
x= 2 y= 3 S= 4 : pval = 0.009914776
x= 2 y= 4 S= 3 : pval = 0.009846043
x= 3 y= 1 S= 2 : pval = 0.009210859
x= 3 y= 2 S= 1 : pval = 0.009893267
x= 4 y= 2 S= 5 : pval = 0.0097279
x= 4 y= 5 S= 2 : pval = 0.009391509
Loading required package: Rgraphviz
Loading required package: graph
Loading required package: BiocGenerics
Loading required package: parallel
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’:
IQR, mad, sd, var, xtabs
The following objects are masked from ‘package:base’:
anyDuplicated, append, as.data.frame, basename, cbind, colnames,
dirname, do.call, duplicated, eval, evalq, Filter, Find, get, grep,
grepl, intersect, is.unsorted, lapply, Map, mapply, match, mget,
order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank,
rbind, Reduce, rownames, sapply, setdiff, sort, table, tapply,
union, unique, unsplit, which.max, which.min
Loading required package: grid
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.