# A Function to simulate networks from a GERGM with given theta parameters.

### Description

Simulates networks from a GERGM for a given set of parameter values.

### Usage

1 2 3 4 5 6 7 8 | ```
simulate_networks(formula, thetas, simulation_method = c("Metropolis",
"Gibbs"), network_is_directed = TRUE,
number_of_networks_to_simulate = 500, thin = 1, proposal_variance = 0.1,
downweight_statistics_together = TRUE, MCMC_burnin = 100, seed = 123,
GERGM_Object = NULL, return_constrained_networks = FALSE,
optimize_proposal_variance = FALSE, target_accept_rate = 0.25,
use_stochastic_MH = FALSE, stochastic_MH_proportion = 1,
covariate_data = NULL, lambdas = NULL, ...)
``` |

### Arguments

`formula` |
A formula object that specifies which statistics the user would like to include while simulating the network, and the network the user is providing as the initial network. Currently, the following statistics can be specified: c("edges", "out2stars", "in2stars", "ctriads", "mutual", "ttriads"). |

`thetas` |
A vector of theta parameters given in the same order as the formula terms, which the user would like to use to parameterize the model. |

`simulation_method` |
Default is "Metropolis" which allows for exponential downweighting, can also be "Gibbs". |

`network_is_directed` |
Logical specifying whether or not the observed network is directed. Default is TRUE. |

`number_of_networks_to_simulate` |
Number of simulations generated for estimation via MCMC. Default is 500. |

`thin` |
The proportion of samples that are kept from each simulation. For example, thin = 1/200 will keep every 200th network in the overall simulated sample. Default is 1. |

`proposal_variance` |
The variance specified for the Metropolis Hastings simulation method. This parameter is inversely proportional to the average acceptance rate of the M-H sampler and should be adjusted so that the average acceptance rate is approximately 0.25. Default is 0.1. |

`downweight_statistics_together` |
Logical specifying whether or not the weights should be applied inside or outside the sum. Default is TRUE and user should not select FALSE under normal circumstances. |

`MCMC_burnin` |
Number of samples from the MCMC simulation procedure that will be discarded before drawing the samples used for estimation. Default is 100. |

`seed` |
Seed used for reproducibility. Default is 123. |

`GERGM_Object` |
Optional argument allowing the user to supply a GERGM object output by the gergm() estimation function in order to simualt further networks. Defaults to NULL. If a GERGM object is provided, any user specified parameter values will be ignored and the final parameter estimates from the gergm() function will be used instead. When using this option, the folowing terms must still be specified: number_of_networks_to_simulate, thin, and MCMC_burnin. proposal_variance may also be specified, or if set equal to NULL, then the proposal variance from parameter estimation will be used instead ( this option is likely preferred in most situations). |

`return_constrained_networks` |
Logical argument indicating whether simulated networks should be transformed back to observed scale or whether constrained [0,1] networks should be returned. Defaults to FALSE, in which case networks are returned on observed scale. |

`optimize_proposal_variance` |
Logical indicating whether proposal variance should be optimized if using Metropolis Hastings for simulation. Defaults to FALSE. |

`target_accept_rate` |
Defaults to 0.25, can be used to optimize Metropolis Hastings simulations. |

`use_stochastic_MH` |
A logical indicating whether a stochastic approximation to the h statistics should be used under Metropolis Hastings in-between thinned samples. This may dramatically speed up estimation. Defualts to FALSE. HIGHLY EXPERIMENTAL! |

`stochastic_MH_proportion` |
Percentage of dyads/triads to use for approximation, defaults to 0.25 |

`covariate_data` |
A data frame containing node level covariates the user wished to transform into sender or reciever effects. It must have row names that match every entry in colnames(raw_network), should have descriptive column names. If left NULL, then no sender or reciever effects will be added. |

`lambdas` |
A vector of lambda parameters given in the same order as the formula terms, which the user would like to use to parameterize the model. Covariate effects should be specified after endogenous effects. |

`...` |
Optional arguments, currently unsupported. |

### Value

A list object containing simulated networks and parameters used to specify the simulation. See the $MCMC_Output field for simulated networks. If GERGM_Object is provded, then a GERGM object will be returned instead.

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | ```
set.seed(12345)
net <- matrix(runif(100),10,10)
diag(net) <- 0
colnames(net) <- rownames(net) <- letters[1:10]
formula <- net ~ ttriads + in2stars
test <- simulate_networks(formula,
thetas = c(0.6,-0.8),
network_is_directed = TRUE,
simulation_method = "Metropolis",
number_of_networks_to_simulate = 100,
thin = 1/10,
proposal_variance = 0.5,
downweight_statistics_together = TRUE,
MCMC_burnin = 1000,
omit_intercept_term = TRUE,
seed = 456)
# preferred method for specifying a null model
formula <- net ~ edges(method = "endogenous")
test <- simulate_networks(
formula,
thetas = 0,
network_is_directed = TRUE,
simulation_method = "Metropolis",
number_of_networks_to_simulate = 1000,
thin = 1/10,
proposal_variance = 0.5,
downweight_statistics_together = TRUE,
MCMC_burnin = 1000,
seed = 456)
``` |