Learn R Programming

sna (version 2.7-1)

triad.classify: Compute the Davis and Leinhardt Classification of a Given Triad

Description

triad.classify returns the Davis and Leinhardt classification of the triad indicated by tri in the gth graph of stack dat.

Usage

triad.classify(dat, g=1, tri=c(1, 2, 3), mode=c("digraph", 
    "graph"))

Value

A string containing the triad classification, or NA if one or more edges were missing

Arguments

dat

a graph or graph stack.

g

the index of the graph to be analyzed.

tri

a triple containing the indices of the triad to be classified.

mode

string indicating the directedness of edges; "digraph" implies a directed structure, whereas "graph" implies an undirected structure.

Author

Carter T. Butts buttsc@uci.edu

Warning

Valued data and/or loops may cause strange behavior with this routine. Dichotomize/remove loops first.

Details

Every unoriented directed triad may occupy one of 16 distinct states. These states were used by Davis and Leinhardt as a basis for classifying triads within a larger structure; the distribution of triads within a graph (see triad.census), for instance, is linked to a range of substantive hypotheses (e.g., concerning structural balance). The Davis and Leinhardt classification scheme describes each triad by a string of four elements: the number of mutual (complete) dyads within the triad; the number of asymmetric dyads within the triad; the number of null (empty) dyads within the triad; and a configuration code for the triads which are not uniquely distinguished by the first three distinctions. The complete list of classes is as follows.

003

\(a \not\leftrightarrow b \not\leftrightarrow c, a \not\leftrightarrow c\)

012

\(a \rightarrow b \not\leftrightarrow c, a \not\leftrightarrow c\)

102

\(a \leftrightarrow b \not\leftrightarrow c, a \not\leftrightarrow c\)

021D

\(a \leftarrow b \rightarrow c, a \not\leftrightarrow c\)

021U

\(a \rightarrow b \leftarrow c, a \not\leftrightarrow c\)

021C

\(a \rightarrow b \rightarrow c, a \not\leftrightarrow c\)

111D

\(a \not\leftrightarrow b \rightarrow c, a \leftrightarrow c\)

111U

\(a \not\leftrightarrow b \leftarrow c, a \leftrightarrow c\)

030T

\(a \rightarrow b \leftarrow c, a \rightarrow c\)

030C

\(a \leftarrow b \leftarrow c, a \rightarrow c\)

201

\(a \leftrightarrow b \not\leftrightarrow c, a \leftrightarrow c\)

120D

\(a \leftarrow b \rightarrow c, a \leftrightarrow c\)

120U

\(a \rightarrow b \leftarrow c, a \leftrightarrow c\)

120C

\(a \rightarrow b \rightarrow c, a \leftrightarrow c\)

210

\(a \rightarrow b \leftrightarrow c, a \leftrightarrow c\)

300

\(a \leftrightarrow b \leftrightarrow c, a \leftrightarrow c\)

These codes are returned by triad.classify as strings. In the undirected case, only four triad states are possible (corresponding to the number of edges in the triad). These are evaluated for mode=="graph", with the return value being the number of edges.

References

Davis, J.A. and Leinhardt, S. (1972). ``The Structure of Positive Interpersonal Relations in Small Groups.'' In J. Berger (Ed.), Sociological Theories in Progress, Volume 2, 218-251. Boston: Houghton Mifflin.

Wasserman, S., and Faust, K. (1994). Social Network Analysis: Methods and Applications. Cambridge: Cambridge University Press.

See Also

triad.census, gtrans

Examples

Run this code
#Generate a random graph
g<-rgraph(10)

#Classify the triads (1,2,3) and (2,3,4)
triad.classify(g,tri=c(1,2,3))
triad.classify(g,tri=c(1,2,3))

#Plot the triads in question
gplot(g[1:3,1:3])
gplot(g[2:4,2:4])

Run the code above in your browser using DataLab