Learn R Programming

mcmodule

Framework for building modular Monte Carlo risk analysis models. It extends the capabilities of mc2d to facilitate working with multiple risk pathways, variates and scenarios. It provides tools to organize risk analysis in independent flexible modules, perform multivariate mcnode operations, automate the creation of mcnodes and visualize risk analysis models.

Installation

Install from CRAN:

install.packages("mcmodule")
library("mcmodule")

Install latest development version from GitHub (requires devtool package)

# install.packages("devtools")
devtools::install_github("NataliaCiria/mcmodule")

Set up an mcmodel

  1. Create a data frame with input parameter
example_data  <- data.frame(
  category_1 = c("a", "b", "a", "b"),      # Category 1 (e.g., type)
  category_2 = c("blue", "blue", "red", "red"), # Category 2 (e.g., group)
  x_min = c(0.07, 0.3, 0.2, 0.5),          # Minimum value for parameter x
    x_max = c(0.08, 0.4, 0.3, 0.6),          # Maximum value for parameter x
    y = c(0.01, 0.02, 0.03, 0.04)            # Value for parameter y
)
  1. Define the keys that uniquely identify each row in your data
example_data_keys <- list(
  example_data = list(
    cols = names(example_data),             # All columns in the data
    keys = c("category_1", "category_2")   # Unique identifiers for each row
  )
)
  1. Define Monte Carlo node table (mctable) indicating how to build the stochastic nodes (you can use this csv template)
example_mctable <- data.frame(
  mcnode = c("x", "y"),                    # Names of the nodes
  description = c("Probability x", "Probability y"), # Descriptions
  mc_func = c("runif", NA),                # Distribution function for x, none for y
  from_variable = c(NA, NA),               # Source variable (not used here)
  transformation = c(NA, NA),              # Transformation (not used here)
  sensi_analysis = c(FALSE, FALSE)         # Include in sensitivity analysis
)
  1. Write model expression indicating how to combine the parameters
example_exp <- quote({
  result <- x * y                     # Calculate result as product of x and y
})
  1. Build the mcmodule with eval_module(), creating the stochastic nodes and evaluating the expression
example_mcmodule <- eval_module(
  exp = c(example = example_exp),          # Model expression(s)
  data = example_data,                     # Input data
  mctable = example_mctable,               # Node definitions
  data_keys = example_data_keys            # Data keys for matching
)
  1. Once you have created a mcmodule object, you can use other package functions to summarize and visualize mcnodes, calculate totals, and combine them with other mcmodules
# Summarize the 'result' node
mc_summary(example_mcmodule, "result")

# Get 'result' aggregated by category 1
example_mcmodule<-example_mcmodule%>%
  agg_totals(
    mc_name = "result",
    agg_keys = c("category_1")
  )

# Print aggregated 'result'
example_mcmodule$node_list$result_agg$summary

# Visualize the mcmodule
mc_network(example_mcmodule, legend = TRUE)

Further documentation and examples can be found in the vignette and in the introduction article.

Citations

If you use mcmodule in your research, please cite:

Ciria, N. (2025). mcmodule: Modular Monte Carlo Risk Analysis. R package version 1.1.0. https://nataliaciria.github.io/mcmodule/

Acknowledgements

mcmodule was developed with support from:

Copy Link

Version

Install

install.packages('mcmodule')

Monthly Downloads

139

Version

1.1.1

License

GPL (>= 3)

Issues

Pull Requests

Stars

Forks

Maintainer

Natalia Ciria

Last Published

November 25th, 2025

Functions in mcmodule (1.1.1)

keys_match

Match and align keys between two datasets
visNetwork_nodes

Generate Network Node Table for Visualization
visNetwork_edges

Generate visNetwork Edge Table
mc_summary_keys

Get mcnode summary keys
mcnode_na_rm

Replace NA and Infinite Values in mcnode Objects
mc_keys

Get Monte Carlo Node Keys
get_node_table

Generate Node Table for Network Construction
mc_match_data

Match Monte Carlo Node with other data frame
imports_data

Merged Import Data for Risk Assessment
wif_match

Match Datasets With Differing Scenarios
mc_match

Match Monte Carlo Nodes
set_mctable

Set or Get Monte Carlo Inputs Table
set_data_keys

Set or Get Global Data Keys
mc_summary

Compute summary statistics for an mcnode object
mc_network

Create Interactive Network Visualization
reset_mctable

Resets the Monte Carlo inputs table
test_sensitivity

Test Sensitivity Data
trial_totals

Trial Probability and Expected Counts
add_group_id

Add Group IDs to Data Frames
agg_totals

Aggregate Across Groups
animal_imports

Example Animal Import Data
get_node_list

Create Node List from Model Expression
get_mcmodule_nodes

Get Nodes from Monte Carlo Module
combine_modules

Combine Two Modules
create_mcnodes

Create Monte Carlo Nodes from Data and Configuration Table
check_mctable

Checks mctable data
at_least_one

Combined Probability of Events (At least one)
add_prefix

Add Prefix to Node Names
imports_mcmodule

Example mcmodule object containing Monte Carlo simulation results Animal Imports Risk Assessment
node_list_summary

Include summary and keys in node_list
imports_mctable

Example Monte Carlo Input Table for Import Risk Assessment
prevalence_region

Regional Prevalence Data
get_edge_table

Generate Edge Table for Network Construction
eval_module

Evaluate a Monte Carlo Model Expression and create an mcmodule
imports_data_keys

Example Data Keys for Animal Imports Risk Assessment
reset_data_keys

Reset Data Keys
imports_exp

Expression for calculating import infection probability