The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
# Install `tna` if you haven't already
# install.packages("tna")
library("tna")
data("group_regulation")
tna
Model<- tna(group_regulation)
model print(model)
tna
models# TNA visualization
plot(model, minimum = 0.05, cut = 0.1)
layout(matrix(1:4, ncol = 2, byrow = T))
# Pruning with different methods (using comparable parameters)
<- prune(model, method = "threshold", threshold = 0.15)
pruned_threshold <- prune(model, method = "lowest", lowest = 0.15)
pruned_lowest <- prune(model, method = "disparity", level = 0.5)
pruned_disparity
# Plotting for comparison
plot(pruned_threshold)
plot(pruned_lowest)
plot(pruned_disparity)
plot(model, minimum = 0.05, cut = 0.1)
layout(t(1:2))
# Identify 2-cliques (dyads) from the TNA model, excluding loops in the visualization
# A clique of size 2 is essentially a pair of connected nodes
<- cliques(
cliques_of_two
model, size = 2,
threshold = 0.15 # Only consider edges with weight > 0.15
)print(cliques_of_two)
#> Number of 2-cliques: 2 (weight threshold = 0.15)
#> Showing 2 cliques starting from clique number 1
#>
#> Clique 1:
#> consensus plan
#> consensus 0.082 0.40
#> plan 0.290 0.37
#>
#> Clique 2:
#> consensus discuss
#> consensus 0.082 0.19
#> discuss 0.321 0.19
plot(cliques_of_two, vsize = 15, edge.label.cex = 2, esize = 20, ask = F)
layout(t(1:3))
# Identify 3-cliques (triads) from the TNA_Model
# A clique of size 3 means a fully connected triplet of nodes
<- cliques(
cliques_of_three
model, size = 3,
threshold = 0.05 # Only consider edges with weight > 0.05
)print(cliques_of_three)
#> Number of 3-cliques: 3 (weight threshold = 0.05)
#> Showing 3 cliques starting from clique number 1
#>
#> Clique 1:
#> consensus discuss emotion
#> consensus 0.082 0.19 0.073
#> discuss 0.321 0.19 0.106
#> emotion 0.320 0.10 0.077
#>
#> Clique 2:
#> consensus emotion plan
#> consensus 0.082 0.073 0.40
#> emotion 0.320 0.077 0.10
#> plan 0.290 0.147 0.37
#>
#> Clique 3:
#> consensus coregulate discuss
#> consensus 0.082 0.188 0.19
#> coregulate 0.135 0.023 0.27
#> discuss 0.321 0.084 0.19
plot(cliques_of_three, vsize = 25, edge.label.cex = 4, esize = 20, ask = FALSE)
# Identify 4-cliques (quadruples) from the TNA_Model
# A clique of size 4 means four nodes that are all mutually connected
<- cliques(
cliques_of_four
model, size = 4,
threshold = 0.035 # Only consider edges with weight > 0.03
)print(cliques_of_four)
#> Number of 4-cliques: 1 (weight threshold = 0.035)
#> Showing 1 cliques starting from clique number 1
#>
#> Clique 1:
#> consensus emotion monitor plan
#> consensus 0.082 0.073 0.047 0.40
#> emotion 0.320 0.077 0.036 0.10
#> monitor 0.159 0.091 0.018 0.22
#> plan 0.290 0.147 0.076 0.37
plot(cliques_of_four, ask = F)
# Compute centrality measures for the TNA model
<- centralities(model)
Centralities
# Visualize the centrality measures
plot(Centralities)
# Calculate hub scores and the authority scores for the network
<- igraph::hits_scores(as.igraph(model))
hits_scores <- hits_scores$hub
hub_scores <- hits_scores$authority
authority_scores
# Print the calculated hub and authority scores for further analysis
print(hub_scores)
#> adapt cohesion consensus coregulate discuss emotion monitor
#> 0.96 1.00 0.65 0.69 0.74 0.82 0.74
#> plan synthesis
#> 0.87 0.90
print(authority_scores)
#> adapt cohesion consensus coregulate discuss emotion monitor
#> 0.122 0.301 1.000 0.195 0.439 0.333 0.122
#> plan synthesis
#> 0.511 0.059
# Edge betweenness
<- betweenness_network(model)
Edge_betweeness plot(Edge_betweeness)
<- communities(model)
communities print(communities)
#> Number of communities found by each algorithm:
#>
#> walktrap fast_greedy label_prop infomap
#> 1 3 1 1
#> edge_betweenness leading_eigen spinglass
#> 1 3 2
#>
#> Community assignments:
#>
#> state walktrap fast_greedy label_prop infomap edge_betweenness leading_eigen
#> 1 adapt 1 1 1 1 1 1
#> 2 cohesion 1 1 1 1 1 1
#> 3 consensus 1 1 1 1 1 2
#> spinglass
#> 1 1
#> 2 1
#> 3 1
#> [ reached 'max' / getOption("max.print") -- omitted 6 rows ]
plot(communities, method = "leading_eigen")
# Perform bootstrapping on the TNA model with a fixed seed for reproducibility
set.seed(265)
<- bootstrap(model, threshold = 0.05)
boot
# Print a summary of the bootstrap results
print(summary(boot))
#> from to weight p_value sig ci_lower ci_upper
#> 2 adapt cohesion 0.0029 0.51 FALSE 0.00059 0.0054
#> 3 adapt consensus 0.0047 0.16 FALSE 0.00313 0.0065
#> 4 adapt coregulate 0.0162 0.15 FALSE 0.01078 0.0222
#> 5 adapt discuss 0.0714 0.00 TRUE 0.06370 0.0795
#> [ reached 'max' / getOption("max.print") -- omitted 74 rows ]
# Show the non-significant edges (p-value >= 0.05 in this case)
# These are edges that are less likely to be stable across bootstrap samples
print(boot, type = "nonsig")
#> Non-significant Edges
#>
#> from to weight p_value ci_lower ci_upper
#> 2 adapt cohesion 0.0029 0.51 0.00059 0.0054
#> 3 adapt consensus 0.0047 0.16 0.00313 0.0065
#> 4 adapt coregulate 0.0162 0.15 0.01078 0.0222
#> 6 adapt emotion 0.0025 0.56 0.00071 0.0044
#> 7 adapt monitor 0.0112 0.31 0.00621 0.0172
#> [ reached 'max' / getOption("max.print") -- omitted 22 rows ]
# Create TNA for the high-achievers subset (rows 1 to 1000)
<- tna(group_regulation[1:1000, ])
Hi
# Create TNA for the low-achievers subset (rows 1001 to 2000)
<- tna(group_regulation[1001:2000, ])
Lo
# Plot a comparison of the "Hi" and "Lo" models
# The 'minimum' parameter is set to 0.001, so edges with weights >= 0.001 are shown
plot_compare(Hi, Lo, minimum = 0.01)
# Run a permutation test to determine statistical significance of differences
# between "Hi" and "Lo"
# The 'iter' argument is set to 1000, meaning 1000 permutations are performed
<- permutation_test(Hi, Lo, iter = 1000, measures = "Betweenness")
Permutation
# Plot the significant differences identified in the permutation test
plot(Permutation, minimum = 0.01)
print(Permutation$edges$stats)
#> edge_name diff_true effect_size p_value
#> 1 adapt -> adapt 0.00000 NaN 1.000
#> 2 cohesion -> adapt 0.00533 1.991 0.060
#> 3 consensus -> adapt -0.00132 -0.763 0.411
#> 4 coregulate -> adapt 0.01122 2.002 0.047
#> 5 discuss -> adapt -0.09616 -11.482 0.000
#> 6 emotion -> adapt 0.00167 0.907 0.459
#> 7 monitor -> adapt -0.00019 -0.034 0.943
#> [ reached 'max' / getOption("max.print") -- omitted 74 rows ]
print(Permutation$centralities$stats)
#> state centrality diff_true effect_size p_value
#> 1 adapt Betweenness -9 -1.31 0.220
#> 2 cohesion Betweenness 1 0.79 0.314
#> 3 consensus Betweenness 0 NaN 1.000
#> 4 coregulate Betweenness 3 1.02 0.322
#> 5 discuss Betweenness 2 4.55 0.005
#> 6 emotion Betweenness 0 NaN 1.000
#> [ reached 'max' / getOption("max.print") -- omitted 3 rows ]
# Results of the Case-Dropping Bootstrap for Centrality Indices
<- estimate_centrality_stability(model, detailed = FALSE, iter = 100)
Centrality_stability plot(Centrality_stability)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.