Getting started with the tna package

This vignette showcases some basic usage of the tna package. First we load the package that we will use for this example.

library("tna")
library("tibble")
library("dplyr")
library("gt")

We also load the group_regulation data available in the package (see ?group_regulation for further information)

data("group_regulation", package = "tna")

We build a TNA model using this data with the tna() function .

tna_model <- tna(group_regulation)

To visualize the model, we can use the standard plot() function.

plot(tna_model, cut = 0.2, minimum = 0.05, 
     edge.label.position= 0.8, edge.label.cex = 0.7)

The initial state probabilities are

data.frame(`Initial prob.` = tna_model$inits, check.names = FALSE) |>
  rownames_to_column("Action") |>
  arrange(desc(`Initial prob.`)) |>
  gt() |>
  fmt_percent()
Action Initial prob.
consensus 21.40%
plan 20.45%
discuss 17.55%
emotion 15.15%
monitor 14.40%
cohesion 6.05%
synthesis 1.95%
coregulate 1.90%
adapt 1.15%

and the transitions probabilities are

tna_model$weights |>
  data.frame() |>
  rownames_to_column("From\\To") |>
  gt() |>
  fmt_percent()
From\To adapt cohesion consensus coregulate discuss emotion monitor plan synthesis
adapt 0.00% 27.31% 47.74% 2.16% 5.89% 11.98% 3.34% 1.57% 0.00%
cohesion 0.29% 2.71% 49.79% 11.92% 5.96% 11.56% 3.30% 14.10% 0.35%
consensus 0.47% 1.49% 8.20% 18.77% 18.80% 7.27% 4.66% 39.58% 0.76%
coregulate 1.62% 3.60% 13.45% 2.34% 27.36% 17.21% 8.63% 23.91% 1.88%
discuss 7.14% 4.76% 32.12% 8.43% 19.49% 10.58% 2.23% 1.16% 14.10%
emotion 0.25% 32.53% 32.04% 3.42% 10.19% 7.68% 3.63% 9.98% 0.28%
monitor 1.12% 5.58% 15.91% 5.79% 37.54% 9.07% 1.81% 21.56% 1.61%
plan 0.10% 2.52% 29.04% 1.72% 6.79% 14.68% 7.55% 37.42% 0.18%
synthesis 23.47% 3.37% 46.63% 4.45% 6.29% 7.06% 1.23% 7.52% 0.00%

The function centralities() can be used to compute various centrality measures (see ?centralities for more information). These measures can also be visualized with the plot() function.

centrality_measures <- c("BetweennessRSP", "Closeness", "InStrength", "OutStrength")
cents_withoutloops <- centralities(
  tna_model,
  measures = centrality_measures,
  loops = FALSE,
  normalize = TRUE
)
plot(cents_withoutloops, ncol = 2, model = tna_model)