library(knitr) opts_chunk$set(fig.align = "center", out.width = "80%", fig.width = 6, fig.height = 5, dev.args = list(pointsize = 10), par = TRUE, # needed for setting hook collapse = TRUE, # collapse input & ouput code in chunks message = FALSE, warning = FALSE) knit_hooks$set(par = function(before, options, envir) { if(before && options$fig.show != "none") par(family = "sans", mar=c(4.1,4.1,1.1,1.1), mgp=c(3,1,0), tcl=-0.5) })
An R package implementing a Projection Pursuit algorithm based on finite Gaussian Mixtures Models for density estimation using Genetic Algorithms (PPGMMGA) to maximise a Negentropy index. The PPGMMGA algorithm provides a method to visualise high-dimensional data in a lower-dimensional space, with special reference to reveal clustering structures.
library(ppgmmga) cat(ppgmmga:::ppgmmgaStartupMessage(), sep="")
library(mclust) data("banknote") X <- banknote[,-1] Class <- banknote$Status table(Class) clPairs(X, classification = Class, symbols = ppgmmga.options("classPlotSymbols"), colors = ppgmmga.options("classPlotColors"))
PP1D <- ppgmmga(data = X, d = 1, seed = 1) PP1D summary(PP1D)
plot(PP1D)
plot(PP1D, class = Class)
PP2D <- ppgmmga(data = X, d = 2, seed = 1) summary(PP2D) summary(PP2D$GMM)
plot(PP2D$GA)
plot(PP2D)
plot(PP2D, class = Class, drawAxis = FALSE)
PP3D <- ppgmmga(data = X, d = 3, center = TRUE, scale = FALSE, gatype = "gaisl", options = ppgmmga.options(numIslands = 2), seed = 1) summary(PP3D)
plot(PP3D$GA)
plot(PP3D)
plot(PP3D, class = Class)
plot(PP3D, dim = c(1,2))
plot(PP3D, dim = c(1,3), class = Class)
# A rotating 3D plot can be obtained using if(!require("msir")) install.packages("msir") msir::spinplot(PP3D$Z, markby = Class, pch.points = c(20,17), col.points = ppgmmga.options("classPlotColors")[1:2])
Scrucca L, Serafini A (2019). "Projection pursuit based on Gaussian mixtures and evolutionary algorithms." Journal of Computational and Graphical Statistics, 28(4), 847–860. https://doi.org/10.1080/10618600.2019.1598871.
sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.