| node-attr {ergm} | R Documentation |
This document describes the ways to specify nodal
attributes or functions of nodal attributes and which levels for
categorical factors to include. For the helper functions to
facilitate this, see node-attr-api.
Term nodal attribute arguments, typically called attr, attrs, by, or
on are interpreted as follows:
Extract the vertex attribute with this name.
Extract the vertex attributes and paste them together, separated by dots if the term expects categorical attributes and (typically) combine into a covariate matrix if it expects quantitative attributes.
The function is called on the LHS network, expected to return a vector or matrix of appropriate dimension. (Shorter vectors and matrix columns will be recycled as needed.)
The expression on the RHS of the formula is
evaluated in an environment of the vertex attributes of the
network, expected to return a vector or matrix of appropriate
dimension. (Shorter vectors and matrix columns will be recycled as
needed.) Within this expression, the network itself accessible as
either . or .nw. For example,
nodecov(~abs(Grade-mean(Grade))/network.size(.)) would return the
absolute difference of each actor's "Grade" attribute from its
network-wide mean, divided by the network size.
For categorical attributes, to select which levels are of interest
and their ordering, use the argument levels. Selection of nodes (from
the appropriate vector of nodal indices) is likewise handled as the
selection of levels, using the argument nodes. These arguments are interpreted
as follows:
I()Use the given list of levels as is.
Used for indexing of a list of
all possible levels (typically, unique values of the attribute) in
default older (typically lexicographic), i.e.,
sort(unique(attr))[levels]. In particular, levels=TRUE will
retain all levels. Negative values exclude. To specify numeric or
logical levels literally, wrap in I().
NULLRetain all possible levels; usually equivalent to
passing TRUE.
Use as is.
The function is called on the list of unique values of the attribute, the values of the attribute themselves, and the network itself, depending on its arity. Its return value is interpreted as above.
The expression on the RHS of the formula is
evaluated in an environment in which the network itself is
accessible as .nw, the list of unique values of the attribute as
. or as .levels, and the attribute vector itself as
.attr. Its return value is interpreted as above.
Note that levels or nodes often has a default that is sensible for the
term in question.
data(faux.mesa.high)
# Activity by grade with a baseline grade excluded:
summary(faux.mesa.high~nodefactor(~Grade))
# Retain all levels:
summary(faux.mesa.high~nodefactor(~Grade, levels=TRUE)) # or levels=NULL
# Mixing between lower and upper grades:
summary(faux.mesa.high~mm(~Grade>=10))
# Mixing between grades 7 and 8 only:
summary(faux.mesa.high~mm("Grade", levels=I(c(7,8))))
# or
summary(faux.mesa.high~mm("Grade", levels=1:2))
# or using levels2 (see ? mm) to filter the combinations of levels,
summary(faux.mesa.high~mm("Grade",
levels2=~sapply(.levels,
function(l)
l[[1]]%in%c(7,8) && l[[2]]%in%c(7,8))))