Compute divergence between two graphs using a selected graph summary
Source:R/graph_summary_divergence.R
graph.summary.divergence.RdExtracts one selected graph summary from two graph-like objects and computes a divergence between the resulting probability mass functions.
Currently the supported divergence is Jensen-Shannon divergence, implemented
via jensen.shannon.divergence().
Arguments
- graph1
First
dgraphobject.- graph2
Second
dgraphobject.- summary
Summary type to compare.
- divergence
Divergence type. Currently only
"js".- labels
Optional shared vertex-label vector used for
"neighborhood_label_distribution".- summary.args
Optional named list forwarded to
compute.graph.summary.pmf().- support
Optional common support. If
NULL, the union of the two PMF supports is used.- return.details
Logical; if
TRUE, return a structured list.
Value
If return.details = TRUE, a list with fields:
summary: summary type used.divergence: divergence type used.value: scalar divergence value.pmf1: aligned PMF forg1.pmf2: aligned PMF forg2.support: aligned support.metadata: summary-specific metadata for both graphs.
Otherwise, returns the scalar divergence value.
Examples
path <- dgraph(list(2L, c(1L, 3L), 2L))
triangle <- dgraph(list(c(2L, 3L), c(1L, 3L), c(1L, 2L)))
graph.summary.divergence(
path,
triangle,
summary = "degree_distribution"
)
#> $summary
#> [1] "degree_distribution"
#>
#> $divergence
#> [1] "js"
#>
#> $value
#> [1] 0.4591479
#>
#> $pmf1
#> 1 2
#> 0.6666667 0.3333333
#>
#> $pmf2
#> 1 2
#> 0 1
#>
#> $support
#> [1] "1" "2"
#>
#> $metadata
#> $metadata$graph1
#> $metadata$graph1$n.vertices
#> [1] 3
#>
#> $metadata$graph1$n.edges
#> [1] 2
#>
#> $metadata$graph1$directed
#> [1] FALSE
#>
#> $metadata$graph1$simplify.multiple
#> [1] TRUE
#>
#>
#> $metadata$graph2
#> $metadata$graph2$n.vertices
#> [1] 3
#>
#> $metadata$graph2$n.edges
#> [1] 3
#>
#> $metadata$graph2$directed
#> [1] FALSE
#>
#> $metadata$graph2$simplify.multiple
#> [1] TRUE
#>
#>
#>