Performs a full outer join on two PageRank result data frames and computes deltas, percentage changes, and rank changes for each node. Summary statistics are attached as an attribute.
Usage
compare_pagerank(
pr_a,
pr_b,
node_col = "node_name",
pr_col = "pagerank",
label_a = "a",
label_b = "b"
)Arguments
- pr_a
A data frame of PageRank results (model A / baseline).
- pr_b
A data frame of PageRank results (model B / comparison).
- node_col
Name of the node column present in both data frames. Default `"node_name"`.
- pr_col
Name of the PageRank value column present in both data frames. Default `"pagerank"`.
- label_a
Short label for model A (used in output column names). Default `"a"`.
- label_b
Short label for model B (used in output column names). Default `"b"`.
Value
A data frame with columns:
- node_name
Node identifier
- pagerank_a, pagerank_b
PageRank scores from each model (`NA` when the node is absent from that model)
- delta
`pagerank_b - pagerank_a`
- pct_change
Percentage change from a to b (`NA` when a is `NA` or 0)
- rank_a, rank_b
Ordinal rank (1 = highest PageRank) within each model (`NA` when the node is absent)
- rank_delta
`rank_a - rank_b` (positive = improved in b)
A `"summary"` attribute (named list) is attached with:
- spearman_rho
Spearman rank correlation on common nodes
- mean_abs_delta
Mean of absolute delta on common nodes
- nodes_gained
Count of nodes in b but not a
- nodes_lost
Count of nodes in a but not b
Examples
pr_a <- data.frame(
node_name = c("A", "B", "C"),
pagerank = c(0.5, 0.3, 0.2)
)
pr_b <- data.frame(
node_name = c("A", "B", "D"),
pagerank = c(0.4, 0.35, 0.25)
)
result <- compare_pagerank(pr_a, pr_b)
print(result)
#> node_name pagerank_a pagerank_b delta pct_change rank_a rank_b rank_delta
#> 1 A 0.5 0.40 -0.10 -20.00000 1 1 0
#> 2 B 0.3 0.35 0.05 16.66667 2 2 0
#> 3 C 0.2 NA NA NA 3 NA NA
#> 4 D NA 0.25 NA NA NA 3 NA
attr(result, "summary")
#> $spearman_rho
#> [1] NA
#>
#> $mean_abs_delta
#> [1] 0.075
#>
#> $nodes_gained
#> [1] 1
#>
#> $nodes_lost
#> [1] 1
#>