Learn R Programming

stCEG README

stCEG

The goal of stCEG is to facilitate the creation of Chain Event Graphs over spatial areas. It allows users to fully customise both the structure and underlying model of the Chain Event Graph, offering a high degree of flexibility for tailored analyses.

Installation

You can install the stable version of stCEG from CRAN with:

install.packages("stCEG")

Or the development version from GitHub with:

remotes::install_github("holliecalley/stCEG")
## Using github PAT from envvar GITHUB_PAT. Use `gitcreds::gitcreds_set()` and unset GITHUB_PAT in .Renviron (or elsewhere) if you want to use the more secure git credential store instead.

## Skipping install of 'stCEG' from a github remote, the SHA1 (f79d14af) has not changed since last install.
##   Use `force = TRUE` to force installation

Usage

With the stCEG package, it is simple for a user to create an event tree from a given dataset, colour it to turn it into a staged tree, specify priors over this, and then convert this into a Chain Event Graph (CEG). The package also allows for model comparison and the creation of maps based on spatial CEGs, as well as a Shiny user-interface.

library(stCEG)
data <- homicides
event_tree <- create_event_tree(data, columns = c(1,2,4,5), "both")
event_tree$eventtree
## file:////private/var/folders/8q/_ftph8z911d1mg099mv8rt6h0000gn/T/RtmpJkb7Tq/filef92d77fde3b2/widgetf92d3d6ff8a9.html screenshot completed
coloured_tree <- ahc_colouring(event_tree)
coloured_tree$stagedtree
## file:////private/var/folders/8q/_ftph8z911d1mg099mv8rt6h0000gn/T/RtmpJkb7Tq/filef92d1b1c0f8e/widgetf92d4f414189.html screenshot completed
tree_priors <- specify_priors(coloured_tree, prior_type = "Uniform", ask_edit = FALSE)
## 
## Stage Colour Key:
##         #FFFFFF 
##         #A54BE3 
##         #CFB8D1 
##         #D2D9B9 
##         #84DF9D 
##         #9DE956 
##         #DA74C8 
##         #DCCD64 
##         #7CD1D3 
##         #8287D4 
## Calculated priors:
## # A tibble: 10 × 6
##    color   level2 outgoing_edges2 number_nodes prior   stage
##    <chr>    <int>           <int>        <dbl> <chr>   <chr>
##  1 #FFFFFF      1               4            1 1,1,1,1 u1   
##  2 #A54BE3      2               2            1 1,1     u2   
##  3 #CFB8D1      2               2            1 1,1     u3   
##  4 #D2D9B9      2               2            2 2,2     u4   
##  5 #84DF9D      3               2            3 3,3     u5   
##  6 #9DE956      3               2            1 1,1     u6   
##  7 #DA74C8      3               2            2 2,2     u7   
##  8 #DCCD64      3               2            2 2,2     u8   
##  9 #7CD1D3      4               2            7 7,7     u9   
## 10 #8287D4      4               2            9 9,9     u10  
## # A tibble: 10 × 7
##    Stage Colour  Level `Outgoing Edges` Nodes Prior   `Prior Mean`       
##    <chr> <chr>   <int>            <int> <dbl> <chr>   <chr>              
##  1 u1    #FFFFFF     1                4     1 1,1,1,1 0.25,0.25,0.25,0.25
##  2 u2    #A54BE3     2                2     1 1,1     0.5,0.5            
##  3 u3    #CFB8D1     2                2     1 1,1     0.5,0.5            
##  4 u4    #D2D9B9     2                2     2 2,2     0.5,0.5            
##  5 u5    #84DF9D     3                2     3 3,3     0.5,0.5            
##  6 u6    #9DE956     3                2     1 1,1     0.5,0.5            
##  7 u7    #DA74C8     3                2     2 2,2     0.5,0.5            
##  8 u8    #DCCD64     3                2     2 2,2     0.5,0.5            
##  9 u9    #7CD1D3     4                2     7 7,7     0.5,0.5            
## 10 u10   #8287D4     4                2     9 9,9     0.5,0.5
staged_tree <- staged_tree_prior(coloured_tree, tree_priors)
staged_tree$stagedtree
## file:////private/var/folders/8q/_ftph8z911d1mg099mv8rt6h0000gn/T/RtmpJkb7Tq/filef92d135a61e4/widgetf92d12d0c9a9.html screenshot completed
ceg <- create_ceg(staged_tree, view_table = FALSE)
## # A tibble: 13 × 8
##    contract_id                         ids   label level color id    font   size
##    <chr>                               <chr> <chr> <int> <chr> <chr> <chr> <dbl>
##  1 1-#FFFFFF                           s0    w0        1 #FFF… w0    80px    100
##  2 2-#CFB8D1-3-#84DF9D-4-#7CD1D3-5-#F… s1    w1        2 #CFB… w1    80px    100
##  3 2-#A54BE3-3-#9DE956-4-#7CD1D3-5-#F… s2    w2        2 #A54… w2    80px    100
##  4 2-#D2D9B9-3-#DA74C8-4-#7CD1D3-5-#F… s3    w3        2 #D2D… w3    80px    100
##  5 2-#D2D9B9-3-#84DF9D-4-#7CD1D3-5-#F… s4    w4        2 #D2D… w4    80px    100
##  6 3-#84DF9D-4-#7CD1D3-5-#FFFFFF-5-#F… s5    w5        3 #84D… w5    80px    100
##  7 3-#DCCD64-4-#8287D4-5-#FFFFFF-5-#F… s6, … w6        3 #DCC… w6    80px    100
##  8 3-#9DE956-4-#7CD1D3-5-#FFFFFF-5-#F… s7    w7        3 #9DE… w7    80px    100
##  9 3-#DA74C8-4-#7CD1D3-5-#FFFFFF-5-#F… s8, … w8        3 #DA7… w8    80px    100
## 10 3-#84DF9D-4-#7CD1D3-5-#FFFFFF-5-#F… s11,… w9        3 #84D… w9    80px    100
## 11 4-#7CD1D3-5-#FFFFFF-5-#FFFFFF       s13,… w10       4 #7CD… w10   80px    100
## 12 4-#8287D4-5-#FFFFFF-5-#FFFFFF       s15,… w11       4 #828… w11   80px    100
## 13 5-#FFFFFF                           s29,… w∞        5 #FFF… w∞    80px    100
## # A tibble: 26 × 21
##    from  to    label1    colour_from sumlabel2 sumlabel3 total label_individuals
##    <chr> <chr> <chr>     <chr>           <dbl>     <dbl> <dbl> <chr>            
##  1 w0    w1    Adolesce… #FFFFFF           816         1   817 "Adolescent/Youn…
##  2 w0    w2    Adult     #FFFFFF          1522         1  1523 "Adult \n 1523"  
##  3 w0    w3    Child     #FFFFFF           133         1   134 "Child \n 134"   
##  4 w0    w4    Elderly   #FFFFFF           199         1   200 "Elderly \n 200" 
##  5 w1    w5    Female    #CFB8D1           103         1   104 "Female \n 104"  
##  6 w1    w6    Male      #CFB8D1           713         1   714 "Male \n 714"    
##  7 w10   w∞    Solved    #7CD1D3           501         7   508 "Solved \n 508"  
##  8 w10   w∞    Unsolved  #7CD1D3            23         7    30 "Unsolved \n 30" 
##  9 w11   w∞    Solved    #8287D4          1861         9  1870 "Solved \n 1870" 
## 10 w11   w∞    Unsolved  #8287D4           285         9   294 "Unsolved \n 294"
## # ℹ 16 more rows
## # ℹ 13 more variables: font.size <dbl>, stage_total_posterior <dbl>,
## #   posterior_total <dbl>, stage_total_prior <dbl>, prior_total <dbl>,
## #   prior_mean <dbl>, posterior_mean <dbl>, label_posterior <chr>,
## #   label_prior_mean <chr>, label_prior <chr>, color <chr>, smooth <list>,
## #   level <int>
## # A tibble: 13 × 9
##    contract_id            ids   label level color id    font   size fixed       
##    <chr>                  <chr> <chr> <int> <chr> <chr> <chr> <dbl> <list>      
##  1 1-#FFFFFF              s0    w0        1 #FFF… w0    80px    100 <named list>
##  2 2-#CFB8D1-3-#84DF9D-4… s1    w1        2 #CFB… w1    80px    100 <named list>
##  3 2-#A54BE3-3-#9DE956-4… s2    w2        2 #A54… w2    80px    100 <named list>
##  4 2-#D2D9B9-3-#DA74C8-4… s3    w3        2 #D2D… w3    80px    100 <named list>
##  5 2-#D2D9B9-3-#84DF9D-4… s4    w4        2 #D2D… w4    80px    100 <named list>
##  6 3-#84DF9D-4-#7CD1D3-5… s5    w5        3 #84D… w5    80px    100 <named list>
##  7 3-#DCCD64-4-#8287D4-5… s6, … w6        3 #DCC… w6    80px    100 <named list>
##  8 3-#9DE956-4-#7CD1D3-5… s7    w7        3 #9DE… w7    80px    100 <named list>
##  9 3-#DA74C8-4-#7CD1D3-5… s8, … w8        3 #DA7… w8    80px    100 <named list>
## 10 3-#84DF9D-4-#7CD1D3-5… s11,… w9        3 #84D… w9    80px    100 <named list>
## 11 4-#7CD1D3-5-#FFFFFF-5… s13,… w10       4 #7CD… w10   80px    100 <named list>
## 12 4-#8287D4-5-#FFFFFF-5… s15,… w11       4 #828… w11   80px    100 <named list>
## 13 5-#FFFFFF              s29,… w∞        5 #FFF… w∞    80px    100 <named list>
## # A tibble: 26 × 22
##    from  to    label1    colour_from sumlabel2 sumlabel3 total label_individuals
##    <chr> <chr> <chr>     <chr>           <dbl>     <dbl> <dbl> <chr>            
##  1 w0    w1    Adolesce… #FFFFFF           816         1   817 "Adolescent/Youn…
##  2 w0    w2    Adult     #FFFFFF          1522         1  1523 "Adult \n 1523"  
##  3 w0    w3    Child     #FFFFFF           133         1   134 "Child \n 134"   
##  4 w0    w4    Elderly   #FFFFFF           199         1   200 "Elderly \n 200" 
##  5 w1    w5    Female    #CFB8D1           103         1   104 "Female \n 104"  
##  6 w1    w6    Male      #CFB8D1           713         1   714 "Male \n 714"    
##  7 w10   w∞    Solved    #7CD1D3           501         7   508 "Solved \n 508"  
##  8 w10   w∞    Unsolved  #7CD1D3            23         7    30 "Unsolved \n 30" 
##  9 w11   w∞    Solved    #8287D4          1861         9  1870 "Solved \n 1870" 
## 10 w11   w∞    Unsolved  #8287D4           285         9   294 "Unsolved \n 294"
## # ℹ 16 more rows
## # ℹ 14 more variables: font.size <dbl>, stage_total_posterior <dbl>,
## #   posterior_total <dbl>, stage_total_prior <dbl>, prior_total <dbl>,
## #   prior_mean <dbl>, posterior_mean <dbl>, label_posterior <chr>,
## #   label_prior_mean <chr>, label_prior <chr>, color <chr>, smooth <list>,
## #   level <int>, label <chr>
ceg$ceg
## file:////private/var/folders/8q/_ftph8z911d1mg099mv8rt6h0000gn/T/RtmpJkb7Tq/filef92d558d70da/widgetf92d38ec2417.html screenshot completed

Copy Link

Version

Install

install.packages('stCEG')

Version

0.1.0

License

GPL (>= 3)

Issues

Pull Requests

Stars

Forks

Maintainer

Hollie Calley

Last Published

July 7th, 2025

Functions in stCEG (0.1.0)

summary.staged_tree

Summarise a Staged Tree Object
summary.event_tree

Summary of an Event Tree
summary.chain_event_graph

Summarise a Chain Event Graph Model
staged_tree_prior

Apply Priors to a Staged Tree for Visualization
specify_priors

Specify Priors for a Staged Tree Object
homicides

Homicides Dataset
run_stceg

Run the stCEG Shiny App
calculate_conditional_prob

Calculate Conditional Probability in a Chain Event Graph (CEG)
ahc_colouring

Agglomerative Hierarchical Clustering (AHC) Colouring for Event Trees
compare_ceg_models

Compare Two Chain Event Graph Models Using Bayes Factors
create_event_tree

Create an Event Tree from a Dataset
bcu_shapefile

London Basic Command Units (BCUs)
create_reduced_CEG

Create a Reduced Chain Event Graph (CEG)
calculate_path_products

Calculate Path Products in a Chain Event Graph (CEG)
calculate_area_probabilities

Calculate Area Probabilities in a Chain Event Graph (CEG)
create_ceg

Create a Chain Event Graph (CEG)
update_node_colours

Update Node Colours in an Event Tree
borough_shapefile

London Borough Boundaries
generate_CEG_map

Generate a Leaflet Map for a Chain Event Graph (CEG)
delete_nodes

Delete Nodes from an Event Tree