SkillAgentSearch skills...

Correlation

:link: Methods for Correlation Analysis

Install / Use

/learn @easystats/Correlation

README

correlation <img src='man/figures/logo.png' align="right" height="139" />

DOI downloads total

correlation is an easystats package focused on correlation analysis. It’s lightweight, easy to use, and allows for the computation of many different kinds of correlations, such as partial correlations, Bayesian correlations, multilevel correlations, polychoric correlations, biweight, percentage bend or Sheperd’s Pi correlations (types of robust correlation), distance correlation (a type of non-linear correlation) and more, also allowing for combinations between them (for instance, Bayesian partial multilevel correlation).

Citation

You can cite the package as follows:

Makowski, D., Ben-Shachar, M. S., Patil, I., & Lüdecke, D. (2020). Methods and algorithms for correlation analysis in R. Journal of Open Source Software, 5(51), 2306. https://doi.org/10.21105/joss.02306

Makowski, D., Wiernik, B. M., Patil, I., Lüdecke, D., & Ben-Shachar, M. S. (2022). correlation: Methods for correlation analysis [R package]. https://CRAN.R-project.org/package=correlation (Original work published 2020)

Installation

CRAN correlation status
badge codecov

The correlation package is available on CRAN, while its latest development version is available on R-universe (from rOpenSci).

| Type | Source | Command | |----|----|----| | Release | CRAN | install.packages("correlation") | | Development | R-universe | install.packages("correlation", repos = "https://easystats.r-universe.dev") |

Once you have downloaded the package, you can then load it using:

library("correlation")

Tip

Instead of library(bayestestR), use library(easystats). This will make all features of the easystats-ecosystem available.

To stay updated, use easystats::install_latest().

Documentation

Documentation Blog Features

Check out package website for documentation.

Features

The correlation package can compute many different types of correlation, including:

Pearson’s correlation<br>Spearman’s rank correlation<br>Kendall’s rank correlation<br>Biweight midcorrelation<br>Distance correlation<br>Percentage bend correlation<br>Shepherd’s Pi correlation<br>Blomqvist’s coefficient<br>Hoeffding’s D<br>Gamma correlation<br>Gaussian rank correlation<br>Point-Biserial and biserial correlation<br>Winsorized correlation<br>Polychoric correlation<br>Tetrachoric correlation<br>Multilevel correlation<br>

An overview and description of these correlations types is available here. Moreover, many of these correlation types are available as partial or within a Bayesian framework.

Examples

The main function is correlation(), which builds on top of cor_test() and comes with a number of possible options.

Correlation details and matrix

results <- correlation(iris)
results
## # Correlation Matrix (pearson-method)
## 
## Parameter1   |   Parameter2 |     r |         95% CI | t(148) |         p
## -------------------------------------------------------------------------
## Sepal.Length |  Sepal.Width | -0.12 | [-0.27,  0.04] |  -1.44 | 0.152    
## Sepal.Length | Petal.Length |  0.87 | [ 0.83,  0.91] |  21.65 | < .001***
## Sepal.Length |  Petal.Width |  0.82 | [ 0.76,  0.86] |  17.30 | < .001***
## Sepal.Width  | Petal.Length | -0.43 | [-0.55, -0.29] |  -5.77 | < .001***
## Sepal.Width  |  Petal.Width | -0.37 | [-0.50, -0.22] |  -4.79 | < .001***
## Petal.Length |  Petal.Width |  0.96 | [ 0.95,  0.97] |  43.39 | < .001***
## 
## p-value adjustment method: Holm (1979)
## Observations: 150

The output is not a square matrix, but a (tidy) dataframe with all correlations tests per row. One can also obtain a matrix using:

summary(results)
## # Correlation Matrix (pearson-method)
## 
## Parameter    | Petal.Width | Petal.Length | Sepal.Width
## -------------------------------------------------------
## Sepal.Length |     0.82*** |      0.87*** |       -0.12
## Sepal.Width  |    -0.37*** |     -0.43*** |            
## Petal.Length |     0.96*** |              |            
## 
## p-value adjustment method: Holm (1979)

Note that one can also obtain the full, square and redundant matrix using:

summary(results, redundant = TRUE)
## # Correlation Matrix (pearson-method)
## 
## Parameter    | Sepal.Length | Sepal.Width | Petal.Length | Petal.Width
## ----------------------------------------------------------------------
## Sepal.Length |              |       -0.12 |      0.87*** |     0.82***
## Sepal.Width  |        -0.12 |             |     -0.43*** |    -0.37***
## Petal.Length |      0.87*** |    -0.43*** |              |     0.96***
## Petal.Width  |      0.82*** |    -0.37*** |      0.96*** |            
## 
## p-value adjustment method: Holm (1979)
library(see)

results %>%
  summary(redundant = TRUE) %>%
  plot()

<!-- -->

Correlation tests

The cor_test() function, for pairwise correlations, is also very convenient for making quick scatter plots.

plot(cor_test(iris, "Sepal.Width", "Sepal.Length"))

<!-- -->

Grouped dataframes

The correlation() function also supports stratified correlations, all within the tidyverse workflow!

iris %>%
  select(Species, Sepal.Length, Sepal.Width, Petal.Width) %>%
  group_by(Species) %>%
  correlation()
## # Correlation Matrix (pearson-method)
## 
## Group      |   Parameter1 |  Parameter2 |    r |        95% CI | t(48) |         p
## ----------------------------------------------------------------------------------
## setosa     | Sepal.Length | Sepal.Width | 0.74 | [ 0.59, 0.85] |  7.68 | < .001***
## setosa     | Sepal.Length | Petal.Width | 0.28 | [ 0.00, 0.52] |  2.01 | 0.101    
## setosa     |  Sepal.Width | Petal.Width | 0.23 | [-0.05, 0.48] |  1.66 | 0.104    
## versicolor | Sepal.Length | Sepal.Width | 0.53 | [ 0.29, 0.70] |  4.28 | < .001***
## versicolor | Sepal.Length | Petal.Width | 0.55 | [ 0.32, 0.72] |  4.52 | < .001***
## versicolor |  Sepal.Width | Petal.Width | 0.66 | [ 0.47, 0.80] |  6.15 | < .001***
## virginica  | Sepal.Length | Sepal.Width | 0.46 | [ 0.20, 0.65] |  3.56 | 0.002**  
## virginica  | Sepal.Length | Petal.Width | 0.28 | [ 0.00, 0.52] |  2.03 | 0.048*   
## virginica  |  Sepal.Width | Petal.Width | 0.54 | [ 0.31, 0.71] |  4.42 | < .001***
## 
## p-value adjustment method: Holm (1979)
## Observations: 50

Bayesian Correlations

It is very easy to switch to a Bayesian framework.

correlation(iris, bayesian = TRUE)
## # Correlation Matrix (pearson-method)
## 
## Parameter1   |   Parameter2 |   rho |         95% CI |      pd | % in ROPE
## --------------------------------------------------------------------------
## Sepal.Length |  Sepal.Width | -0.11 | [-0.27,  0.04] |  92.70% |    42.83%
## Sepal.Length | Petal.Length |  0.86 | [ 0.82,  0.90] | 100%*** |        0%
## Sepal.Length |  Petal.Width |  0.81 | [ 0.75,  0.86] | 100%*** |        0%
## Sepal.Width  | Petal.Length | -0.41 | [-0.55, -0.28] | 100%*** |        0%
## Sepal.Width  |  Petal.Width | -0.35 | [-0.49, -0.22] | 100%*** |        0%
## Petal.Length |  Petal.Width |  0.96 | [ 0.95,  0.97] | 100%*** |        0%
## 
## Parameter1   |         Prior |          BF
## ------------------------------------------
## Sepal.Length | Beta (3 +- 3) |       0.509
## Sepal.Length | Beta (3 +- 3) | 2.14e+43***
## Sepal.Length | Beta (3 +- 3) | 2.62e+33***
## Sepal.Width  | Beta (3 +- 3) | 3.49e+05***
## Sepal.Width  | Beta (3 +- 3) | 5.29e+03***
## Petal.Length | Beta (3 +- 3) | 1.24e+80***
## 
## Observations: 150

Tetrachoric, Polychoric, Biserial, Biweight…

The correlation package also supports different types of methods, which can deal with correlations between factors!

correlation(iris, include_factors = TRUE, method = "auto")
## # Correlation Matrix (auto-method)
## 
## Parameter1         |         Parameter2 |     r |         95% CI | t(148) |         p
## -------------------------------------------------------------------------------------
## Sepal.Length       |        Sepal.Width | -0.12 | [-0.27,  0.04] |  -1.44 | 0.452    
## Sepal.Length       |       Petal.Length |  0.87 | [ 0.83,  0.91] |  21.65 | < .001***
## Sepal.Length       |        Petal.Width |  0.82 | [ 0.76,  0.86] |  17.30 | < .001***
## Sepal.Length       |     Species.setosa | -0.72 | [-0.79, -0.63] | -12.53 | < .001***
## Sepal.Length       | Species.versicolor |  0.08 | [-0.08,  0.24] |   0.97 | 0.452    
#

Related Skills

View on GitHub
GitHub Stars450
CategoryDevelopment
Updated5d ago
Forks59

Languages

R

Security Score

85/100

Audited on Mar 27, 2026

No findings