# Cluster analysis on ordinal data (Likert scale)

I want to do clustering of my data in R, using kmeans or hclust (I am a new R user).

My data is ordinal, Likert scale, to measure the causes of cost escalation. I have 41 causes "variables" that scaled from 1 to 5 (1: no effect, 5: major effect). I have about 160 observations "who rank the causes".

I would like to cluster the variables (the columns) in terms of similarity of occurrence in observations, but I don't know how to start.

Do I have to convert the scale to percentage or z-score before clustering?

My data is available and shared as a Google Drive spreadsheet.

## 2 Answers

You are trying to determine an appropriate distance measure, and clearly you are noticing how tricky this can be.

Ordinal data is not interval data. You should consider:

• whether the distance between each category is the same (is the distance between 2 and 3 the same as the distance between 3 and 4?)
• whether special consideration needs to be given to the neutral/null category (in your case, 1: no effect).
• whether several of your causes variables need to be considered together. For example, you may decide to sum 2 related variables together and treat them as one (derivative) variable for purposes of clustering.

These considerations have psychological roots. For example, people tend to give more weight to the difference between options at the ends of the scale than in the middle.

You may decide on an approach based on these considerations that involves: - cleaning the data - transforming the current scale into one in Euclidean space.

... or, you may decide this is not necessary for your purposes.

Existing research that uses the Likert scale often utilizes distance measures based on Cosine distance and Pearson Correlation.

You may find the following useful:

I am not sure about the amount of data you need to fit the a model, but you are asking for a common usage of Factor Analysis. Check this page of Quick-R that will help you to deal with some initials examples on how to map your questions to a latent space. You can use it to see the relations among similar questions that will be loaded in the same factors

http://www.statmethods.net/advstats/factor.html

The previous technique is part of Exploratory Factor Analysis. I am not an expert, but summarizing what the link I mentioned says, for Confirmatory Factor Analysis you would try Structural Equation Modelling, which you can try with R via the sem package

http://socserv.mcmaster.ca/jfox/Misc/sem/SEM-paper.pdf

Good luck.