ERGM Predictors and response for logistic regression calculation of MPLE
Return the predictor matrix, response vector, and vector of weights that can be used to calculate the MPLE for an ERGM.
ergmMPLE( formula, constraints = ~., fitmodel = FALSE, output = c("matrix", "array", "fit"), as.initialfit = TRUE, control = control.ergm(), verbose = FALSE, ... )
formula, constraints |
An ERGM formula and a constraint formula. See |
fitmodel |
Deprecated. Use |
output |
Character, partially matched. See Value. |
as.initialfit |
Logical. Specifies whether terms are initialized with
argument |
control |
A list of control parameters for tuning the fitting of an
ERGM. Most of these parameters are irrelevant in this context. See
|
verbose |
Logical; if |
... |
Additional arguments, to be passed to lower-level functions. |
The MPLE for an ERGM is calculated by first finding the matrix of change
statistics. Each row of this matrix is associated with a particular pair
(ordered or unordered, depending on whether the network is directed or
undirected) of nodes, and the row equals the change in the vector of network
statistics (as defined in formula
) when that pair is toggled from a 0
(no edge) to a 1 (edge), holding all the rest of the network fixed. The
MPLE results if we perform a logistic regression in which the predictor
matrix is the matrix of change statistics and the response vector is the
observed network (i.e., each entry is either 0 or 1, depending on whether
the corresponding edge exists or not).
Using output="matrix"
, note that the result of the fit may be
obtained from the glm
function, as shown in the examples
below.
When output="array"
, the MPLE.max.dyad.types
control parameter
must be greater than network.dyadcount(.)
of the response network, or
not all elements of the array that ought to be filled in will be.
If output=="matrix"
(the default), then only the response, predictor,
and weights are returned; thus, the MPLE may be found by hand or the vector
of change statistics may be used in some other way. To save space, the
algorithm will automatically search for any duplicated rows in the predictor
matrix (and corresponding response values). ergmMPLE
function will
return a list with three elements, response
, predictor
, and
weights
, respectively the response vector, the predictor matrix, and
a vector of weights, which are really counts that tell how many times each
corresponding response, predictor pair is repeated.
If output=="array"
, a list with similarly named three elements is
returned, but response
is formatted into a sociomatrix;
predictor
is a 3-dimensional array of with cell
predictor[t,h,k]
containing the change score of term k
for
dyad (t
,h
); and weights
is also formatted into a
sociomatrix, with an element being 1 if it is to be added into the
pseudolikelihood and 0 if it is not.
In particular, for a unipartite network, cells corresponding to self-loops,
i.e., predictor[i,i,k]
will be NA
and weights[i,i]
will
be 0; and for a unipartite undirected network, lower triangle of each
predictor[,,k]
matrix will be set to NA
, with the lower
triangle of weights
being set to 0.
If output=="fit"
, then ergmMPLE
simply calls the
ergm
function with the estimate="MPLE"
option set,
returning an object of class ergm
that gives the fitted
pseudolikelihood model.
data(faux.mesa.high) formula <- faux.mesa.high ~ edges + nodematch("Sex") + nodefactor("Grade") mplesetup <- ergmMPLE(formula) # Obtain MPLE coefficients "by hand": glm(mplesetup$response ~ . - 1, data = data.frame(mplesetup$predictor), weights = mplesetup$weights, family="binomial")$coefficients # Check that the coefficients agree with the output of the ergm function: ergmMPLE(formula, output="fit")$coef # We can also format the predictor matrix into an array: mplearray <- ergmMPLE(formula, output="array") # The resulting matrices are big, so only print the first 5 actors: mplearray$response[1:5,1:5] mplearray$predictor[1:5,1:5,] mplearray$weights[1:5,1:5] formula2 <- faux.mesa.high ~ gwesp(0.5,fix=FALSE) # The term is treated as fixed: only the gwesp term is returned: colnames(ergmMPLE(formula2, as.initialfit=TRUE)$predictor) # The term is treated as curved: individual esp# terms are returned: colnames(ergmMPLE(formula2, as.initialfit=FALSE)$predictor)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.