| san {ergm} | R Documentation |
This function attempts to find a network or networks whose statistics match
those passed in via the target.stats vector.
san(object, ...)
## S3 method for class 'formula'
san(object, response = NULL, reference = ~Bernoulli,
constraints = ~., target.stats = NULL, nsim = NULL, basis = NULL,
output = c("network", "edgelist", "pending_update_network"),
only.last = TRUE, control = control.san(), verbose = FALSE, ...)
## S3 method for class 'ergm_model'
san(object, response = NULL,
reference = ~Bernoulli, constraints = ~., target.stats = NULL,
nsim = NULL, basis = NULL, output = c("network", "edgelist",
"pending_update_network"), only.last = TRUE, control = control.san(),
verbose = FALSE, ...)
## S3 method for class 'ergm'
san(object, formula = object$formula,
constraints = object$constraints, target.stats = object$target.stats,
nsim = NULL, basis = NULL, output = c("network", "edgelist",
"pending_update_network"), only.last = TRUE,
control = object$control$SAN.control, verbose = FALSE, ...)
object |
Either a |
... |
Further arguments passed to other functions. |
response |
Name of the edge attribute whose value
is to be modeled. Defaults to |
reference |
One-sided formula whose RHS gives the
reference measure to be used. (Defaults to |
constraints |
A one-sided formula specifying one or more constraints on
the support of the distribution of the networks being simulated. See the
documentation for a similar argument for |
target.stats |
A vector of the same length as the number of terms
implied by the formula, which is either |
nsim |
Number of networks to generate. Deprecated: just use |
basis |
If not NULL, a |
output |
Character, one of |
only.last |
if |
control |
A list of control parameters for algorithm tuning; see
|
verbose |
Logical or numeric giving the level of verbosity. Higher values produce more verbose output. |
formula |
(By default, the |
A network or list of networks that hopefully have network
statistics close to the target.stats vector.
formula: Sufficient statistics are specified by a formula.
ergm_model: A lower-level function that expects a pre-initialized ergm_model.
ergm: Sufficient statistics and other settings are
inherited from the ergm fit unless overridden.
# initialize x to a random undirected network with 50 nodes and a density of 0.1
x <- network(50, density = 0.05, directed = FALSE)
# try to find a network on 50 nodes with 300 edges, 150 triangles,
# and 1250 4-cycles, starting from the network x
y <- san(x ~ edges + triangles + cycle(4), target.stats = c(300, 150, 1250))
# check results
summary(y ~ edges + triangles + cycle(4))
# initialize x to a random directed network with 50 nodes
x <- network(50)
# add vertex attributes
x %v% 'give' <- runif(50, 0, 1)
x %v% 'take' <- runif(50, 0, 1)
# try to find a set of 100 directed edges making the outward sum of
# 'give' and the inward sum of 'take' both equal to 62.5, so in
# edges (i,j) the node i tends to have above average 'give' and j
# tends to have above average 'take'
y <- san(x ~ edges + nodeocov('give') + nodeicov('take'), target.stats = c(100, 62.5, 62.5))
# check results
summary(y ~ edges + nodeocov('give') + nodeicov('take'))
# initialize x to a random undirected network with 50 nodes
x <- network(50, directed = FALSE)
# add a vertex attribute
x %v% 'popularity' <- runif(50, 0, 1)
# try to find a set of 100 edges making the total sum of
# popularity(i) and popularity(j) over all edges (i,j) equal to
# 125, so nodes with higher popularity are more likely to be
# connected to other nodes
y <- san(x ~ edges + nodecov('popularity'), target.stats = c(100, 125))
# check results
summary(y ~ edges + nodecov('popularity'))
# creates a network with denser "core" spreading out to sparser
# "periphery"
plot(y)