R: Generate Blockmodels Based on Partitions of Network Positions

blockmodel {sna} | R Documentation

## Generate Blockmodels Based on Partitions of Network Positions

### Description

Given a set of equivalence classes (in the form of an `equiv.clust` object, `hclust` object, or membership vector) and one or more graphs, `blockmodel` will form a blockmodel of the input graph(s) based on the classes in question, using the specified block content type.

### Usage

    blockmodel(dat, ec, k=NULL, h=NULL, block.content="density",
        plabels=NULL, glabels=NULL, rlabels=NULL, mode="digraph",
        diag=FALSE)

### Arguments

`dat` | one or more input graphs.
`ec` | equivalence classes, in the form of an object of class `equiv.clust` or `hclust`, or a membership vector.
`k` | the number of classes to form (using `cutree`).
`h` | the height at which to split classes (using `cutree`).
`block.content` | string indicating block content type (see below).
`plabels` | a vector of labels to be applied to the individual nodes.
`glabels` | a vector of labels to be applied to the graphs being modeled.
`rlabels` | a vector of labels to be applied to the (reduced) roles.
`mode` | a string indicating whether we are dealing with graphs or digraphs.
`diag` | a boolean indicating whether loops are permitted.

### Details

Unless a vector of classes is specified, `blockmodel` forms its eponymous models by using `cutree` to cut an equivalence clustering in the fashion specified by `k` and `h`. After forming clusters (roles), the input graphs are reordered and blockmodel reduction is applied. Currently supported reductions are:

1. `density`: block density, computed as the mean value of the block

2. `meanrowsum`: mean row sums for the block

3. `meancolsum`: mean column sums for the block

4. `sum`: total block sum

5. `median`: median block value

6. `min`: minimum block value

7. `max`: maximum block value

8. `types`: semi-intelligent coding of blocks by “type.” Currently recognized types are (in order of precedence) “`NA`” (i.e., blocks with no valid data), “null” (i.e., all values equal to zero), “complete” (i.e., all values equal to 1), “1 covered” (i.e., all rows/cols contain a 1), “1 row-covered” (i.e., all rows contain a 1), “1 col-covered” (i.e., all cols contain a 1), and “other” (i.e., none of the above).

Density or median-based reductions are probably the most interpretable for most conventional analyses, though type-based reduction can be useful in examining certain equivalence class hypotheses (e.g., 1 covered and null blocks can be used to infer regular equivalence classes). Once a given reduction is performed, the model can be analyzed and/or expansion can be used to generate new graphs based on the inferred role structure.

### Value

An object of class `blockmodel`.

### Author(s)

Carter T. Butts buttsc@uci.edu

### References

Doreian, P.; Batagelj, V.; and Ferligoj, A. (2005). Generalized Blockmodeling. Cambridge: Cambridge University Press.

White, H.C.; Boorman, S.A.; and Breiger, R.L. (1976). “Social Structure from Multiple Networks I: Blockmodels of Roles and Positions.” American Journal of Sociology, 81, 730-779.

### See Also

`equiv.clust`, `blockmodel.expand`

### Examples

    #Create a random graph with _some_ edge structure
    g.p<-sapply(runif(20,0,1),rep,20)  #Create a matrix of edge
                                       #probabilities
    g<-rgraph(20,tprob=g.p)            #Draw from a Bernoulli graph
                                       #distribution

    #Cluster based on structural equivalence
    eq<-equiv.clust(g)

    #Form a blockmodel with distance relaxation of 10
    b<-blockmodel(g,eq,h=10)
    plot(b)                            #Plot it

[Package sna version 2.6 Index]