计算时间序列图上的扫描统计。 这是通过计算每个图和每个顶点的局部扫描统计量,然后在顶点和时间步长上进行归一化来完成的。
用法
scan_stat(graphs, tau = 1, ell = 0, locality = c("us", "them"), ...)
参数
- graphs
igraph 图对象列表。 它们必须全部是有向的或全部是无向的,并且必须具有相同数量的顶点。
- tau
用于个体顶点的时间相关归一化的先前时间步数。 换句话说,每个顶点当前的局部统计量将与相同顶点的这么多先前时间步长进行比较,以确定其是否显着较大。
- ell
用于聚合扫描统计量的先前时间步数。 这本质上是一个平滑参数。
- locality
是否计算 “us” 或 “them” 统计量。
- ...
额外的参数传递给
local_scan()
。
值
一个包含以下条目的列表
- stat
每个时间步长的扫描统计量。 对于初始的
tau + ell
时间步长,它是NA
。- arg_max_v
在每个时间步长,具有最大局部统计量的顶点的(数字)顶点 ID。 对于初始的
tau + ell
时间步长,它是NA
。
参见
其他扫描统计量: local_scan()
示例
## 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] -0.61509890 3.25000000 -0.60658251 2.11242679 -0.40894749 -1.23697715
#> [13] 0.46618808 -0.02210365 0.68385192 2.03226081 -1.17851130 1.76776695
#> [19] 1.41421356 15.25330342
#>
#> $arg_max_v
#> [1] NA NA NA NA NA NA 4 19 2 4 9 2 7 20 10 19 17 18 5 20
#>
scan_stat(graphs = tsg, locality = "them", k = 1, tau = 4, ell = 2)
#> $stat
#> [1] NA NA NA NA NA NA
#> [7] 0.12500000 -0.25000000 0.00000000 4.12500000 0.08838835 -2.15033062
#> [13] 0.70710678 -1.66852709 -0.23570226 2.50000000 -1.03851698 0.42067622
#> [19] 0.16834091 14.37500000
#>
#> $arg_max_v
#> [1] NA NA NA NA NA NA 9 3 20 4 9 2 11 2 16 19 2 18 5 16
#>