#| purl = FALSE knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "teaching/", eval = FALSE, purl = FALSE )
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 \code{transformFun}.
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 \code{transformFun}, 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.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.