The `iglm.data` class is a container for storing, validating, and analyzing unit-level attributes (x_attribute, y_attribute) and connections (z_network).
x_attribute(`numeric`) Read-only. The vector for the first unit-level attribute.
y_attribute(`numeric`) Read-only. The vector for the second unit-level attribute.
z_network(`matrix`) Read-only. The primary network structure as a 2-column integer edgelist.
neighborhood(`matrix` or `NULL`) Read-only. The secondary/neighborhood structure as a 2-column integer edgelist. `NULL` if not provided.
overlap(`matrix`) Read-only. The calculated overlap relation (dyads with shared neighbors in `neighborhood`) as a 2-column integer edgelist.
directed(`logical`) Read-only. Indicates if the `z_network` is treated as directed.
n_actor(`integer`) Read-only. The total number of actors (nodes) in the network.
type_x(`character`) Read-only. The specified distribution type for the `x_attribute`.
type_y(`character`) Read-only. The specified distribution type for the `y_attribute`.
scale_x(`numeric`) Read-only. The scale parameter associated with the `x_attribute`.
scale_y(`numeric`) Read-only. The scale parameter associated with the `y_attribute`.
new()Create a new `iglm.data` object, that includes data on two attributes and one network.
iglm.data_generator$new(
x_attribute = NULL,
y_attribute = NULL,
z_network = NULL,
neighborhood = NULL,
directed = NA,
n_actor = NA,
type_x = "binomial",
type_y = "binomial",
scale_x = 1,
scale_y = 1,
return_neighborhood = TRUE,
file = NULL
)x_attributeA numeric vector for the first unit-level attribute.
y_attributeA numeric vector for the second unit-level attribute.
z_networkA matrix representing the network. Can be a 2-column edgelist or a square adjacency matrix.
neighborhoodAn optional matrix for the neighborhood representing local dependence. Can be a 2-column edgelist or a square adjacency matrix. A tie in `neighborhood` between actor i and j indicates that j is in the neighborhood of i, implying dependence between the respective actors.
directedA logical value indicating if `z_network` is directed. If `NA` (default), directedness is inferred from the symmetry of `z_network`.
n_actorAn integer for the number of actors in the system. If `NA` (default), `n_actor` is inferred from the attributes or network matrices.
type_xCharacter string for the type of `x_attribute`. Must be one of `"binomial"`, `"poisson"`, or `"normal"`. Default is `"binomial"`.
type_yCharacter string for the type of `y_attribute`. Must be one of `"binomial"`, `"poisson"`, or `"normal"`. Default is `"binomial"`.
scale_xA positive numeric value for scaling (e.g., variance for "normal" type). Default is 1.
scale_yA positive numeric value for scaling (e.g., variance for "normal" type). Default is 1.
return_neighborhoodLogical. If `TRUE` (default) and `neighborhood` is `NULL`, a full neighborhood (all dyads) is generated implying global dependence. If `FALSE`, no neighborhood is set.
file(character) Optional file path to load a saved `iglm.data` object state.
A new `iglm.data` object.
set_z_network()Sets the `z_network` of the `iglm.data` object.
iglm.data_generator$set_z_network(z_network)z_networkA matrix representing the network. Can be a 2-column edgelist or a square adjacency matrix. @return The `iglm.data` object itself (`self`), invisibly.
set_type_x()Sets the `type_x` of the `iglm.data` object.
iglm.data_generator$set_type_x(type_x)type_xA character string for the type of `x_attribute`. Must be one of `"binomial"`, `"poisson"`, or `"normal"`. @return The `iglm.data` object itself (`self`), invisibly.
set_type_y()Sets the `type_y` of the `iglm.data` object.
iglm.data_generator$set_type_y(type_y)type_yA character string for the type of `y_attribute`. Must be one of `"binomial"`, `"poisson"`, or `"normal"`.
The `iglm.data` object itself (`self`), invisibly.
set_scale_x()Sets the `scale_x` of the `iglm.data` object.
iglm.data_generator$set_scale_x(scale_x)scale_xA positive numeric value for scaling (e.g., variance for "normal" type).
The `iglm.data` object itself (`self`), invisibly.
set_scale_y()Sets the `scale_y` of the `iglm.data` object.
iglm.data_generator$set_scale_y(scale_y)scale_yA positive numeric value for scaling (e.g., variance for "normal" type).
The `iglm.data` object itself (`self`), invisibly.
set_x_attribute()Sets the `x_attribute` of the `iglm.data` object.
iglm.data_generator$set_x_attribute(x_attribute)x_attributeA numeric vector for the first unit-level attribute.
The `iglm.data` object itself (`self`), invisibly.
set_y_attribute()Sets the `y_attribute` of the `iglm.data` object.
iglm.data_generator$set_y_attribute(y_attribute)y_attributeA numeric vector for the first unit-level attribute.
The `iglm.data` object itself (`self`), invisibly.
gather()Gathers the current state of the `iglm.data` object into a list. This includes all attributes, network, and configuration details necessary to reconstruct the object later.
iglm.data_generator$gather()A list containing the current state of the `iglm.data` object.
save()Saves the current state of the `iglm.data` object to a specified file path in RDS format. This includes all attributes, network, and configuration details necessary to reconstruct the object later.
iglm.data_generator$save(file)file(character) The file where the object state should be saved.
The `iglm.data` object itself (`self`), invisibly.
density_z()Calculates the density of the `z_network`.
iglm.data_generator$density_z()A numeric value for the network density.
density_x()Calculates the mean of the `x_attribute`.
iglm.data_generator$density_x()A numeric value for the mean of `x_attribute`.
density_y()Calculates the mean of the `y_attribute`.
iglm.data_generator$density_y()A numeric value for the mean of `y_attribute`.
edgewise_shared_partner()Calculates the matrix of edgewise shared partners. This is a two-path matrix (e.g., $A A^T$ or $A^T A$).
iglm.data_generator$edgewise_shared_partner(type = "ALL")type(character) The type of two-path to calculate for directed networks. Ignored if network is undirected. Must be one of: `"OTP"` (Outgoing Two-Path), `"ISP"` (In-Star), `"OSP"` (Out-Star), `"ITP"` (Incoming Two-Path), `"ALL"` (Symmetric all-partner). Default is `"ALL"`.
A sparse matrix (`dgCMatrix`) of shared partner counts.
set_neighborhood_overlap()Sets the neighborhood and overlap matrices.
iglm.data_generator$set_neighborhood_overlap(neighborhood, overlap)neighborhoodA matrix for a secondary neighborhood. Can be a 2-column edgelist or a square adjacency matrix.
overlapA matrix for the overlap network. Can be a 2-column edgelist or a square adjacency matrix.
None. Updates the internal neighborhood and overlap matrices.
dyadwise_shared_partner()Calculates the matrix of edgewise shared partners. This is a two-path matrix (e.g., $A A^T$ or $A^T A$).
iglm.data_generator$dyadwise_shared_partner(type = "ALL")type(character) The type of two-path to calculate for directed networks. Ignored if network is undirected. Must be one of: `"OTP"` (Outgoing Two-Path, z_i,j*z_j,h ), `"ISP"` (In-Star), `"OSP"` (Out-Star), `"ITP"` (Incoming Two-Path), `"ALL"` (Symmetric all-partner). Default is `"ALL"`.
A sparse matrix (`dgCMatrix`) of shared partner counts.
geodesic_distances_distribution()Calculates the geodesic distance distribution of the symmetrized `z_network`.
iglm.data_generator$geodesic_distances_distribution(
value_range = NULL,
prob = TRUE,
plot = FALSE
)value_range(numeric vector) A vector `c(min, max)` specifying the range of distances to tabulate. If `NULL` (default), the range is inferred from the data.
prob(logical) If `TRUE` (default), returns a probability distribution (proportions). If `FALSE`, returns raw counts.
plot(logical) If `TRUE`, plots the distribution.
A named vector (a `table` object) with the distribution of geodesic distances. Includes `Inf` for unreachable pairs.
geodesic_distances()Calculates the all-pairs geodesic distance matrix for the symmetrized `z_network` using a matrix-based BFS algorithm.
iglm.data_generator$geodesic_distances()A sparse matrix (`dgCMatrix`) where `D[i, j]` is the shortest path distance from i to j. `Inf` indicates no path.
edgewise_shared_partner_distribution()Calculates the distribution of edgewise shared partners.
iglm.data_generator$edgewise_shared_partner_distribution(
type = "ALL",
value_range = NULL,
prob = TRUE,
plot = FALSE
)type(character) The type of shared partner matrix to use. See `edgewise_shared_partner` for details. Default is `"ALL"`.
value_range(numeric vector) A vector `c(min, max)` specifying the range of counts to tabulate. If `NULL` (default), the range is inferred from the data.
prob(logical) If `TRUE` (default), returns a probability distribution (proportions). If `FALSE`, returns raw counts.
plot(logical) If `TRUE`, plots the distribution.
A named vector (a `table` object) with the distribution of shared partner counts.
dyadwise_shared_partner_distribution()Calculates the distribution of edgewise shared partners.
iglm.data_generator$dyadwise_shared_partner_distribution(
type = "ALL",
value_range = NULL,
prob = TRUE,
plot = FALSE
)type(character) The type of shared partner matrix to use. See `edgewise_shared_partner` for details. Default is `"ALL"`.
value_range(numeric vector) A vector `c(min, max)` specifying the range of counts to tabulate. If `NULL` (default), the range is inferred from the data.
prob(logical) If `TRUE` (default), returns a probability distribution (proportions). If `FALSE`, returns raw counts.
plot(logical) If `TRUE`, plots the distribution.
A named vector (a `table` object) with the distribution of shared partner counts.
degree_distribution()Calculates the degree distribution of the `z_network`.
iglm.data_generator$degree_distribution(
value_range = NULL,
prob = TRUE,
plot = FALSE
)value_range(numeric vector) A vector `c(min, max)` specifying the range of degrees to tabulate. If `NULL` (default), the range is inferred from the data.
prob(logical) If `TRUE` (default), returns a probability distribution (proportions). If `FALSE`, returns raw counts.
plot(logical) If `TRUE`, plots the degree distribution.
If the network is directed, a list containing two `table` objects: `in_degree` and `out_degree`. If undirected, a single `table` object with the degree distribution.
degree()Calculates the degree sequence(s) of the `z_network`.
iglm.data_generator$degree()If the network is directed, a list containing two vectors: `in_degree_seq` and `out_degree_seq`. If undirected, a single list containing the vector `degree_seq`.
spillover_degree_distribution()Calculates the spillover degree distribution between actors with `x_attribute == 1` and actors with `y_attribute == 1`.
iglm.data_generator$spillover_degree_distribution(
prob = TRUE,
value_range = NULL,
plot = FALSE
)prob(logical) If `TRUE` (default), returns a probability distribution (proportions). If `FALSE`, returns raw counts.
value_range(numeric vector) A vector `c(min, max)` specifying the range of degrees to tabulate. If `NULL` (default), the range is inferred from the data.
plot(logical) If `TRUE`, plots the distributions.
A list containing two `table` objects: `out_spillover_degree` (from x_i=1 to y_j=1) and `in_spillover_degree` (from y_i=1 to x_j=1).
plot()Plot the network using `igraph`.
Visualizes the `z_network` using the `igraph` package. Nodes can be colored by `x_attribute` and sized by `y_attribute`. `neighborhood` edges can be plotted as a background layer.
iglm.data_generator$plot(
node_color = "x",
node_size = "y",
show_overlap = TRUE,
layout = igraph::layout_with_fr,
network_edges_col = "grey60",
neighborhood_edges_col = "orange",
main = "",
legend_col_n_levels = NULL,
legend_size_n_levels = NULL,
legend_pos = "right",
alpha_neighborhood = 0.2,
edge.width = 1,
edge.arrow.size = 1,
vertex.frame.width = 0.5,
coords = NULL,
...
)node_color(character) Attribute to map to node color. One of `"x"` (default), `"y"`, or `"none"`.
node_size(character) Attribute to map to node size. One of `"y"` (default), `"x"`, or `"constant"`.
show_overlap(logical) If `TRUE` (default), plot the `neighborhood` edges as a background layer.
layoutAn `igraph` layout function (e.g., `igraph::layout_with_fr`).
network_edges_col(character) Color for the `z_network` edges.
neighborhood_edges_col(character) Color for the `neighborhood` edges.
main(character) The main title for the plot.
legend_col_n_levels(integer) Number of levels for the color legend.
legend_size_n_levels(integer) Number of levels for the size legend.
legend_pos(character) Position of the legend (e.g., `"right"`).
alpha_neighborhood(numeric) Alpha transparency for neighborhood edges.
edge.width(numeric) Width of the network edges.
edge.arrow.size(numeric) Size of the arrowheads for directed edges.
vertex.frame.width(numeric) Width of the vertex frame.
coords(matrix) Optional matrix of x-y coordinates for node layout.
...Additional arguments passed to `plot.igraph`.
A list containing the `igraph` object (`graph`) and the layout coordinates (`coords`), invisibly.
print()Print a summary of the `iglm.data` object to the console.
iglm.data_generator$print(digits = 3, ...)digits(integer) Number of digits to round numeric output to.
...Additional arguments (not used).
The object's private environment, invisibly.
clone()The objects of this class are cloneable with this method.
iglm.data_generator$clone(deep = FALSE)deepWhether to make a deep clone.