# Model Terms for Latent Space Random Graph Model

### Description

Model terms that can be used in an `ergmm`

formula and
their parameter names.

### Model Terms

The `latentnet`

package itself allows only
dyad-independent terms. In the formula for the model, the model terms are various function-like
calls, some of which require arguments, separated by `+`

signs.

*Latent Space Effects*

`euclidean(d, G=0, var.mul=1/8, var=NULL, var.df.mul=1, var.df=NULL, mean.var.mul=1, mean.var=NULL, pK.mul=1, pK=NULL)`

*(Negative) Euclidean distance model term, with optional clustering.*Adds a term to the model equal to the negative Eucledean distance*-dist(Z[i],Z[j])*, where*Z[i]*and*Z[j]*are the positions of their respective actors in an unobserved social space. These positions may optionally have a finite spherical Gaussian mixture clustering structure. This term was previously called`latent`

which now fits negative Euclidean latent space model with a warning. The parameters are as follows:`d`

The dimension of the latent space.

`G`

The number of groups (0 for no clustering).

`var.mul`

In the absence of

`var`

, this argument will be used as a scaling factor for a function of average cluster size and latent space dimension to set`var`

. To set it in the`prior`

argument to`ergmm`

, use`Z.var.mul`

.`var`

If given, the scale parameter for the scale-inverse-chi-squared prior distribution of the within-cluster variance. To set it in the

`prior`

argument to`ergmm`

, use`Z.var`

.`var.df.mul`

In the absence of

`var.df`

, this argument is the multiplier for the square root of average cluster size, which serves in place of`var.df`

. To set it in the`prior`

argument to`ergmm`

, use`Z.var.df.mul`

.`var.df`

The degrees of freedom parameter for the scale-inverse-chi-squared prior distribution of the within-cluster variance. To set it in the

`prior`

argument to`ergmm`

, use`Z.var.df`

.`mean.var.mul`

In the absence of

`mean.var`

, the multiplier for a function of number of vertices and latent space dimension to set`mean.var`

. To set it in the`prior`

argument to`ergmm`

, use`Z.mean.var.mul`

.`mean.var`

The variance of the spherical Gaussian prior distribution of the cluster means. To set it in the

`prior`

argument to`ergmm`

, use`Z.mean.var`

.`pK.mul`

In the absence of

`pK`

, this argument is the multiplier for the square root of the average cluster size, which is used as`pK`

. To set it in the`prior`

argument to`ergmm`

, use`Z.pK`

.`pK`

The parameter of the Dirichilet prior distribution of cluster assignment probabilities. To set it in the

`prior`

argument to`ergmm`

, use`Z.pK`

.

The following parameters are associated with this term:

`Z`

Numeric matrix with rows being latent space positions.

`Z.K`

(when*\code{G}>0*)Integer vector of cluster assignments.

`Z.mean`

(when*\code{G}>0*)Numeric matrix with rows being cluster means.

`Z.var`

(when*\code{G}>0*)Depending on the model, either a numeric vector with within-cluster variances or a numeric scalar with the overal latent space variance.

`Z.pK`

(when*\code{G}>0*)Numeric vector of probabilities of a vertex being in a particular cluster.

`bilinear(d, G=0, var.mul=1/8, var=NULL, var.df.mul=1, var.df=NULL, mean.var.mul=1, mean.var=NULL, pK.mul=1, pK=NULL)`

*Bilinear latent model term, with optional clustering.*Adds a term to the model equal to the inner product of the latent positions:*sum(Z[i]*Z[j])*, where*Z[i]*and*Z[j]*are the positions of their respective actors in an unobserved social space. These positions may optionally have a finite spherical Gaussian mixture clustering structure.*Note: For a bilinear latent space effect, two actors being closer in the clustering sense does not necessarily mean that the expected value of a tie between them is higher. Thus, a warning is printed when this model is combined with clustering.*The parameters are as follows:`d`

The dimension of the latent space.

`G`

The number of groups (0 for no clustering).

`var.mul`

In the absence of

`var`

, this argument will be used as a scaling factor for a function of average cluster size and latent space dimension to set`var`

. To set it in the`prior`

argument to`ergmm`

, use`Z.var.mul`

.`var`

If given, the scale parameter for the scale-inverse-chi-squared prior distribution of the within-cluster variance. To set it in the

`prior`

argument to`ergmm`

, use`Z.var`

.`var.df.mul`

In the absence of

`var.df`

, this argument is the multiplier for the square root of average cluster size, which serves in place of`var.df`

. To set it in the`prior`

argument to`ergmm`

, use`Z.var.df.mul`

.`var.df`

The degrees of freedom parameter for the scale-inverse-chi-squared prior distribution of the within-cluster variance. To set it in the

`prior`

argument to`ergmm`

, use`Z.var.df`

.`mean.var.mul`

In the absence of

`mean.var`

, the multiplier for a function of number of vertices and latent space dimension to set`mean.var`

. To set it in the`prior`

argument to`ergmm`

, use`Z.mean.var.mul`

.`mean.var`

The variance of the spherical Gaussian prior distribution of the cluster means. To set it in the

`prior`

argument to`ergmm`

, use`Z.mean.var`

.`pK.mul`

In the absence of

`pK`

, this argument is the multiplier for the square root of the average cluster size, which is used as`pK`

. To set it in the`prior`

argument to`ergmm`

, use`Z.pK`

.`pK`

The parameter of the Dirichilet prior distribution of cluster assignment probabilities. To set it in the

`prior`

argument to`ergmm`

, use`Z.pK`

.

The following parameters are associated with this term:

`Z`

Numeric matrix with rows being latent space positions.

`Z.K`

(when*\code{G}>0*)Integer vector of cluster assignments.

`Z.mean`

(when*\code{G}>0*)Numeric matrix with rows being cluster means.

`Z.var`

(when*\code{G}>0*)Depending on the model, either a numeric vector with within-cluster variances or a numeric scalar with the overal latent space variance.

`Z.pK`

(when*\code{G}>0*)Numeric vector of probabilities of a vertex being in a particular cluster.

*Actor-specific effects*

`rsender(var=1, var.df=3)`

*Random sender effect.*Adds a random sender effect to the model, with normal prior centered around*0*and a variance that is estimated. Can only be used on directed networks. The parameters are as follows:`var`

The scale parameter for the scale-inverse-chi-squared prior distribution of the sender effect variance. To set it in the

`prior`

argument to`ergmm`

, use`sender.var`

.`var.df`

The degrees of freedom parameter for the scale-inverse-chi-squared prior distribution of the sender effect variance. To set it in the

`prior`

argument to`ergmm`

, use`sender.var.df`

.

The following parameters are associated with this term:

`sender`

Numeric vector of values of each vertex's random sender effect.

`sender.var`

Random sender effect's variance.

`rreceiver(var=1, var.df=3)`

*Random receiver effect.*Adds a random receiver effect to the model, with normal prior centered around*0*and a variance that is estimated. Can only be used on directed networks. The parameters are as follows:`var`

The scale parameter for the scale-inverse-chi-squared prior distribution of the receiver effect variance. To set it in the

`prior`

argument to`ergmm`

, use`receiver.var`

.`var.df`

The degrees of freedom parameter for the scale-inverse-chi-squared prior distribution of the receiver effect variance. To set it in the

`prior`

argument to`ergmm`

, use`receiver.var.df`

.

The following parameters are associated with this term:

`receiver`

Numeric vector of values of each vertex's random receiver effect.

`receiver.var`

Random receiver effect's variance.

`rsociality(var=1, var.df=3)`

*Random sociality effect.*Adds a random sociality effect to the model, with normal prior centered around*0*and a variance that is estimated. Can be used on either a directed or an undirected network. The parameters are as follows:`var`

The scale parameter for the scale-inverse-chi-squared prior distribution of the sociality effect variance. To set it in the

`prior`

argument to`ergmm`

, use`sociality.var`

.`var.df`

The degrees of freedom parameter for the scale-inverse-chi-squared prior distribution of the sociality effect variance. To set it in the

`prior`

argument to`ergmm`

, use`sociality.var.df`

.

The following parameters are associated with this term:

`sociality`

Numeric vector of values of each vertex's random sociality effect.

`sociality.var`

Random sociality effect's variance.

*Fixed Effects*

Each coefficient for a fixed effect covariate has a normal prior whose
mean and variance are set by the `mean`

and `var`

parameters
of the term. For those formula terms that add more than one covariate,
a vector can be given for mean and variance. If not, the vectors given
will be repeated until the needed length is reached.

`ergmm`

can use model terms implemented for the
`ergm`

package and via the
`ergm.userterms`

API. See
`ergm-terms`

for a list of available terms. If you wish to
specify the prior mean and variance, you can add them to the
call. E.g.,

`TERMNAME(..., mean=0, var=9)`

,

where
`...`

are the arguments for the `ergm`

term, will initialize
`TERMNAME`

with prior mean of 0 and prior variance of 9.

Some caveats:

`ergm`

has a binary and a valued mode. Regardless of the`family`

used, the*binary*variant of the`ergm`

term will be used in the linear predictor of the model.`ergm`

does not support modeling self-loops, so terms imported in this way will always have predictor`x[i,i]==0`

. This should not affect most situations, but if you absolutely must model self-loops and non-self-edges in one term, use the deprecated terms below.`latentnet`

only fits models with dyadic independence. Terms that induce dyadic dependence (e.g.,`triangles`

) can be used, but then the likelihood of the model will, effectively, be replaced with pseudolikelihood. (Note that under dyadic independence, the two are equal.)

Each parameter in this section adds one element to `beta`

vector.

`1(mean=0, var=9)`

a.k.a.`intercept`

a.k.a.`Intercept`

*Intercept.*This term serves as an intercept term, is included by default (though, as in`lm`

, it can be excluded by adding`+0`

or`-1`

into the model formula). It adds one covariate to the model, for which`x[i,j]=1`

for all`i`

and`j`

.It can be used explicitly to set prior mean and variance for the intercept term.

This term differs from the

`ergm`

's`edges`

term if`g`

has self-loops.`loopcov(attrname, mean=0, var=9)`

*Covariate effect on self-loops.*`attrname`

is a character string giving the name of a numeric (not categorical) attribute in the network's vertex attribute list. This term adds one covariate to the model, for which`x[i,i]=attrname(i)`

and`x[i,j]=0`

for`i!=j`

. This term only makes sense if`g`

has self-loops.`loopfactor(attrname, base=1, mean=0, var=9)`

*Factor attribute effect on self-loops.*The`attrname`

argument is a character vector giving one or more names of categorical attributes in the network's vertex attribute list. This term adds multiple covariates to the model, one for each of (a subset of) the unique values of the`attrname`

attribute (or each combination of the attributes given). Each of these covariates has`x[i,i]=1`

if`attrname(i)==l`

, where`l`

is that covariate's level, and`x[i,j]=0`

otherwise. To include all attribute values se`base=0`

– because the sum of all such statistics equals twice the number of self-loops and hence a linear dependency would arise in any model also including`loops`

. Thus, the`base`

argument tells which value(s) (numbered in order according to the`sort`

function) should be omitted. The default value,`base=1`

, means that the smallest (i.e., first in sorted order) attribute value is omitted. For example, if the “fruit” factor has levels “orange”, “apple”, “banana”, and “pear”, then to add just two terms, one for “apple” and one for “pear”, then set “banana” and “orange” to the base (remember to sort the values first) by using`nodefactor("fruit", base=2:3)`

. For an analogous term for quantitative vertex attributes, see`nodecov`

.`attrname`

is a character string giving the name of a numeric (not categorical) attribute in the network's vertex attribute list. This term adds one covariate to the model, for which`x[i,i]=attrname(i)`

and`x[i,j]=0`

for`i!=j`

. This term only makes sense if`g`

has self-loops.`latentcov(x, attrname=NULL, mean=0, var=9)`

*Edge covariates for the latent model.**Deprecated for networks without self-loops. Use*`edgecov`

instead.`x`

is either a matrix of covariates on each pair of vertices, a network, or an edge attribute on`g`

; if the latter, optional argument`attrname`

provides the name of the edge attribute to use for edge values.`latentcov`

can be called more than once, to model the effects of multiple covariates. Note that some covariates can be more conveniently specified using the following terms.`sendercov(attrname, force.factor=FALSE, mean=0, var=9)`

*Sender covariate effect.**Deprecated for networks without self-loops. Use*`nodeocov`

,`nodeofactor`

,`nodecov`

or`nodefactor`

instead.`attrname`

is a character string giving the name of an attribute in the network's vertex attribute list. If the attribute is numeric, This term adds one covariate to the model equaling`attrname(i)`

. If the attribute is not numeric or`force.factor==TRUE`

, this term adds*p-1*covariates to the model, where*p*is the number of unique values of`attrname`

. The*k*th such covariate has the value`attrname(i) == value(k+1)`

, where`value(k)`

is the*k*th smallest unique value of the`attrname`

attribute. This term only makes sense if`g`

is directed.`receivercov(attrname, force.factor=FALSE, mean=0, var=9)`

*Receiver covariate effect.**Deprecated for networks without self-loops. Use*`nodeicov`

,`nodeifactor`

,`nodecov`

or`nodefactor`

instead.`attrname`

is a character string giving the name of an attribute in the network's vertex attribute list. If the attribute is numeric, This term adds one covariate to the model equaling`attrname(j)`

. If the attribute is not numeric or`force.factor==TRUE`

, this term adds*p-1*covariates to the model, where*p*is the number of unique values of`attrname`

. The*k*th such covariate has the value`attrname(j) == value(k+1)`

, where`value(k)`

is the*k*th smallest unique value of the`attrname`

attribute. This term only makes sense if`g`

is directed.`socialitycov(attrname, force.factor=FALSE, mean=0, var=9)`

*Sociality covariate effect.**Deprecated for networks without self-loops. Use*`nodecov`

instead.`attrname`

is a character string giving the name of an attribute in the network's vertex attribute list. If the attribute is numeric, This term adds one covariate to the model equaling`attrname(i)+attrname(j)`

. If the attribute is not numeric or`force.factor==TRUE`

, this term adds*p-1*covariates to the model, where*p*is the number of unique values of`attrname`

. The*k*th such covariate has the value`attrname(i) == value(k+1) + attrname(j) == value(k+1)`

, where`value(k)`

is the*k*th smallest unique value of the`attrname`

attribute. This term makes sense whether or not`g`

is directed.

### See Also

`ergmm`

`terms-ergm`