Correlation
:link: Methods for Correlation Analysis
Install / Use
/learn @easystats/CorrelationREADME
correlation <img src='man/figures/logo.png' align="right" height="139" />
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
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), uselibrary(easystats). This will make all features of the easystats-ecosystem available.To stay updated, use
easystats::install_latest().
Documentation
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
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
