gof-methods {btergm} | R Documentation |

Assess goodness of fit of btergm and other network models.

## S4 method for signature 'btergm' gof(object, target = NULL, formula = getformula(object), nsim = 100, MCMC.interval = 1000, MCMC.burnin = 10000, parallel = c("no", "multicore", "snow"), ncpus = 1, cl = NULL, statistics = c(dsp, esp, deg, ideg, geodesic, rocpr, walktrap.modularity), verbose = TRUE, ...) ## S4 method for signature 'mtergm' gof(object, target = NULL, formula = getformula(object), nsim = 100, MCMC.interval = 1000, MCMC.burnin = 10000, parallel = c("no", "multicore", "snow"), ncpus = 1, cl = NULL, statistics = c(dsp, esp, deg, ideg, geodesic, rocpr, walktrap.modularity), verbose = TRUE, ...) ## S4 method for signature 'ergm' gof(object, target = NULL, formula = getformula(object), nsim = 100, MCMC.interval = 1000, MCMC.burnin = 10000, parallel = c("no", "multicore", "snow"), ncpus = 1, cl = NULL, statistics = c(dsp, esp, deg, ideg, geodesic, rocpr, walktrap.modularity), verbose = TRUE, ...) ## S4 method for signature 'matrix' gof(object, covariates, coef, target = NULL, nsim = 100, mcmc = FALSE, MCMC.interval = 1000, MCMC.burnin = 10000, parallel = c("no", "multicore", "snow"), ncpus = 1, cl = NULL, statistics = c(dsp, esp, deg, ideg, geodesic, rocpr, walktrap.modularity), verbose = TRUE, ...) ## S4 method for signature 'network' gof(object, covariates, coef, target = NULL, nsim = 100, mcmc = FALSE, MCMC.interval = 1000, MCMC.burnin = 10000, parallel = c("no", "multicore", "snow"), ncpus = 1, cl = NULL, statistics = c(dsp, esp, deg, ideg, geodesic, rocpr, walktrap.modularity), verbose = TRUE, ...) ## S4 method for signature 'sienaFit' gof(object, period = NULL, parallel = c("no", "multicore", "snow"), ncpus = 1, cl = NULL, structzero = 10, statistics = c(esp, deg, ideg, geodesic, rocpr, walktrap.modularity), groupName = object$f$groupNames[[1]], varName = NULL, outofsample = FALSE, sienaData = NULL, sienaEffects = NULL, nsim = NULL, verbose = TRUE, ...) createGOF(simulations, target, statistics = c(dsp, esp, deg, ideg, geodesic, rocpr, walktrap.modularity), parallel = "no", ncpus = 1, cl = NULL, verbose = TRUE, ...)

`cl` |
An optional parallel or snow cluster for use if |

`coef` |
A vector of coefficients. |

`covariates` |
A list of matrices or network objects that serve as covariates for the dependent network. The covariates in this list are automatically added to the formula as |

`formula` |
A model formula from which networks are simulated for comparison. By default, the formula from the |

`groupName` |
The group name used in the Siena model. |

`mcmc` |
Should statnet's MCMC methods be used for simulating new networks? If |

`MCMC.burnin` |
Internally, this package uses the simulation facilities of the ergm package to create new networks against which to compare the original network(s) for goodness-of-fit assessment. This argument sets the MCMC burnin to be passed over to the simulation command. The default value is |

`MCMC.interval` |
Internally, this package uses the simulation facilities of the ergm package to create new networks against which to compare the original network(s) for goodness-of-fit assessment. This argument sets the MCMC interval to be passed over to the simulation command. The default value is |

`ncpus` |
The number of CPU cores used for parallel GOF assessment (only if |

`nsim` |
The number of networks to be simulated at each time step. Example: If there are six time steps in the |

`object` |
A |

`outofsample` |
Should out-of-sample prediction be attempted? If so, some additional arguments must be provided: |

`parallel` |
Use multiple cores in a computer or nodes in a cluster to speed up the simulations. The default value |

`period` |
Which transition between time periods should be used for GOF assessment? By default, all transitions between all time periods are used. For example, if there are three consecutive networks, this will extract simulations from the transitions between 1 and 2 and between 2 and 3, respectively, and these simulations will be compared to the networks at time steps 2 and 3, respectively. The time period can be provided as a numeric, e.g., |

`sienaData` |
An object of the class |

`sienaEffects` |
An object of the class |

`simulations` |
A list of |

`statistics` |
A list of functions used for comparison of observed and simulated networks. Note that the list should contain the actual functions, not a character representation of them. See gof-statistics for details. |

`target` |
In the |

`structzero` |
Which value was used for structural zeros (usually nodes that have dropped out of the network or have not yet joined the network) in the dependent variable/network? These nodes are removed from the observed network and the simulations before comparison. Usually, the value |

`varName` |
The variable name that denotes the dependent networks in the Siena model. |

`verbose` |
Print details? |

`...` |
Arbitrary further arguments to be passed on to the statistics. See also the help page for the gof-statistics. |

The generic `gof`

function provides goodness-of-fit measures and degeneracy checks for `btergm`

, `mtergm`

, `ergm`

, `sienaFit`

, and custom dyadic-independent models. The user can provide a list of network statistics for comparing simulated networks based on the estimated model with the observed network(s). See gof-statistics. The objects created by these methods can be displayed using various plot and print methods (see gof-plot).

In-sample GOF assessment is the default, which means that the same time steps are used for creating simulations and for comparison with the observed network(s). It is possible to do out-of-sample prediction by specifying a (list of) target network(s) using the `target`

argument. If a formula is provided, the simulations are based on the networks and covariates specified in the formula. This is helpful in situations where complex out-of-sample predictions have to be evaluated. A usage scenario could be to simulate from a network at time `t`

(provided through the `formula`

argument) and compare to an observed network at time `t + 1`

(the `target`

argument). This can be done, for example, to assess predictive performance between time steps of the original networks, or to check whether the model performs well with regard to a newly measured network given the old data from the previous time step.

Predictive fit can also be assessed for stochastic actor-oriented models (SAOM) as implemented in the RSiena package. After compiling the usual objects (model, data, effects), one of the time steps can be predicted based on the previous time step and the SAOM using the `sienaFit`

method of the `gof`

function. By default, however, within-sample fit is used for SAOMs, just like for (T)ERGMs.

The `gof`

methods for networks and matrices serve to assess the goodness of fit of a dyadic-independence model. To do this, the method requires a vector of coefficients (one coefficient for the intercept or `edges`

term and one coefficient for each covariate), a list of covariates (in matrix or network shape), and a dependent network or matrix. This is useful for assessing the goodness of fit of QAP-adjusted logistic regression models (as implemented in the `netlogit`

function in the sna package) or other dyadic-independence models, such as models fitted using `glm`

. Note that this method only works with cross-sectional models and does not accept lists of networks as input data.

The `createGOF`

function is used internally by the `gof`

function in order to create a `gof`

object from a list of simulated networks and a list of target networks to compare against. It can also be used directly by the end user if the user wants to supply lists of simulated and target networks from other sources.

Philip Leifeld (https://www.philipleifeld.com)

Leifeld, Philip, Skyler J. Cranmer and Bruce A. Desmarais (2017):
Temporal Exponential Random Graph Models with btergm: Estimation
and Bootstrap Confidence Intervals. *Journal of Statistical
Software* 83(6): 1-36. http://dx.doi.org/10.18637/jss.v083.i06.

Leifeld, Philip and Skyler J. Cranmer (2014): A Theoretical and Empirical Comparison of the Temporal Exponential Random Graph Model and the Stochastic Actor-Oriented Model. Paper presented at the 7th Political Networks Conference, McGill University, Montreal, Canada, May 30. https://arxiv.org/abs/1506.06696.

btergm-package btergm simulate.btergm simulate.ergm gof gof-statistics gof-plot

## Not run: # First, create data and fit a TERGM... networks <- list() for(i in 1:10){ # create 10 random networks with 10 actors mat <- matrix(rbinom(100, 1, .25), nrow = 10, ncol = 10) diag(mat) <- 0 # loops are excluded nw <- network(mat) # create network object networks[[i]] <- nw # add network to the list } covariates <- list() for (i in 1:10) { # create 10 matrices as covariate mat <- matrix(rnorm(100), nrow = 10, ncol = 10) covariates[[i]] <- mat # add matrix to the list } fit <- btergm(networks ~ edges + istar(2) + edgecov(covariates), R = 100) # Then assess the goodness of fit: g <- gof(fit, statistics = c(triad.directed, esp, fastgreedy.modularity, rocpr), nsim = 50) g plot(g) # see ?"gof-plot" for details # createGOF can also be used with user-supplied simulations: library("statnet") data(florentine) gest <- ergm(flomarriage ~ edges + absdiff("wealth")) sim <- simulate(gest, nsim = 50) g <- createGOF(sim, list(flomarriage), statistics = c(esp, ideg), roc = FALSE) g plot(g) # The help page for the Knecht dataset (?knecht) contains another example. ## End(Not run)

[Package *btergm* version 1.9.13 Index]