A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://cran.rstudio.com/web/packages/SpatialTools/../Rcpp/../scoredec/vignettes/Introduction.html below:

Introduction to scoredec

Example undirected graph
# Import libraries
library(scoredec)
library(igraph)

# Create a dummy undirected graph
set.seed(42)
n <- 4
W <- matrix(runif(n^2),n)
W[lower.tri(W)] <- t(W)[lower.tri(W)]
diag(W) <- 0

# Print adjacency matrix
print(W)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 0.0000000 0.6417455 0.6569923 0.9346722
## [2,] 0.6417455 0.0000000 0.7050648 0.2554288
## [3,] 0.6569923 0.7050648 0.0000000 0.4622928
## [4,] 0.9346722 0.2554288 0.4622928 0.0000000
# Transform adjacency matrix to graph
g <- graph_from_adjacency_matrix(W, mode = "undirected", weighted = TRUE)

# Set seed for reproducible plot
set.seed(42)
plot(g,
     edge.width=E(g)$weight * 5 # make connection weight lines thicker
     )

Fig. 2: Example undirected graph with connectivity lines sized by their weights.

It is clear on Fig. 2 that some connections are stronger than others, having greater connectivity weights. Moreover, the same vertex might has some strong and some weak weights. Therefore, decomposing the graph visually might get hard, especially on larger networks.

# Get s-core values
s_core_result <- s_coreness(g)
print(s_core_result)
## [1] 3 1 2 3
# Plot result from s_coreness
# Set seed for reproducibility
set.seed(42)

plot(g,
     edge.width  = E(g)$weight * 5, # make connection weight lines thicker
     vertex.size = s_core_result * 10
     )

Fig. 3: Example undirected graph with vertices sized by their s-coreness.

It is shown on Fig. 3 that vertices 1 and 4 have higher coreness compared to all the other vertices, while vertex 2 has the smallest one. Note that for undirected graphs the mode ("all","in" or "out") does not matter:

all.equal(s_core_result, s_coreness(g, mode = "in"))
## [1] TRUE
all.equal(s_core_result, s_coreness(g, mode = "out"))
## [1] TRUE

Therefore, for efficiency reasons, choosing mode = "in" or mode = "out" is preferred, as long as the sum of adjacency matrix with its transpose for transforming it to undirected is not needed.

Example directed graph
# Create a dummy directed graph
set.seed(42)
n <- 4
W <- matrix(runif(n^2),n)
diag(W) <- 0

# Print adjacency matrix
print(W)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 0.0000000 0.6417455 0.6569923 0.9346722
## [2,] 0.9370754 0.0000000 0.7050648 0.2554288
## [3,] 0.2861395 0.7365883 0.0000000 0.4622928
## [4,] 0.8304476 0.1346666 0.7191123 0.0000000
# Transform adjacency matrix to graph
g <- graph_from_adjacency_matrix(W, mode = "directed", weighted = TRUE)

# Set seed for reproducible plot
set.seed(42)
plot(g,
     edge.width=E(g)$weight * 5, # make connection weight lines thicker,
     edge.curved = rep(0.4, ecount(g)) # make directions more visible
     )

Fig. 4: Example directed graph with connectivity lines per direction sized by their weights.

As show on Fig. 4, finding coreness with both directions and weights is even harder. Therefore, the use of s-core algorithm is even more cruicial here. In correspondence to the use of in-degree and out-degree strength of vertices used on k-cores (Csárdi and Nepusz 2006; Csárdi et al. 2024), this algorithm is extended in the same way as well.

# Get total degree s-core values
all_s_core <- s_coreness(g, mode = "all")
print(all_s_core)
## [1] 3 3 2 1
# Set seed for reproducibility
set.seed(42)

plot(g,
     edge.width  = E(g)$weight * 5, # make connection weight lines thicker,
     edge.curved = rep(0.4, ecount(g)), # make directions more visible
     vertex.size = all_s_core * 10
     )

Fig. 5: Total degree s-coreness.

# Get in-degree s-core values
in_s_core <- s_coreness(g, mode = "in")
print(in_s_core)
## [1] 2 1 4 3
# Set seed for reproducibility
set.seed(42)

plot(g,
     edge.width  = E(g)$weight * 5, # make connection weight lines thicker,
     edge.curved = rep(0.4, ecount(g)), # make directions more visible
     vertex.size = in_s_core * 10
     )

Fig. 6: In-degree s-coreness.

# Get out-degree s-core values
out_s_core <- s_coreness(g, mode = "out")
print(out_s_core)
## [1] 3 4 1 2
# Plot result from s_coreness
# Set seed for reproducibility
set.seed(42)

plot(g,
     edge.width  = E(g)$weight * 5, # make connection weight lines thicker,
     edge.curved = rep(0.4, ecount(g)), # make directions more visible
     vertex.size = out_s_core * 10
     )

Fig. 7: Out-degree s-coreness.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4