## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(PCBN) ## ----------------------------------------------------------------------------- DAG = create_empty_DAG(7) DAG = bnlearn::set.arc(DAG, 'U1', 'U2') DAG = bnlearn::set.arc(DAG, 'U1', 'U3') DAG = bnlearn::set.arc(DAG, 'U1', 'U4') DAG = bnlearn::set.arc(DAG, 'U2', 'U4') DAG = bnlearn::set.arc(DAG, 'U3', 'U4') DAG = bnlearn::set.arc(DAG, 'U4', 'U6') DAG = bnlearn::set.arc(DAG, 'U5', 'U6') DAG = bnlearn::set.arc(DAG, 'U4', 'U7') DAG = bnlearn::set.arc(DAG, 'U6', 'U7') ## ----fig.height=8, fig.width=8------------------------------------------------ DAG |> bnlearn::as.igraph() |> igraph::plot.igraph(size = 20, label.cex = 2 # , layout = igraph::layout_as_tree ) ## ----------------------------------------------------------------------------- order_hash = r2r::hashmap() order_hash[['U4']] = c("U2", "U1", "U3") order_hash[['U6']] = c("U4", "U5") order_hash[['U7']] = c("U4", "U6") complete_and_check_orders(DAG, order_hash) fam = matrix(c(0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0), byrow = TRUE, ncol = 7) tau = 0.2 * fam my_PCBN = new_PCBN( DAG, order_hash, copula_mat = list(tau = tau, fam = fam)) N = 100 mydata = PCBN_sim(my_PCBN, N = N) ## ----------------------------------------------------------------------------- e = default_envir() ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U1", w = "U2", cond_set = c(), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- copula_key = e$keychain[[list(margins = c("U1", "U2"), cond = character(0))]] e$copula_hash[[copula_key]] ## ----------------------------------------------------------------------------- print(data.tree::FromListSimple(copula_key)) ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U1", w = "U3", cond_set = c(), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U2", w = "U4", cond_set = c(), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U1", w = "U4", cond_set = c("U2"), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U3", w = "U4", cond_set = c("U1", "U2"), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- e$keychain[[list(margins = c("U2", "U4"), cond = character(0))]] |> data.tree::FromListSimple() |> print() ## ----------------------------------------------------------------------------- e$keychain[[list(margins = c("U1", "U4"), cond = c("U2"))]] |> data.tree::FromListSimple() |> print() ## ----------------------------------------------------------------------------- e$keychain[[list(margins = c("U3", "U4"), cond = c("U1", "U2"))]] |> data.tree::FromListSimple() |> print() ## ----------------------------------------------------------------------------- e$keychain[[list(margin = c("U4"), cond = c("U1", "U2"))]] |> data.tree::FromListSimple() |> print() ## ----------------------------------------------------------------------------- e$keychain[[list(margin = c("U3"), cond = c("U1", "U2"))]] ## ----------------------------------------------------------------------------- remove_CondInd(DAG = DAG, node = "U3", cond_set = c("U1", "U2")) ## ----------------------------------------------------------------------------- e$margin_hash[[ e$keychain[[list(margin = c("U3"), cond = c("U1"))]] ]] |> head() ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U4", w = "U6", cond_set = c(), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U5", w = "U6", cond_set = c("U4"), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U4", w = "U7", cond_set = c(), familyset = 1, order_hash = order_hash, e = e, method = "mle") ## ----------------------------------------------------------------------------- BiCopCondFit(data = mydata, DAG = DAG, v = "U6", w = "U7", cond_set = c("U4"), familyset = 1, order_hash = order_hash, e = e, method = "mle")