Texto guía: Multivariate Analysis of Ecological Data with ade4. Año 2018

Autores: Jean Thioluse, Stéphane Dray, Anne-Béatrice Dufour Aurélie Siberchicot, Thibaut Jombart, Sandrine Pavoine

País: Francia, Ciudad: Lyon, Universidad: Universidad de Lyon

https://doi.org/10.1007/978-1-4939-8850-1

4.1 Introducción

4.2 Basics of adegraphics

library(ade4)
library(adegraphics)
## Warning: package 'adegraphics' was built under R version 4.2.1
## Registered S3 methods overwritten by 'adegraphics':
##   method         from
##   biplot.dudi    ade4
##   kplot.foucart  ade4
##   kplot.mcoa     ade4
##   kplot.mfa      ade4
##   kplot.pta      ade4
##   kplot.sepan    ade4
##   kplot.statis   ade4
##   scatter.coa    ade4
##   scatter.dudi   ade4
##   scatter.nipals ade4
##   scatter.pco    ade4
##   score.acm      ade4
##   score.mix      ade4
##   score.pca      ade4
##   screeplot.dudi ade4
## 
## Attaching package: 'adegraphics'
## The following objects are masked from 'package:ade4':
## 
##     kplotsepan.coa, s.arrow, s.class, s.corcircle, s.distri, s.image,
##     s.label, s.logo, s.match, s.traject, s.value, table.value,
##     triangle.class

adegpar Se utiliza para obtener y establecer el valor de todos los parámetros de adegraphics

names(adegpar())
##  [1] "p1d"         "parrows"     "paxes"       "pbackground" "pellipses"  
##  [6] "pgrid"       "plabels"     "plegend"     "plines"      "pnb"        
## [11] "porigin"     "ppalette"    "ppoints"     "ppolygons"   "pSp"        
## [16] "psub"        "ptable"

La función adegpar (análoga a la función base par) se utiliza para obtener y establecer el valor de todos los parámetros de adegraphics, los cuales consisten en sublistas que tratan con elementos específicos de un gráfico y tienen nombres fáciles de recordar: ppoints para parámetros de puntos, plabels para parámetros de etiquetas, psub para parámetros de subtítulos, etc. ejemplo: objeto adegpar

adegpar(plabels.col = "blue", plabels.cex = 1.5)

adegpar(plabels = list(col = "blue", cex = 1.5))

Otra estrategia es establecer los parámetros solo para un objeto gráfico en particular durante su creación:

xy <- cbind.data.frame(rnorm(10), rnorm(10))
s.label(xy, plabels = list(col = "blue", cex = 1.5))

4.2.4 Almacenamiento de grandes datos

Creando matriz con puntos de datos en una matriz xy

set.seed(15)
xy <- matrix(rnorm(100), ncol = 2)
xy2 <- matrix(rnorm(100, mean = 2), ncol = 2)
xy <- rbind(xy, xy2)

Representación de los puntos de datos de la matriz xy con la funcións.label

sl1 <- s.label(xy, plot = FALSE)
sl2 <- s.label(xy, storeData = FALSE, plot = FALSE)
print(object.size(sl1), units = "auto")
## 95 Kb
print(object.size(sl2), units = "auto")
## 93.5 Kb
sl3 <- s.label (xy, storeData = FALSE, plot = FALSE, ppoints.alpha = 0.01)

Uso de la función s.density para gráficar la densidad

sd1 <- s.density(xy, nr = 0, threshold = 0.001, contour = TRUE, region = TRUE,  ppalette.quanti = colorRampPalette(c(rgb(0, 0, 1, 0.05), rgb(0.5, 0, 0.5, 0.9)), alpha = TRUE), plot = FALSE)

4.3 Ejemplos

#ADEgS(list(sl2,sl3,sd1))
#ADEgS(sl3)

Ejemplos simples

#install.packages("Guerry")
library(Guerry)
## Warning: package 'Guerry' was built under R version 4.2.1
library(sp)
data(gfrance85)
xy <- coordinates(gfrance85)
dep.names <- data.frame(gfrance85)[, 6]
region.names <- data.frame(gfrance85)[, 5]
df <- data.frame(gfrance85)[, 7:12]
names(df)
## [1] "Crime_pers" "Crime_prop" "Literacy"   "Donations"  "Infants"   
## [6] "Suicides"
  • Crime_pers: Population per Crime against persons

  • Crime_prop: Population per Crime against property

  • Literacy: Percent Read and Write, percent of literate military conscripts

  • Donations: Donations to the poor

  • Infants: Population per illegitimate birth

  • Suicides: Population per suicide

Exportando los datos a CSV (recordar estar conectado a un directorio)

#write.csv(gfrance85, file="gfrance85_data.csv")

Ejemplo de PCA con las variables de la data de Guerry Generando el PCA con color

pca.guerry <- dudi.pca(df, scannf = FALSE, nf = 3)
g.lab.pca <- s.label(pca.guerry$li, labels =
                       dep.names, plot = FALSE)

g.lab.pca.u <- s.label(pca.guerry$li, labels = dep.names,
                       plot = FALSE)

ADEgS(list(g.lab.pca, g.lab.pca.u))

Generando el PCA con color con ayuda de la función update.

El color está de acuerdo con el departamento al que pertence

library(RColorBrewer)
col.region <- brewer.pal(5, "Set1")
col.dep <- col.region[region.names]
g.lab.pca.u <- update(g.lab.pca.u, paxes.draw = TRUE,
                      pgrid.draw = FALSE, plabels.col = col.dep, plot = FALSE)

ADEgS(list(g.lab.pca, g.lab.pca.u))

Análisis BCA (Between Classes Analysis) para el pca del dataframe df de la base de datos gfrance85 el cual contiene las variables morales: (Crime_pers, Crime_prop, Literacy, Donations,Infants y Suicides). Un valor-p pequeño, indica que hay alta relación entre las variables

bca.guerry <- bca(pca.guerry, fac = region.names, scannf = FALSE)
randtest(bca.guerry)$pvalue
## [1] 0.001

Gráfico de los puntajes del BCA Factor Map

g.lab.bca <- s.label(bca.guerry$ls, labels = dep.names,
                     plabels.cex = 0.7, plot = FALSE)


g.lab.bca.o <- s.label(bca.guerry$ls, labels = dep.names,
                       plabels = list(cex = 0.7, optim = TRUE), ppoints.col =
                         col.dep, plot = FALSE)

ADEgS(list(g.lab.bca, g.lab.bca.o))

4.4 Representacione espaciales

oldpar <- adegpar()
mappar <- adegpar(porigin.include = FALSE, pgrid.draw = FALSE,
                  pbackground.box = TRUE)


g1.map.bca <- s.value(xy, bca.guerry$ls[, 1], Sp = gfrance85, symbol = "circle", pSp.col = col.dep, psub.text = "BCA axis 1",psub.cex = 1.2)

4.5 Colecciones automáticas de gráficos

adegpar(oldpar)
s.label(bca.guerry$ls, labels = dep.names, plabels.optim = TRUE, facets = region.names)