R: ERGM Predictors and response for logistic regression...

ergmMPLE {ergm} | R Documentation

## ERGM Predictors and response for logistic regression calculation of MPLE

### Description

Return the predictor matrix, response vector, and vector of weights that can be used to calculate the MPLE for an ERGM.

### Usage

    ergmMPLE(formula, fitmodel=FALSE, output=c("matrix","array", "fit"),
             as.initialfit = TRUE, control=control.ergm(),
             verbose=FALSE, ...)

### Arguments

`formula` | An ERGM formula. See `ergm`.
`fitmodel` | Deprecated. Use `output="fit"` instead.
`output` | Character, partially matched. See Value.
`as.initialfit` | Logical. Specifies whether terms are initialized with argument `initialfit==TRUE` (the default). Generally, if `TRUE`, all curved ERGM terms will be treated as having their curved parameters fixed. See Example.
`control` | A list of control parameters for tuning the fitting of an ERGM. Most of these parameters are irrelevant in this context. See `control.ergm` for details about all of the control parameters.
`verbose` | Logical; if `TRUE`, the program will print out some additional information.
`...` | Additional arguments, to be passed to lower-level functions.

### Details

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.

### Value

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.

### See Also

`ergm`, `glm`

### Examples

    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)

[Package ergm version 3.8.0 Index]