Skip to contents

Calculate scan statistics on a time series of graphs. This is done by calculating the local scan statistics for each graph and each vertex, and then normalizing across the vertices and across the time steps.

Usage

scan_stat(graphs, tau = 1, ell = 0, locality = c("us", "them"), ...)

Arguments

graphs

A list of igraph graph objects. They must be all directed or all undirected and they must have the same number of vertices.

tau

The number of previous time steps to consider for the time-dependent normalization for individual vertices. In other words, the current locality statistics of each vertex will be compared to this many previous time steps of the same vertex to decide whether it is significantly larger.

ell

The number of previous time steps to consider for the aggregated scan statistics. This is essentially a smoothing parameter.

locality

Whether to calculate the ‘us’ or ‘them’ statistics.

...

Extra arguments are passed to local_scan().

Value

A list with entries:

stat

The scan statistics in each time step. It is NA for the initial tau + ell time steps.

arg_max_v

The (numeric) vertex ids for the vertex with the largest locality statistics, at each time step. It is NA for the initial tau + ell time steps.

See also

Other scan statistics: local_scan()

Examples

## Generate a bunch of SBMs, with the last one being different
num_t <- 20
block_sizes <- c(10, 5, 5)
p_ij <- list(p = 0.1, h = 0.9, q = 0.9)

P0 <- matrix(p_ij$p, 3, 3)
P0[2, 2] <- p_ij$h
PA <- P0
PA[3, 3] <- p_ij$q
num_v <- sum(block_sizes)

tsg <- replicate(num_t - 1, P0, simplify = FALSE) %>%
  append(list(PA)) %>%
  lapply(sample_sbm, n = num_v, block.sizes = block_sizes, directed = TRUE)

scan_stat(graphs = tsg, k = 1, tau = 4, ell = 2)
#> $stat
#>  [1]          NA          NA          NA          NA          NA          NA
#>  [7] -3.16605406 -0.67955387  0.08102322  2.25716729  1.23058614 -0.83711731
#> [13]  0.87500000 -0.47140452 -2.62500000 -0.08735177 -0.61535731  1.40032920
#> [19]  3.33672361  5.21285697
#> 
#> $arg_max_v
#>  [1] NA NA NA NA NA NA  6 19  3  5 17  2  1 10  5 14 15 17  1 16
#> 
scan_stat(graphs = tsg, locality = "them", k = 1, tau = 4, ell = 2)
#> $stat
#>  [1]         NA         NA         NA         NA         NA         NA
#>  [7]  1.5246241 -0.4895355 -1.3499311  1.1250000  0.7071068 -1.0000000
#> [13]  0.7848784 -0.8924392 -0.9374530  0.1250000 -1.6250000 -0.1010153
#> [19]  4.6250000  3.0718071
#> 
#> $arg_max_v
#>  [1] NA NA NA NA NA NA 16  1  7  9 17 15 13 14  2  3  9 15 15 17
#>