knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.align = "center", fig.path = "man/figures/README-" )
MEteorits is an open source toolbox (available in R and Matlab) containing several original and flexible mixtures-of-experts models to model, cluster and classify heteregenous data in many complex situations where the data are distributed according to non-normal and possibly skewed distributions, and when they might be corrupted by atypical observations. The toolbox also contains sparse mixture-of-experts models for high-dimensional data.
Our (dis-)covered meteorits are for instance the following ones:
The models and algorithms are developped and written in Matlab by Faicel Chamroukhi, and translated and designed into R packages by Florian Lecocq, Marius Bartcus and Faicel Chamroukhi.
You can install the development version of MEteorits from GitHub with:
# install.packages("devtools") devtools::install_github("fchamroukhi/MEteorits")
To build vignettes for examples of usage, type the command below instead:
# install.packages("devtools") devtools::install_github("fchamroukhi/MEteorits", build_opts = c("--no-resave-data", "--no-manual"), build_vignettes = TRUE)
Use the following command to display vignettes:
browseVignettes("meteorits")
library(meteorits)
NMoE
# Application to a simulated data set n <- 500 # Size of the sample alphak <- matrix(c(0, 8), ncol = 1) # Parameters of the gating network betak <- matrix(c(0, -2.5, 0, 2.5), ncol = 2) # Regression coefficients of the experts sigmak <- c(1, 1) # Standard deviations of the experts x <- seq.int(from = -1, to = 1, length.out = n) # Inputs (predictors) # Generate sample of size n sample <- sampleUnivNMoE(alphak = alphak, betak = betak, sigmak = sigmak, x = x) y <- sample$y K <- 2 # Number of regressors/experts p <- 1 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) nmoe <- emNMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) nmoe$summary() nmoe$plot()
# Application to a real data set data("tempanomalies") x <- tempanomalies$Year y <- tempanomalies$AnnualAnomaly K <- 2 # Number of regressors/experts p <- 1 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) nmoe <- emNMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) nmoe$summary() nmoe$plot()
# Application to a simulated data set n <- 500 # Size of the sample alphak <- matrix(c(0, 8), ncol = 1) # Parameters of the gating network betak <- matrix(c(0, -2.5, 0, 2.5), ncol = 2) # Regression coefficients of the experts sigmak <- c(0.5, 0.5) # Standard deviations of the experts nuk <- c(5, 7) # Degrees of freedom of the experts network t densities x <- seq.int(from = -1, to = 1, length.out = n) # Inputs (predictors) # Generate sample of size n sample <- sampleUnivTMoE(alphak = alphak, betak = betak, sigmak = sigmak, nuk = nuk, x = x) y <- sample$y K <- 2 # Number of regressors/experts p <- 1 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) tmoe <- emTMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) tmoe$summary() tmoe$plot()
# Application to a real data set library(MASS) data("mcycle") x <- mcycle$times y <- mcycle$accel K <- 4 # Number of regressors/experts p <- 2 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) tmoe <- emTMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) tmoe$summary() tmoe$plot()
SNMoE
# Application to a simulated data set n <- 500 # Size of the sample alphak <- matrix(c(0, 8), ncol = 1) # Parameters of the gating network betak <- matrix(c(0, -2.5, 0, 2.5), ncol = 2) # Regression coefficients of the experts lambdak <- c(3, 5) # Skewness parameters of the experts sigmak <- c(1, 1) # Standard deviations of the experts x <- seq.int(from = -1, to = 1, length.out = n) # Inputs (predictors) # Generate sample of size n sample <- sampleUnivSNMoE(alphak = alphak, betak = betak, sigmak = sigmak, lambdak = lambdak, x = x) y <- sample$y K <- 2 # Number of regressors/experts p <- 1 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) snmoe <- emSNMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) snmoe$summary() snmoe$plot()
# Application to a real data set data("tempanomalies") x <- tempanomalies$Year y <- tempanomalies$AnnualAnomaly K <- 2 # Number of regressors/experts p <- 1 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) snmoe <- emSNMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) snmoe$summary() snmoe$plot()
StMoE
# Applicartion to a simulated data set n <- 500 # Size of the sample alphak <- matrix(c(0, 8), ncol = 1) # Parameters of the gating network betak <- matrix(c(0, -2.5, 0, 2.5), ncol = 2) # Regression coefficients of the experts sigmak <- c(0.5, 0.5) # Standard deviations of the experts lambdak <- c(3, 5) # Skewness parameters of the experts nuk <- c(5, 7) # Degrees of freedom of the experts network t densities x <- seq.int(from = -1, to = 1, length.out = n) # Inputs (predictors) # Generate sample of size n sample <- sampleUnivStMoE(alphak = alphak, betak = betak, sigmak = sigmak, lambdak = lambdak, nuk = nuk, x = x) y <- sample$y K <- 2 # Number of regressors/experts p <- 1 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) stmoe <- emStMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) stmoe$summary() stmoe$plot()
# Applicartion to a real data set library(MASS) data("mcycle") x <- mcycle$times y <- mcycle$accel K <- 4 # Number of regressors/experts p <- 2 # Order of the polynomial regression (regressors/experts) q <- 1 # Order of the logistic regression (gating network) stmoe <- emStMoE(X = x, Y = y, K = K, p = p, q = q, verbose = TRUE) stmoe$summary() stmoe$plot()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.