triad.classify
returns the Davis and Leinhardt classification of the triad indicated by tri
in the g
th graph of stack dat
.
triad.classify(dat, g=1, tri=c(1, 2, 3), mode=c("digraph",
"graph"))
a graph or graph stack.
the index of the graph to be analyzed.
a triple containing the indices of the triad to be classified.
string indicating the directedness of edges; "digraph"
implies a directed structure, whereas "graph"
implies an undirected structure.
A string containing the triad classification, or NA
if one or more edges were missing
Valued data and/or loops may cause strange behavior with this routine. Dichotomize/remove loops first.
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.
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.
# NOT RUN {
#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