Customer Satisfaction and Loyalty: Structural Equation Model or One-Dimensional Dissonance

[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.

Causal thinking is seductive. Product experience comes first, then feelings of satisfaction, and finally intentions to continue as a customer. Although customer satisfaction and loyalty data tend to be collected all at one time within the same questionnaire, who does not see the work of the invisible hand of causation? We call product and service ratings “drivers” of satisfaction because it is so easy to imagine experience impacting affect and intention. Thus, no one will be surprised to see the R package semPLS (Structural Equation Modeling using Partial Least Squares) using the customer satisfaction model as its example.

However, what if we were to ignore the causal model and look only at the data? The mobi dataset from the semPLS package is a data matrix with 250 rows containing ratings on a scale from 1 to 10 across 24 items measuring mobile phone customer satisfaction. All you need to know in order to run the SEM and interpret the results can be found in the above link to the well-written Journal of Statistical Software article. I, on the contrary, will pretend that I have no causal model and treat the data set as any other battery of ratings. Let us start by exploring the intercorrelations among these variables.

A principal component analysis for this 250 x 24 data matrix yields a first principal component accounting for 39.5% of the total variation and a second principal component that is only one-sixth the size of the first with 6.6%. The size of the first principal component tells us a great deal about the amount of redundancy in the data matrix. The biplot will provide the visualization.

A biplot is a graphic display showing the 24 variables as vectors and the 250 observations as points projected onto the two-dimensional principal component space. That is, we can create a two-dimensional map with the first principal component as the x-axis and the second principal component as the y-axis. We calculate the two principal component scores for every respondent and use points to represent each row. We know the correlation between each variable and the principal components (i.e., the factor loadings), and we can use that knowledge to project the variables as lines or vectors onto the principal component space. As you might recall, the higher the correlation between two variables, the smaller the angle between the lines representing these variables.
This plot was created using the BiplotGUI R package. It shows the distribution of the 250 rows across the first two principal components as red boxes. The lines are the 24 ratings with tick marks indicating the scores from 1 to 10. Only abbreviations are provided, but you can find the actual questions in the semPLS documentation. With the exception of one variable, all the ratings point in the same direction toward the right. Given the small angles between all these lines, one would expect the correlation matrix to be filled with positive correlations. The “L” in the CUSL# indicates loyalty. The second loyalty measure (would you switch providers for price discount) seems to go its own way.

You may have noticed an arc of non-red circles. I picked one of the points toward the right side to show the arc of predicted values for one respondent with a high first principal component score. The same way that you would drop a perpendicular from a point to the x- and y-axes in order to determine the point’s location on those dimensions, one can read out the predicted rating by the perpendicular projection of a point onto that variable’s line. These are the dotted lines shown by BiplotGUI. One can clearly see that a high first principal component score results in uniformly high ratings across all 24 ratings. This predicted rating would had been the actual rating had the first two principal components accounted for 100% of the variation.

The “GUI” in BiplotGUI indicates that the function opens its own window that allows you to interact with the biplot. This interaction will enable you to experience the relationship between a point’s position in the two-dimensional principal component space and its scores on the 24 variables. The “arc” of varying colored circle tells us that those respondents toward the positive end of the first dimensions tended to rate everything higher.
The above biplot is identical to the first biplot except for the location of the arc, which is moved toward the mean. It illustrates the effect of a decreasing first principal component score. The first two principal components account for less than half of the total variation (39.5% + 6.6%), so there will be some discrepancy between our predicted and the actual ratings. Although it is not shown here, the BiplotGUI window provides a frame where you can see the actual and predicted ratings as you move the cursor across the biplot.

Let me show one more arc from the other side of the first principal component. Now the arc is located toward the lower end of the x-axis and shows how these respondents give uniformly lower ratings.
I would encourage you to install BiplotGUI and semPLS, copy the few lines of R code at the end of this post, and interact with the biplot by moving your cursor across the space. As I note in the R code, you will need to active “Predict points closest to cursor position” by right clicking on the biplot display. By selecting the Prediction tab in the adjacent frame, you will be able to see the actual and predicted ratings for each respondent. Seeing the consistency with which all the ratings move together as different respondents are selected might just change your mindset.

Do I really need all these separate latent constructs with their causal connections? Does Occam’s Razor shred the structural equation model? True, the network display of a causal model, as shown below, does provide an organization for the 24 ratings. Conceptually, we can distinguish between performance, satisfaction, and loyalty. Obviously, over time, experience comes first, followed by feelings of satisfaction and then loyalty intentions. The directed graph makes causation a compelling inference.
But the ratings are all that I have, and those ratings were all collected on a single occasion. A longitudinal study may be able to separate performance, satisfaction, and loyalty. By the time I make by measurements, the directed arrows have become feedback loops. Thus, my evaluation of my brand’s performance depends on whether or not a better alternative is available or how much effort is needed to switch providers. Sometimes it is convenient to believe that all companies are the same. On the other hand, once I decide to switch, all my ratings fall, that is, until I investigate further and discover problems with my “new” provider. I am not arguing that all the ratings will be identical. Every provider will have strengths and weaknesses. But mean-level item differences are not separate latent variables. As long as the ratings move together as a cohesive unit, we have one latent dimension.

To be clear, I am not claiming that unresolved problems will not impact satisfaction and retention. However, the key word is “unresolved” and the frequency of such problems tend to be low among current customers. The unhappy churn unless there are barriers to exit. Our data matrix is a mixture of respondents: a few “hostages” waiting to be freed, some “shoppers” looking for a better deal, a plurality of “inerts” who prefer not to think about it, and a brand-specific percentage of “advocates” making recommendations and active on social media. I have ordered these four components of our mixture model as they might appear along the first principal component. They are not well-separated, which is why a dimensional representation works so well (see this previous post for a more complete discussion of this issue).

In the end, perhaps it is cognitive dissonance, and not cause-and-effect, that binds the ratings together? Attitudes serve behavior. Do I switch or continue using or simply not think about it at all? Do I become an advocate for the brand? Each of these alternative courses of action result from a complex interplay of product experience with each customer’s usage situation and personal needs. We cannot simply assume that whether or not one recommends the brand to others depends solely on the brand and not because there are personal gains and losses associated with the recommendation process that have nothing to do with the brand. Complex systems of thought and action can be described but not by causal models.

R code to run analysis in this post:

#load semPLS and datasets
#runs PLS SEM
ecsi <- sempls(model=ECSImobi, data=mobi, E="C")
#calculate percent variation
#load and open BiPlotGUI
Biplots(mobi, PointLabels=NULL)
#right click on biplot
#select "Predict points closest to cursor positions"
#Select Prediction Tab in top-right frame

To leave a comment for the author, please follow the link and comment on their blog: Engaging Market Research. offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)