gcor: Find the (Product-Moment) Correlation Between Two or More...

View source: R/gmultiv.R

gcorR Documentation

Find the (Product-Moment) Correlation Between Two or More Labeled Graphs


gcor finds the product-moment correlation between the adjacency matrices of graphs indicated by g1 and g2 in stack dat (or possibly dat2). Missing values are permitted.


gcor(dat, dat2=NULL, g1=NULL, g2=NULL, diag=FALSE, mode="digraph")



one or more input graphs.


optionally, a second stack of graphs.


the indices of dat reflecting the first set of graphs to be compared; by default, all members of dat are included.


the indices or dat (or dat2, if applicable) reflecting the second set of graphs to be compared; by default, all members of dat are included.


boolean indicating whether or not the diagonal should be treated as valid data. Set this true if and only if the data can contain loops. diag is FALSE by default.


string indicating the type of graph being evaluated. "Digraph" indicates that edges should be interpreted as directed; "graph" indicates that edges are undirected. mode is set to "digraph" by default.


The (product moment) graph correlation between labeled graphs G and H is given by

cor(G,H) = cov(G,V)/sqrt(cov(G,G)cov(H,H))

where the graph covariance is defined as

cov(G,H) = sum( (A^G_ij-mu_G)(A^H_ij-mu_H), {i,j} )/Choose(|V|,2)

(with A^G being the adjacency matrix of G). The graph correlation/covariance is at the center of a number of graph comparison methods, including network variants of regression analysis, PCA, CCA, and the like.

Note that gcor computes only the correlation between uniquely labeled graphs. For the more general case, gscor is recommended.


A graph correlation matrix


The gcor routine is really just a front-end to the standard cor method; the primary value-added is the transparent vectorization of the input graphs (with intelligent handling of simple versus directed graphs, diagonals, etc.). As noted, the correlation coefficient returned is a standard Pearson's product-moment coefficient, and output should be interpreted accordingly. Classical null hypothesis testing procedures are not recommended for use with graph correlations; for nonparametric null hypothesis testing regarding graph correlations, see cugtest and qaptest. For multivariate correlations among graph sets, try netcancor.


Carter T. Butts buttsc@uci.edu


Butts, C.T., and Carley, K.M. (2001). “Multivariate Methods for Interstructural Analysis.” CASOS Working Paper, Carnegie Mellon University.

Krackhardt, D. (1987). “QAP Partialling as a Test of Spuriousness.” Social Networks, 9, 171-86

See Also

gscor, gcov, gscov


#Generate two random graphs each of low, medium, and high density

#Examine the correlation matrix

sna documentation built on June 1, 2022, 9:06 a.m.

Related to gcor in sna...