| pc | R Documentation |
Run the Peter-Clark algorithm for causal discovery using one of several engines.
pc(engine = c("tetrad", "pcalg", "bnlearn"), test, alpha = 0.05, ...)
engine |
Character; which engine to use. Must be one of:
|
test |
Character; name of the conditionalâindependence test. |
alpha |
Numeric; significance level for the CI tests. |
... |
Additional arguments passed to the chosen engine (e.g. test or algorithm parameters). |
For specific details on the supported tests and parameters for each engine, see:
TetradSearch for Tetrad,
PcalgSearch for pcalg,
BnlearnSearch for bnlearn.
While it is possible to call the function returned directly with a data frame,
we recommend using disco(). This provides a consistent interface and handles knowledge
integration.
A function that takes a single argument data (a data frame). When called,
this function returns a list containing:
knowledge A Knowledge object with the background knowledge
used in the causal discovery algorithm. See knowledge() for how to construct it.
caugi A caugi::caugi object (of class PDAG) representing the learned causal graph
from the causal discovery algorithm.
Spirtes P, Glymour C, and Scheines R. Causation, Prediction, and Search. MIT Press, 2000.
Other causal discovery algorithms:
boss(),
boss_fci(),
fci(),
ges(),
gfci(),
grasp(),
grasp_fci(),
gs(),
iamb-family,
sp_fci(),
tfci(),
tges(),
tpc()
data(tpc_example)
#### Using pcalg engine ####
# Recommended path using disco()
pc_pcalg <- pc(engine = "pcalg", test = "fisher_z", alpha = 0.05)
disco(tpc_example, pc_pcalg)
# or using pc_pcalg directly
pc_pcalg(tpc_example)
# With all algorithm arguments specified
pc_pcalg <- pc(
engine = "pcalg",
test = "fisher_z",
alpha = 0.05,
fixedGaps = NULL,
fixedEdges = NULL,
NAdelete = FALSE,
m.max = 10,
u2pd = "relaxed",
skel.method = "original",
conservative = TRUE,
maj.rule = FALSE,
solve.confl = TRUE,
numCores = 1,
verbose = FALSE
)
#### Using bnlearn engine with required knowledge ####
kn <- knowledge(
tpc_example,
starts_with("child") %-->% starts_with("youth")
)
# Recommended path using disco()
pc_bnlearn <- pc(engine = "bnlearn", test = "fisher_z", alpha = 0.05)
disco(tpc_example, pc_bnlearn, knowledge = kn)
# or using pc_bnlearn directly
pc_bnlearn <- pc_bnlearn |> set_knowledge(kn)
pc_bnlearn(tpc_example)
# With all algorithm arguments specified
pc_bnlearn <- pc(
engine = "bnlearn",
test = "fisher_z",
alpha = 0.05,
max.sx = 2,
debug = FALSE,
undirected = TRUE
)
disco(tpc_example, pc_bnlearn)
#### Using tetrad engine with tier knowledge ####
# Requires Tetrad to be installed
if (verify_tetrad()$installed && verify_tetrad()$java_ok) {
kn <- knowledge(
tpc_example,
tier(
child ~ tidyselect::starts_with("child"),
youth ~ tidyselect::starts_with("youth"),
oldage ~ tidyselect::starts_with("oldage")
)
)
# Recommended path using disco()
pc_tetrad <- pc(engine = "tetrad", test = "fisher_z", alpha = 0.05)
disco(tpc_example, pc_tetrad, knowledge = kn)
# or using pc_tetrad directly
pc_tetrad <- pc_tetrad |> set_knowledge(kn)
pc_tetrad(tpc_example)
}
# With all algorithm arguments specified
if (verify_tetrad()$installed && verify_tetrad()$java_ok) {
pc_tetrad <- pc(
engine = "tetrad",
test = "fisher_z",
alpha = 0.05,
conflict_rule = 2,
depth = 10,
stable_fas = FALSE,
guarantee_cpdag = TRUE
)
disco(tpc_example, pc_tetrad)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.