CCDr Algorithm for Learning Sparse Gaussian Bayesian Networks

Implementation of the CCDr (Concave penalized Coordinate Descent with reparametrization) structure learning algorithm as described in Aragam and Zhou (2015) <>. This is a fast, score-based method for learning Bayesian networks that uses sparse regularization and block-cyclic coordinate descent.

ccdrAlgorithm implements the CCDr structure learning algorithm described in [1]. Based on observational data, this algorithm estimates the structure of a Bayesian network (aka edges in a DAG) using penalized maximum likelihood based on L1 or concave (MCP) regularization.

Presently, this package consists of a single method that implements the main algorithm; more functionality will be provided in the future. To generate data from a given Bayesian network and/or simulate random networks, the following R packages are recommended:

The main method is, which runs the CCDr structure learning algorithm as described in [1].

You can install:

  • the latest CRAN version with

  • the latest development version from GitHub with

    devtools::install_github(c("itsrainingdata/sparsebnUtils/dev", "itsrainingdata/ccdrAlgorithm/dev"))

[1] Aragam, B. and Zhou, Q. (2015). Concave penalized estimation of sparse Gaussian Bayesian networks. The Journal of Machine Learning Research. 16(Nov):2273−2328.

[2] Fu, F. and Zhou, Q. (2013). Learning sparse causal Gaussian networks with experimental intervention: Regularization and coordinate descent. Journal of the American Statistical Association, 108: 288-300.


ccdrAlgorithm 0.0.2

  • is now compatible with interventional data

ccdrAlgorithm 0.0.1

  • Initial stable release

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.0.4 by Bryon Aragam, 9 days ago

Report a bug at

Browse source code at

Authors: Bryon Aragam [aut, cre], Dacheng Zhang [aut]

Documentation:   PDF Manual  

GPL (>= 2) license

Imports sparsebnUtils, Rcpp, stats, utils

Suggests testthat, graph, igraph

Linking to Rcpp

Depended on by sparsebn.

See at CRAN