R: Temporally-Sensitive Operator and Durational Terms used in...

ergm-terms {tergm} | R Documentation

## Temporally-Sensitive Operator and Durational Terms used in Exponential Family Random Graph Models

### Description

The terms described here are unique to temporal networks: each summarizes some type of change or durational information.

The operator terms include: `Form()`, `Persist()`, `Diss()`, `Cross()` and `Change()`. These are used to specify how the `ergm-terms` in a formula are evaluated across a network time-series. Note, you cannot use an operator within another operator, so `Cross(~Form(~edges))` is not a valid specification.

The durational terms are distinguished either by their name, `mean.age`, or their name extensions: `<name>.ages`, `<name>.mean.age`, and `<name>.age.interval`. In contrast to their named `ergm-terms` counterparts, these durational terms take into account the elapsed time since each (term-relevant) dyad in the network was last toggled.

As currently implemented, the package does not support use of durational terms during estimation. But durational terms may be used as targets, monitors, or summary statistics. The ability to use these terms in the estimation of models is under development.

All terms listed here currently work with binary-valued ties only.

### Operator Terms included in the `tergm` package

`Form(formula)`

  The Formation Operator Term: This term accepts a model formula `formula` and produces the corresponding model for the post-formation network: effectively a network containing both previous time step's ties and ties just formed, the union of the previous and current network. This is the equivalent of the old-style `formation` model.

`Persist(formula)`

  The Persistence Operator Term: This term accepts a model formula `formula` and produces the corresponding model for the post-dissolution/persistence network: effectively the network containing ties that persisted since the last time step.

  This is the equivalent of the old-style `dissolution` model. So a larger positive coefficient for `Persist()` operator means less dissolution. It produces the same results as the new `Diss()` operator, except the signs of the coefficients are negated.

`Diss(formula)`

  The Dissolution Operator Term: This term accepts a model formula `formula` and produces the corresponding model for the post-dissolution network (same as `Persist()`), but with all statistics negated.

  Note: This is not the equivalent of the old style `dissolution` model, because the signs of the coefficients are reversed. So a larger positive coefficient for `Diss()` operator means more dissolution.

`Cross(formula)`

  The Crossection Operator Term: This term accepts a model formula `formula` and produces the corresponding model for the cross-sectional network. It is mainly useful for CMLE estimation, and has no effect (i.e., `Cross(~TERM) == ~TERM`) for EGMME and dynamic simulation.

`Change(formula)`

  The Change Operator Term: This term accepts a model formula `formula` and produces the corresponding model for a network constructed by taking the dyads that have changed between time steps.

### Terms to represent network statistics included in the `tergm` package

`degrange.mean.age(from, to=+Inf, byarg=NULL, emptyval=0)`

  Average age of ties incident on nodes having degree in a given range: The `from` and `to` arguments are vectors of distinct integers or `+Inf`, for `to`. If one of the vectors has length 1, it is recycled to the length of the other. Otherwise, they must have the same length. This term adds one network statistic to the model for each element of `from` (or `to`); the ith such statistic equals the average, among all ties incident on nodes with degree greater than or equal to `from[i]` but strictly less than `to[i]`, of the amount of time elapsed since the tie's formation. The optional argument `byarg` specifies a vertex attribute (see Specifying Vertex Attributes and Levels for details). If specified, then separate degree statistics are calculated for nodes having each separate value of the attribute.

  Because this average is undefined for a network that does not have any actors with degree in the specified range, the argument `emptyval` can be used to specify the value returned if this is the case. This is, technically, an arbitrary value, but it should not have a substantial effect unless a non-negligible fraction of networks at the parameter configuration of interest has no actors with specified degree.

`degree.mean.age(d, byarg=NULL, emptyval=0)`

  Average age of ties incident on nodes having a given degree: The `d` argument is a vector of distinct integers. This term adds one network statistic to the model for each element in `d`; the ith such statistic equals the average, among all ties incident on nodes with degree exactly `d[i]`, of the amount of time elapsed since the tie's formation. The optional argument `byarg` specifies a vertex attribute (see Specifying Vertex Attributes and Levels for details). If specified, then separate degree statistics are calculated for nodes having each separate value of the attribute.

  Because this average is undefined for a network that does not have any actors with degree `d[i]`, the argument `emptyval` can be used to specify the value returned if this is the case. This is, technically, an arbitrary value, but it should not have a substantial effect unless a non-negligible fraction of networks at the parameter configuration of interest has no actors with specified degree.

`edges.ageinterval(from, to=+Inf)`

  Number of edges with age falling into a specified range: This term counts the number of edges in the network for which the time elapsed since formation is greater than or equal to `from` but strictly less than `to`. In other words, it is in the semiopen interval `[from, to)`. `from` and `to` may be scalars, vectors of the same length, or one of them must have length one, in which case it is recycled.

`edge.ages`

  Sum of ages of extant ties: This term adds one statistic equaling sum, over all ties present in the network, of the amount of time elapsed since formation.

  Unlike `mean.age`, this statistic is well-defined on an empty network. However, if used as a target, it appears to produce highly biased dissolution parameter estimates if the goal is to get an intended average duration.

`edgecov.ages(x, attrname=NULL)`

  Weighted sum of ages of extant ties: This term adds one statistic equaling sum, over all ties present in the network, of the amount of time elapsed since formation, multiplied by a dyadic covariate. See the help for the `edgecov` term for details for specifying the covariate.

  "Weights" can be negative.

  Unlike `edgecov.mean.age`, this statistic is well-defined on an empty network. However, if used as a target, it appears to produce highly biased dissolution parameter estimates if the goal is to get an intended average duration.

`edgecov.mean.age(x, attrname=NULL, emptyval=0)`

  Weighted average age of an extant tie: This term adds one statistic equaling the average, over all ties present in the network, of the amount of time elapsed since formation, weighted by a (nonnegative) dyadic covariate. See the help for the `edgecov` term for details for specifying the covariate.

  The behavior when there are negative weights is undefined.

  Because this average is undefined for an empty network (or a network all of whose extant edges have been weighted 0), the argument `emptyval` can be used to specify the value returned if this is the case. This is, technically, an arbitrary value, but it should not have a substantial effect unless a non-negligible fraction of networks at the parameter configuration of interest is empty and/or if only a few dyads have nonzero weights.

`mean.age(emptyval=0, log=FALSE)`

  Average age of an extant tie: This term adds one statistic equaling the average, over all ties present in the network, of the amount of time elapsed since formation.

  Because this average is undefined for an empty network, the argument `emptyval` can be used to specify the value returned if it is. This is, technically, an arbitrary value, but it should not have a substantial effect unless a non-negligible fraction of networks at the parameter configuration of interest is empty.

  To get mean log age instead of mean age, set `log=TRUE`.

`nodefactor.mean.age(attr, levels=NULL, emptyval=0, log=FALSE)`

  Average ages of extant half-ties incident on nodes of specified attribute levels: This term adds one statistic for each level of `attr`, equaling the average, over all half-ties incident on nodes of that level, of the amount of time elapsed since formation.

  To control what levels are included, use the `levels` argument. Note that the default `levels` value for `nodefactor.mean.age` retains all levels, unlike the default for `nodefactor`, which omits the first level.

  See Specifying Vertex Attributes and Levels for details on specifying vertex attributes and levels.

  The argument `emptyval` functions like it does for `mean.age`, except that a different value may be specified for each level of `attr`. The length of `emptyval` should either be 1 (in which case that value is used for every level of `attr`) or should be equal to the number of retained levels of `attr`, in which case the `i`th value in `emptyval` is used for the `i`th retained level of `attr`.

  To get mean log age instead of mean age, set `log=TRUE`; this is applied to all levels.

`nodemix.mean.age(attr, b1levels=NULL, b2levels=NULL, levels=NULL, levels2=NULL, emptyval=0, log=FALSE)`

  Average ages of extant ties of specified mixing types: This term adds one statistic for each mixing type of `attr`, equaling the average, over all ties of that mixing type, of the amount of time elapsed since formation.

  The `levels`-related arguments function just like they do for the ordinary `nodemix` term. See Specifying Vertex Attributes and Levels for details on specifying vertex attributes and levels.

  The argument `emptyval` functions like it does for `mean.age`, except that a different value may be specified for each mixing type of `attr`. The length of `emptyval` should either be 1 (in which case that value is used for every mixing type of `attr`) or should be equal to the number of retained mixing types of `attr`, in which case the `i`th value in `emptyval` is used for the `i`th retained mixing type of `attr`.

  To get mean log age instead of mean age, set `log=TRUE`; this is applied to all mixing types.

### References

- Handcock M. S., Hunter D. R., Butts C. T., Goodreau S. G., Krivitsky P. N. and Morris M. (2012). _Fit, Simulate and Diagnose Exponential-Family Models for Networks_. Version 3.1. Project home page at <URL: https://statnet.org>, <URL: CRAN.R-project.org/package=ergm>.

- Krivitsky, P.N. (2012). Modeling of Dynamic Networks based on Egocentric Data with Durational Information. Pennsylvania State University Department of Statistics Technical Report, 2012(2012-01). https://web.archive.org/web/20170830053722/https://stat.psu.edu/research/technical-report-files/2012-technical-reports/TR1201A.pdf

- Krivitsky, P.N. (2012). Modeling Tie Duration in ERGM-Based Dynamic Network Models. Pennsylvania State University Department of Statistics Technical Report, 2012(2012-02).

### See Also

`ergm-terms` (from the `ergm` package), `ergm`, `network`, `%v%`, `%n%`

[Package tergm version 4.0.2 Index]