pbox Package Vignette

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

Introduction

The pbox package is designed for probabilistic modeling and scenario analysis using Probability Boxes (p-boxes). This vignette demonstrates the main functions of the pbox package, from loading and visualizing data to creating and querying a pbox object.

Load and Prepare Data

First, we load the SEAex dataset included in the pbox package. We add a Year column and then reshape the data for plotting.

library(pbox)
library(data.table)
library(ggplot2)

data("SEAex", package = "pbox")
SEAex$Year <- 1901:2022
SEAex_long <- melt(SEAex, id.vars = "Year", variable.name = "Country")

Visualize Data

We use ggplot2 to create a time series plot of the temperature data for each country.

ggplot(SEAex_long, aes(x = Year, y = value, color = Country)) +
  geom_line(color = "black") +  # Set all lines to black
  labs(x = "Year", y = "Temperature °C") +
  ggtitle("") +
  facet_grid(Country ~ ., scales = "free_y") +
  theme(legend.position = "none", panel.spacing.y = unit(10, "pt")) +
  theme_bw()

Create PBOX Object

We create a pbox object from the SEAex dataset using the set_pbox function.

# Set pbox
pbx <- set_pbox(SEAex)
print(pbx)

Explore Probability Space

We can query the probabilistic space of the pbox object using the qpbox function. Below are examples of different types of queries.

# Marginal Distribution

qpbox(pbx, mj = "Malaysia:33")

# Joint Distribution

qpbox(pbx, mj = "Malaysia:33 & Vietnam:34")

# Conditional Distribution

qpbox(pbx, mj = "Vietnam:31", co = "avgRegion:26")

#Conditional Distribution with Fixed Conditions

qpbox(pbx, mj = "Malaysia:33 & Vietnam:31", co = "avgRegion:26", fixed = TRUE)

#Joint Distribution with Mean Values

qpbox(pbx, mj = "mean:c(Vietnam, Thailand)", lower.tail = TRUE)

# Joint Distribution with Median Values

qpbox(pbx, mj = "median:c(Vietnam, Thailand)", lower.tail = TRUE)

# Joint Distribution with Specific Values

qpbox(pbx, mj = "Malaysia:33 & mean:c(Vietnam, Thailand)", lower.tail = TRUE)

# Conditional Distribution with Mean Conditions

qpbox(pbx, mj = "Malaysia:33 & median:c(Vietnam,Thailand)", co = "mean:c(avgRegion)")

Confidence Intervals

qpbox(pbx, mj = "Malaysia:33 & median:c(Vietnam,Thailand)", co = "mean:c(avgRegion)", CI = TRUE, fixed = TRUE)

Grid Search

We can perform a grid search to explore the probabilistic space over a grid of values.

grid_results <- grid_pbox(pbx, mj = c("Vietnam", "Malaysia"))
print(grid_results)
print(grid_results[which.max(grid_results$probs),])
print(grid_results[which.min(grid_results$probs),])

Scenario Analysis

We perform scenario analysis by modifying underlying parameters of the pbox object.

scenario_results <- scenario_pbox(pbx, mj = "Vietnam:31 & avgRegion:26", param_list = list(Vietnam = "mu"))
print(scenario_results)

This vignette demonstrates the main functionalities of the pbox package, including data preparation, visualization, probabilistic querying, and scenario analysis. The pbox package provides powerful tools for probabilistic modeling and analysis, making it a valuable asset for risk assessment and decision-making applications.



Try the pbox package in your browser

Any scripts or data that you put into this service are public.

pbox documentation built on May 29, 2024, 7:37 a.m.