[This article was first published on Engaging Market Research, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

As shown by the eye tracking lines and circles, there is more on the above screenshot than we can process simultaneously. Visual perception takes time, and we must track where the eye focuses by recording sequence and duration. The “50% off” and the menu items seems to draw the most attention, suggesting that the viewers were not men.

But what if the screen contained a correlation matrix?

The 23 mobile phone customer satisfaction ratings from an earlier post will serve as an illustration. The R code to access the data, calculate the correlation matrix and produce the graph can be found at the end of this blog entry.

All the correlations are positive, so we might tend to focus on the highest correlated pairs and then search for triplets with uniformly larger intercorrelations. Although 23×23 is not a particularly big matrix, it contains enough entities that uncovering a pattern is a difficult task.

Factor analysis is an option, yet it might impose more structure than desired. What if we believe that “overall quality” is an abstraction created from perceptions of the reliability and stability of the network and supportive services and not indicators reflecting the hidden presence of a latent quality dimension? That is, we want to maintain all those individual ratings and their separate pairwise connections as shown in the correlation matrix. Well, a graph might assist those of us with a short span of attention, for example, an undirected graph whose nodes are the individual ratings and whose edges represent the correlations between pairs of ratings.

The green indicate positive values, and the largest correlations have the thickest paths. Though everything is interconnected, the graph aligns neighbors with the strongest connections. One could track your eye movements as you attempt to discover some spatial organization: overall satisfaction centered amidst quality and service with retention and recommendation pulled toward good value and fair price. Alternatively, you might have noted four regions: quality toward the right, innovative and range of products/services near the top, service and support on the top-right side, and the final word on value and loyalty in the bottom-right corner.

Hopefully, the eye tracking analogy clarifies that the interpretative process involved in making sense of the graph mimics the graphical modeling that factors or decomposes a complex network into groupings of local relationships. There is just too many pairwise relationships for the graph or the person to assimilate it all in a single glance. Selective attention deconstructs the perceptual field, in this case, mobile phone customer experiences with their cellular providers.

Of course, all decompositions are not equally helpful for customers deciding whether or not to continue with their current product and provider. We must remember that our consumer is not alone and product purchase is not a solitary quest. In order to understand product reviews, marketing communications and user comments, the consumer tends to adopt the prevailing factorization shared by most in the market and shown in the above graph.

Finally, we are not choosing a factor analysis model because we do not believe in a directed graphical representation with hidden latent constructs generating the satisfaction ratings. To be clear, we could have run a factor analysis and identified factors. The factors, however, would be derivative and not generative. The undirected graph preserves the primacy of the separate ratings and represents the factors in the edges as local regions of higher connectivity.

R code to read the data, print the correlation matrix, and plot the correlation network map.

library("semPLS")
data(mobi)

# descriptive names for graph nodes
names(mobi)<-c("QualityExp",
"MeetNeedsExp",
"GoWrongExp",
"OverallSat",
"Fulfilled",
"IsIdeal",
"ComplaintHandling",
"SwitchForPrice",
"Recommend",
"Trusted",
"Stable",
"Responsible",
"Concerned",
"Innovative",
"OverallQuality",
"NetworkQuality",
"CustomerService",
"ServiceQuality",
"RangeProdServ",
"Reliability",
"ClearInfo",
"FairPrice",
"GoodValue")

# prints the correlation matrix
round(cor(mobi[,-9]),2)

# plots the correlation network map
library("qgraph")
qgraph(cor(mobi[,-9]), layout="spring",
labels=names(mobi[-9]), label.scale=FALSE,
label.cex=1, node.width=.5, minimum=.3)