This vignette summarizes effects that are implemented in
goldfish
and are thus available to be used with
actor-oriented DyNAM models and tie-oriented Relational Event
Models.
Effect functions have the following 5 arguments:
data.frame$attribute
), see documentation of
defineNodes()
for details.FALSE
, it means that updates involving self-ties
are ignore during the statistics update.FALSE
means additional ties are taken into account). The
default value is FALSE
. Only available for structural
effects.TRUE
means it
relies also on the number of ties). The default value is
FALSE
.Inf
meaning that no windows are applied to the effect. Window size can be
specified as a number in seconds (i.e. an hour is 3600 seconds), or as a
string stating the number of time units in the format “number unit”, for
example “30 seconds”, “1 minute”, “2 hours”, “3 days”, “4 weeks”, “5
months”, or “6 years”. Note: The time units are converted to
seconds using their most common lengths in seconds.weighted == TRUE
.tertius
and tertiusDiff
. The function used as
argument is applied to aggregated statistic.indegree
,
outdegree
and nodeTrans
in the case of a REM
model model = "REM"
. In the default case of
type = "alter"
, the effect returns change statistics for
the potential receivers. In the case where type = "ego"
,
the effect returns change statistics for the potential sender. This
argument does not apply in the case of the DyNAM models: the
DyNAM-choice submodel only considers change statistics for potential
receivers type = "alter"
, while the DyNAM-rate submodel
only considers change statistics for potential senders
type = "ego"
.The following table summaries whether the corresponding arguments can be used for the effects or not.
isTwoMode | ignoreRep | weighted | window | transformFun | aggregateFun | type | |||
---|---|---|---|---|---|---|---|---|---|
Node/actor statistics | Structural | indeg | √ | √ | √ | √ | √ | × | √ |
outdeg | √ | √ | √ | √ | √ | × | √ | ||
nodeTrans | × | √ | √ | √ | √ | × | √ | ||
Attribute | ego | √ | × | × | × | × | × | × | |
alter | √ | × | × | × | × | × | × | ||
Structural + attribute | tertius | √ | √ | √ | √ | √ | √ | √ | |
Dyadic statistics | Structural | tie | √ | √ | √ | √ | √ | × | × |
inertia | √ | √ | √ | √ | √ | × | × | ||
recip | √ | √ | √ | √ | √ | × | × | ||
Attribute | same | √ | × | × | × | √ | × | × | |
diff | √ | × | × | × | √ | × | × | ||
sim | √ | × | × | × | √ | × | × | ||
egoAlterInt | √ | × | × | × | √ | × | × | ||
Structural + attribute | tertiusDiff | √ | √ | √ | √ | √ | √ | × | |
Closure effects | trans | × | √ | × | √ | √ | × | × | |
cycle | × | √ | × | √ | √ | × | × | ||
commonSender | √ | √ | × | √ | √ | × | × | ||
commonReceiver | √ | √ | × | √ | √ | × | × | ||
four | √ | √ | × | √ | √ | × | × | ||
mixedTrans | × | √ | × | √ | √ | × | × | ||
mixedCycle | × | √ | × | √ | √ | × | × | ||
mixedCommonSender | × | √ | × | √ | √ | × | × | ||
mixedCommonReceiver | × | √ | × | √ | √ | × | × |
Note that the use of some effects (combinations) are
ill-advised. For example, using
tie(network, ignoreRep = FALSE)
, where the network refers
to the dependent network, will always result in a change statistic of
zero, and thus cannot be used.
TRUE
and 0 in other
case.weighted = TRUE
, similarly we refer as the unweighted
statistics when weighted = FALSE
.isTwoMode
is used. In the default case when
isTwoMode = FALSE
self ties are excluded in the calculation
of the change statistics.effect | rate | choice | choice coordination |
---|---|---|---|
indeg | √ | √ | √ |
outdeg | √ | √ | × |
nodeTrans | √ | √ | √ |
Here we refer to ego type when type = "ego"
and alter
type when type = "alter"
.
indeg()
)indeg(network, isTwoMode = FALSE, weighted = FALSE, window = Inf,
ignoreRep = FALSE, type = c("alter", "ego"), transformFun = identity)
\[\begin{align} r(i, t, x) &= \begin{cases} \sum_{j}{I(x(t)_{ji}>0)} & \text{unweighted}\\ \sum_{j}{x(t)_{ji}} & \text{weighted} \end{cases} && \text{ego type}\\ s(i,j, t, x) &= \begin{cases} \sum_{l}{I(x(t)_{lj}>0)} & \text{unweighted}\\ \sum_{l}{x(t)_{lj}} & \text{weighted} \end{cases} && \text{alter type} \end{align}\]
type = "ego"
) or for receiver j
(type = "alter"
).defineNetwork(net, directed = FALSE)
.The degree can be transform with .
outdeg()
)outdeg(network, isTwoMode = FALSE, weighted = FALSE, window = Inf,
ignoreRep = FALSE, type = c("alter", "ego"), transformFun = identity)
\[\begin{align} r(i, t, x) &= \begin{cases} \sum_{j}{I(x(t)_{ij}>0)} & \text{unweighted}\\ \sum_{j}{x(t)_{ij}} & \text{weighted} \end{cases} && \text{ego type}\\ s(i,j, t, x) &= \begin{cases} \sum_{l}{I(x(t)_{jl}>0)} & \text{unweighted}\\ \sum_{l}{x(t)_{jl}} & \text{weighted} \end{cases} && \text{alter type} \end{align}\]
type
allows to choose
whether to use the outdegree effect for sender \(i\) (type = "ego"
) or for
receiver \(j\)
(type = "alter"
).nodeTrans()
)nodeTrans(network, isTwoMode = FALSE, window = Inf, ignoreRep = FALSE,
type = c("alter", "ego"), transformFun = identity)
\[\begin{align} r(i, t, x) &= \sum_{jk}{I(x(t)_{ik}>0)I(x(t)_{kj}>0)I(x(t)_{ij}>0)} && \text{ego type}\\ s(i,j, t, x) &= \sum_{kl}{I(x(t)_{jk}>0)I(x(t)_{kl}>0)I(x(t)_{jl}>0)} && \text{alter type} \end{align}\]
Embeddedness in transitive structures as a source node.
type
allows to choose whether to use the node embeddedness
transitivity effect for sender \(i\)
(type = "ego"
) or for receiver \(j\) (type = "alter"
).The statistic can be transform with , there is not weighted version for this effect.
effect | rate | choice | choice coordination |
---|---|---|---|
ego | √ | × | × |
alter | × | √ | × |
ego()
)ego(attribute, isTwoMode = FALSE)
\[\begin{align} r(i, t, z) &= z(t)_i \end{align}\]
alter()
)alter(attribute, isTwoMode = FALSE)
\[\begin{align} s(i, j, t, z) &= z(t)_j \end{align}\]
effect | rate | choice | choice coordination |
---|---|---|---|
tertius | √ | √ | √ |
tertius()
)tertius(network, attribute, isTwoMode = FALSE, window = Inf,
ignoreRep = FALSE, type = c("alter", "ego"), transformFun = identity,
aggregateFun = function(x) mean(x, na.rm = TRUE))
\[\begin{align} r(i, t, x, z) &= \frac{\sum_{j:~x(t)_{ji} > 0}{z(t)_j}}{\sum_{j}{I(x(t)_{ji} > 0)}} && \text{ego type}\\ s(i,j, t, x, z) &= \frac{\sum_{k:~x(t)_{kj} > 0}{z(t)_k}}{\sum_{k}{I(x(t)_{kj} > 0)}} && \text{alter type} \end{align}\]
aggregateFun
) value of its in-neighbors (\(\forall j:~ x[j, i] > 0\)) in a
covariate network (‘ego’ type).aggregateFun
) value of its in-neighbors (\(\forall k:~ x[k, j] > 0\)) in a
covariate network (‘alter’ type).aggregateFun
) value of its in-neighbors in a covariate
network. The argument type
allows to choose whether to use
the tertius effect for sender \(i\)
(type = "ego"
) or for receiver \(j\) (type = "alter"
).Note: When a node does not have in-neighbors, the tertius effect is impute as the average of the aggregate values of nodes with in-neighbors.
effect | rate | choice | choice coordination |
---|---|---|---|
tie | × | √ | √ |
inertia | × | √ | √ |
recip | × | √ | × |
tie()
)tie(network, weighted = FALSE, window = Inf, ignoreRep = FALSE,
transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \begin{cases} I(x(t)_{ij}>0) & \text{unweighted}\\ x(t)_{ij} & \text{weighted} \end{cases} \end{equation}\]
Tendency to create an event \(i\rightarrow
j\) if the tie \(i\rightarrow
j\) exists in a covariate network. Parameter
weighted
can be set to TRUE
if the value in
the covariate network for the dyad \(i\rightarrow j\) is to be taken as a
statistic. It can be transformed by using transformFun
(This might make sense when weighted = TRUE
).
inertia()
)inertia(network, weighted = FALSE, window = Inf, transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \begin{cases} I(x(t)_{ij}>0) & \text{unweighted}\\ x(t)_{ij} & \text{weighted} \end{cases} \end{equation}\]
Usually used as the “intercept” for the choice submodel,
inertia is the tendency to create an event \(i\rightarrow j\) if the event \(i\rightarrow j\) happened before. It can be
interpreted as the differential tendency to update existing ties rather
than creating new ones. Thus, inertia is similar to
tie, but defined on the network to which the dependent events
relate. Parameter weighted
can be set to TRUE
if the count of past events \(i\rightarrow
j\) is to be taken as a statistic. It can be transformed by using
transformFun
(this might make sense when
weighted = TRUE
). Note:
inertia
can never be used in combination with a
ignoreRep = TRUE
parameter as this would replace all
positive statistics with zeros.
recip()
)recip(network, weighted = FALSE, window = Inf, ignoreRep = FALSE,
transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \begin{cases} I(x(t)_{ji}>0) & \text{unweighted}\\ x(t)_{ji} & \text{weighted} \end{cases} \end{equation}\]
Effect of a tie j->i on event \(i\rightarrow j\). Recip cannot be used with binary = T in undirected dependent network
Tendency to create an event \(i\rightarrow
j\) if one or several \(j\rightarrow
i\) happened before. Parameter weighted
can be set
to TRUE
if the count/weight of \(j\rightarrow i\) events/ties is to be taken
as a statistic. It can be transformed by using transformFun
(this might make sense when weighted = TRUE
). This effect
cannot be used for two-mode networks and for DyNAM-choice_coordination
submodel.
effect | rate | choice | choice coordination |
---|---|---|---|
same | × | √ | √ |
diff | × | √ | √ |
sim | × | √ | √ |
egoAlterInt | × | √ | √ |
same()
)same(attribute)
\[\begin{equation} s(i,j, t, z) = I(z(t)_i = z(t)_j) \end{equation}\]
Homophily (same value). The tendency of an event \(i\rightarrow j\) to happen if actors i and j have the same attribute value. This effect cannot be used for two-mode networks and for the DyNAM-rate submodel.
diff()
)diff(attribute, transformFun = abs)
\[\begin{equation} s(i,j, t, z) = |z(t)_i - z(t)_j| \end{equation}\]
Heterophily. The tendency of an event \(i\rightarrow j\) to happen if actors i and
j have different attribute values (high absolute differences regarding
attribute if transformFun = abs
). This effect cannot be
used for two-mode networks.
sim()
)sim(attribute, transformFun = abs)
\[\begin{equation} s(i,j, t, z) = -|z(t)_i - z(t)_j| \end{equation}\]
Homophily (similar value). The tendency of an event \(i\rightarrow j\) to happen if actors i and
j have similar attribute
values (low absolute differences
regarding attribute
if transformFun = abs
).
This effect cannot be used for two-mode networks.
egoAlterInt()
)egoAlterInt(attribute = list(attribute1, attribute2))
\[\begin{equation} s(i,j, t, z^{(1)}, z^{(2)}) = z(t)_i^{(1)} * z(t)_j^{(2)} \end{equation}\]
In a model that includes an alter effect using
attribute2
, the ego alter interaction helps to study the
tendency to create an event \(i \rightarrow
j\) when \(j\) score high on
attribute2
moderated by the score of ego on
attribute1
.
effect | rate | choice | choice coordination |
---|---|---|---|
tertiusDiff | × | √ | √ |
tertiusDiff()
)tertiusDiff(network, attribute, isTwoMode = FALSE, weighted = FALSE,
window = Inf, ignoreRep = FALSE, transformFun = abs,
aggregateFun = function(x) mean(x, na.rm = TRUE))
\[\begin{equation} s(i,j, t, x, z) = \left|\frac{z(t)_i - \sum_{k:~x(t)_{kj} > 0}{z(t)_k}}{ \sum_{k}{I(x(t)_{kj} > 0)}}\right| \end{equation}\]
The tendency to create an event \(i\rightarrow j\) when \(i\) has a similar value as \(j\) aggregate (aggregateFun
)
value of its in-neighbors (\(\forall j:~ x[j,
i] > 0\)). Note: When the node \(j\) does not have in-neighbors, its value
is imputed by the average of the similarities computed for the pairs
\(i\), \(k\) for all \(k\) that has at least one in-neighbor.
effect | rate | choice | choice coordination |
---|---|---|---|
trans | × | √ | √ |
cycle | × | √ | × |
commonSender | × | √ | × |
commonReceiver | × | √ | × |
four | × | √ | √ |
mixedTrans | × | √ | √ |
mixedCycle | × | √ | × |
mixedCommonSender | × | √ | × |
mixedCommonReceiver | × | √ | × |
trans()
)trans(network, window = Inf, ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \sum_{k}{I(x(t)_{ik}>0)I(x(t)_{kj}>0)} \end{equation}\]
It is the tendency to create an event \(i\rightarrow j\) when it closes more
two-paths (\(i\rightarrow k\rightarrow
j\)) observed in the past events in a covariate
network
. It can be transformed by using
transformFun
. This effect cannot be used for two-mode
networks.
cycle()
)cycle(network, window = Inf, ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \sum_{k}{I(x(t)_{jk}>0)I(x(t)_{ki}>0)} \end{equation}\]
It is the tendency to create an event \(i\rightarrow j\) when it closes more
two-paths (\(j\rightarrow k\rightarrow
i\)) observed in the past events in a covariate
network
. It can be transformed by using
transformFun
. This effect cannot be used for two-mode
networks and DyNAM-choice_coordination.
commonSender()
)commonSender(network, window = Inf, ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \sum_{k}{I(x(t)_{ki}>0)I(x(t)_{kj}>0)} \end{equation}\]
It is the tendency to create an event \(i\rightarrow j\) when it closes more
two-paths (\(i\leftarrow k\rightarrow
j\)) observed in the past events in a covariate
network
. It can be transformed by using
transformFun
.. This effect cannot be used for two-mode
networks and DyNAM-choice_coordination.
commonReceiver()
)commonReceiver(network, window = Inf, ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \sum_{k}{I(x(t)_{ik}>0)I(x(t)_{jk}>0)} \end{equation}\]
It is the tendency to create an event \(i\rightarrow j\) when it closes more
two-paths (\(i\rightarrow k\leftarrow
j\)) observed in the past events in a covariate
network
. It can be transformed by using
transformFun
.. This effect cannot be used for two-mode
networks and DyNAM-choice_coordination.
four()
)four(network, isTwoMode = FALSE, window = Inf, ignoreRep = FALSE,
transformFun = identity)
\[\begin{equation} s(i,j, t, x) = \sum_{kl}{I(x(t)_{ik}>0)I(x(t)_{lk}>0)I(x(t)_{lj}>0)} \end{equation}\]
Closure of three-paths. It is the tendency to create an event \(i\rightarrow j\) when it closes more
three-paths (\(i\rightarrow k\leftarrow
l\rightarrow j\)) observed in the past events in a covariate
network
. It can be transformed by using
transformFun
.. This effect cannot be used for two-mode
networks and DyNAM-choice_coordination.
mixedTrans()
)mixedTrans(network = list(network1, network2), window = Inf,
ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x^{(1)}, x^{(2)}) = \sum_{k}{I(x(t)_{ik}^{(1)}>0)I(x(t)_{kj}^{(2)}>0)} \end{equation}\]
Transitivity within 2 networks. It is the tendency to create an event
\(i\rightarrow j\) when it closes more
two-paths with events (\(i\rightarrow
k\)) in network1
and (\(k\rightarrow j\)) in network2
observed in the past events in the covariate networks. It can be
transformed by using transformFun
.. This effect cannot be
used for two-mode networks.
mixedCycle()
)mixedCycle(network = list(network1, network2), window = Inf,
ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x^{(1)}, x^{(2)}) = \sum_{k}{I(x(t)_{ki}^{(1)}>0)I(x(t)_{jk}^{(2)}>0)} \end{equation}\]
Cycle within 2 networks. It is the tendency to create an event \(i\rightarrow j\) when it closes more
two-paths with events (\(k\rightarrow
i\)) in network1
and (\(j\rightarrow k\)) in network2
observed in the past events in the covariate networks. It can be
transformed by using transformFun
.. This effect cannot be
used for two-mode networks and DyNAM-choice_coordination.
mixedCommonSender()
)mixedCommonSender(network = list(network1, network2), window = Inf,
ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x^{(1)}, x^{(2)}) = \sum_{k}{I(x(t)_{ki}^{(1)}>0)I(x(t)_{kj}^{(2)}>0)} \end{equation}\]
Closure common sender within 2 networks. It is the tendency to create
an event \(i\rightarrow j\) when it
closes more two-paths with events (\(k\rightarrow i\)) in network1
and (\(k\rightarrow j\)) in
network2
observed in the past events in the covariate
networks. It can be transformed by using transformFun
..
This effect cannot be used for two-mode networks and
DyNAM-choice_coordination.
mixedCommonReceiver()
)mixedCommonReceiver(network = list(network1, network2), window = Inf,
ignoreRep = FALSE, transformFun = identity)
\[\begin{equation} s(i,j, t, x^{(1)}, x^{(2)}) = \sum_{k}{I(x(t)_{ik}^{(1)}>0)I(x(t)_{jk}^{(2)}>0)} \end{equation}\]
Closure receiver within 2 networks. It is the tendency to create an
event \(i\rightarrow j\) when it closes
more two-paths with events (\(i\rightarrow
k\)) in network1
and (\(j\rightarrow k\)) in network2
observed in the past events in the covariate networks. It can be
transformed by using transformFun
.. This effect cannot be
used for two-mode networks and DyNAM-choice_coordination.