For univariate distributions (one-dimensional vectors), this functions performs a Ameijeiras-Alonso et al. (2018) excess mass test. For multivariate distributions (data frames), it uses mixture modelling. However, it seems that it always returns a significant result (suggesting that the distribution is multimodal). A better method might be needed here.
check_multimodal(x,...)
Arguments
x: A numeric vector or a data frame.
...: Arguments passed to or from other methods.
Examples
# Univariatex <- rnorm(1000)check_multimodal(x)x <- c(rnorm(1000), rnorm(1000,2))check_multimodal(x)# Multivariatem <- data.frame( x = rnorm(200), y = rbeta(200,2,1))plot(m$x, m$y)check_multimodal(m)m <- data.frame( x = c(rnorm(100), rnorm(100,4)), y = c(rbeta(100,2,1), rbeta(100,1,4)))plot(m$x, m$y)check_multimodal(m)
References
Ameijeiras-Alonso, J., Crujeiras, R. M., and Rodríguez-Casal, A. (2019). Mode testing, critical bandwidth and excess mass. Test, 28(3), 900-919.