Skip to contents

The scan statistic is a summary of the locality statistics that is computed from the local neighborhood of each vertex. The local_scan() function computes the local statistics for each vertex for a given neighborhood size and the statistic function.

Usage

local_scan(
  graph.us,
  graph.them = NULL,
  k = 1,
  FUN = NULL,
  weighted = FALSE,
  mode = c("out", "in", "all"),
  neighborhoods = NULL,
  ...
)

Arguments

graph.us, graph

An igraph object, the graph for which the scan statistics will be computed

graph.them

An igraph object or NULL, if not NULL, then the ‘them’ statistics is computed, i.e. the neighborhoods calculated from graph.us are evaluated on graph.them.

k

An integer scalar, the size of the local neighborhood for each vertex. Should be non-negative.

FUN

Character, a function name, or a function object itself, for computing the local statistic in each neighborhood. If NULL(the default value), ecount() is used for unweighted graphs (if weighted=FALSE) and a function that computes the sum of edge weights is used for weighted graphs (if weighted=TRUE). This argument is ignored if k is zero.

weighted

Logical scalar, TRUE if the edge weights should be used for computation of the scan statistic. If TRUE, the graph should be weighted. Note that this argument is ignored if FUN is not NULL, "ecount" and "sumweights".

mode

Character scalar, the kind of neighborhoods to use for the calculation. One of ‘out’, ‘in’, ‘all’ or ‘total’. This argument is ignored for undirected graphs.

neighborhoods

A list of neighborhoods, one for each vertex, or NULL. If it is not NULL, then the function is evaluated on the induced subgraphs specified by these neighborhoods.

In theory this could be useful if the same graph.us graph is used for multiple graph.them arguments. Then the neighborhoods can be calculated on graph.us and used with multiple graphs. In practice, this is currently slower than simply using graph.them multiple times.

...

Arguments passed to FUN, the function that computes the local statistics.

Value

For local_scan() typically a numeric vector containing the computed local statistics for each vertex. In general a list or vector of objects, as returned by FUN.

Details

See the given reference below for the details on the local scan statistics.

local_scan() calculates exact local scan statistics.

If graph.them is NULL, then local_scan() computes the ‘us’ variant of the scan statistics. Otherwise, graph.them should be an igraph object and the ‘them’ variant is computed using graph.us to extract the neighborhood information, and applying FUN on these neighborhoods in graph.them.

References

Priebe, C. E., Conroy, J. M., Marchette, D. J., Park, Y. (2005). Scan Statistics on Enron Graphs. Computational and Mathematical Organization Theory.

See also

Other scan statistics: scan_stat()

Examples

pair <- sample_correlated_gnp_pair(n = 10^3, corr = 0.8, p = 0.1)
local_0_us <- local_scan(graph.us = pair$graph1, k = 0)
local_1_us <- local_scan(graph.us = pair$graph1, k = 1)

local_0_them <- local_scan(
  graph.us = pair$graph1,
  graph.them = pair$graph2, k = 0
)
local_1_them <- local_scan(
  graph.us = pair$graph1,
  graph.them = pair$graph2, k = 1
)

Neigh_1 <- neighborhood(pair$graph1, order = 1)
local_1_them_nhood <- local_scan(
  graph.us = pair$graph1,
  graph.them = pair$graph2,
  neighborhoods = Neigh_1
)