How to Calculate Polychoric Correlation in R

Spread the love


Polychoric correlation is a statistical technique used to measure the correlation between two ordinal variables. Unlike Pearson’s correlation which assumes continuous data, polychoric correlation is used when dealing with variables that are categorical, but have a natural order (ordinal). This article presents a comprehensive guide on calculating polychoric correlation in R, including data preparation, calculating polychoric correlation, interpreting results, and understanding its applications.

Understanding Polychoric Correlation

Polychoric correlation is based on the assumption that the ordinal variables are derived from underlying continuous variables, and it aims to estimate the correlation between these continuous latent variables. It is particularly useful when working with data such as surveys, where responses might be on a Likert scale (e.g., strongly disagree to strongly agree).

Calculating Polychoric Correlation in R

Step 1: Installing and Loading Necessary Packages

R does not have a built-in function to calculate polychoric correlations, so you will need to install and load an external package. The psych package is commonly used for this purpose.

Install the package.


Load the package.


Step 2: Importing and Preparing Your Data

Assuming your dataset is in a CSV file named “data.csv”, use the read.csv() function to import it.

data <- read.csv("path_to_your_file/data.csv")

View the first few rows of your data.


Make sure your variables of interest are ordinal or can be treated as ordinal.

Step 3: Calculating Polychoric Correlation

Use the polychoric() function from the psych package to calculate the polychoric correlation between two ordinal variables. For instance, if your dataset has two ordinal variables named “variable1” and “variable2”, you would calculate the polychoric correlation as follows.

result <- polychoric(data$variable1, data$variable2)

Step 4: Viewing and Understanding the Results

Print the result object to view the polychoric correlation.


The result will show you the polychoric correlation coefficient and other information such as the standard error.

Visualizing Polychoric Correlation

Visualizing data can often help in interpreting it. One common way of visualizing correlations is through scatter plots.

plot(data$variable1, data$variable2, main="Polychoric Correlation",
     xlab="Variable 1", ylab="Variable 2", pch=19)

While scatter plots are typically used for continuous data, they can still provide a visual sense of the relationship between two ordinal variables.

Interpreting the Results

The polychoric correlation coefficient ranges from -1 to 1.

  • A coefficient close to 1 indicates a strong positive relationship.
  • A coefficient close to -1 indicates a strong negative relationship.
  • A coefficient close to 0 indicates a weak or no relationship.

Also, consider the standard error. A smaller standard error indicates that the estimated polychoric correlation is more reliable.

Applications and Considerations

Polychoric correlation is widely used in social sciences, particularly in cases involving Likert scale survey responses. It is a more appropriate measure for ordinal data compared to Pearson’s correlation. However, polychoric correlation assumes that the ordinal variables are derived from underlying continuous variables. This assumption may not always hold. It’s important to consider the nature of your data and ensure that the assumptions of polychoric correlation are met before using this technique.

Advanced Topics

Estimating the Polychoric Correlation Matrix

In case you have more than two ordinal variables and you wish to find the polychoric correlation matrix, you can use the polychoric() function without specifying variables.

cor_matrix <- polychoric(data)

Factor Analysis with Polychoric Correlation

Factor analysis can be used to explore the latent constructs underlying ordinal variables. When performing factor analysis on ordinal data, it’s often advisable to use polychoric correlations. You can use the fa() function in the psych package with polychoric correlations.

factor_analysis <- fa(r = cor_matrix$rho, nfactors = 2)


Polychoric correlation is a vital tool for examining the relationship between two ordinal variables. R, through the psych package, provides robust tools for calculating and analyzing polychoric correlations. It’s important to understand the assumptions behind polychoric correlation and to interpret the results in the context of your data. This technique is especially useful in social sciences and any field where ordinal data, such as survey responses on a Likert scale, are common.

Posted in RTagged

Leave a Reply