Simulate a temporal network as edge-activity spells
Source:R/network_formats.R
simulate_temporal_network.RdSimulate a temporal network as edge-activity spells
Usage
simulate_temporal_network(
nodes,
periods,
initial_probability = 0.1,
formation_probability = 0.05,
dissolution_probability = 0.1,
directed = TRUE,
loops = FALSE,
weight = c("binary", "uniform", "normal", "poisson"),
weight_mean = 1,
weight_sd = 1,
weight_range = c(0.1, 1),
node_type = NULL,
seed = NULL,
batch = NULL
)Arguments
- nodes
Number of nodes or unique node labels.
- periods
Number of discrete observation periods.
- initial_probability
Probability that a dyad is active initially.
- formation_probability
Probability that an inactive dyad forms at the next period.
- dissolution_probability
Probability that an active dyad dissolves at the next period.
- directed
Generate directed dyads.
- loops
Permit self-loops.
- weight
Edge-spell weight distribution. One weight is drawn per spell and held constant while the spell is active.
- weight_mean, weight_sd, weight_range
Weight parameters.
- node_type
Optional node type for each node.
- seed
Optional seed.
- batch
Optional single positive whole number. When given, the simulator runs
batchtimes and returns a plainlistofbatchresults, each exactly what the same call withoutbatchreturns. With aseed, every dataset gets its own seed drawn fromseed, so the whole batch is reproducible; without one the datasets are consecutive draws from the session's random-number stream. The defaultNULLreturns a single result.
Value
A tidy spell-level simulab_sim base data.frame with one row per
activity spell and columns from, to, onset, terminus, weight,
and censored. terminus is exclusive: the spell covers periods onset
through terminus - 1, so a spell still active in the final period has
terminus == periods + 1 and censored == TRUE.
as.data.frame(x, what = ) also returns events (from, to, time,
event – "formation" or "dissolution" – and weight, ordered by
time), snapshots (one row per active dyad per period: period, from,
to, weight), nodes (node, type), and a one-row settings table.
Examples
result <- simulate_temporal_network(
nodes = 20, periods = 4, initial_probability = 0.1, seed = 1
)
head(result)
#> <simulab_sim:temporal_network> 6 rows x 6 columns
#> from to onset terminus weight censored
#> 1 Node 5 Node 1 1 5 1 TRUE
#> 2 Node 8 Node 1 1 5 1 TRUE
#> 3 Node 14 Node 1 2 5 1 TRUE
#> 4 Node 18 Node 1 2 3 1 FALSE
#> 5 Node 19 Node 1 1 5 1 TRUE
#> 6 Node 3 Node 2 1 3 1 FALSE
#>
#> Truth (settings):
#> periods directed loops initial_probability formation_probability
#> 1 4 TRUE FALSE 0.1 0.05
#> dissolution_probability weight
#> 1 0.1 binary
#>
#> Other tables: events, snapshots, nodes. Read one with as.data.frame(x, what = "events").
components(result)
#> table rows columns
#> 1 data 94 6
#> 2 events 117 5
#> 3 snapshots 225 4
#> 4 nodes 20 2
#> 5 settings 1 7