Ecological Archives E088-031-A1

Sandrine Pavoine, Jacques Blondel, Michel Baguette, and Daniel Chessel. 2007. A new technique for ordering asymmetrical three-dimensional data sets in ecology. Ecology 88:512–523.

Appendix A. Instructions for resuming the calculations of this paper in R.


R is an open source environment of programmation. You can download it from http://lib.stat.cmu.edu/R/CRAN/

In your working directory, copy the file 'birds.txt' (Supplement 1). Then, write the following instructions on your R console (be careful the library ade4 must be previously downloaded from CRAN):

library(ade4)
ecoconv <- read.table("birds.txt", h = TRUE, row.names = 1)
names(ecoconv)

[1] "Alg1" "Alg2" "Alg3" "Alg4" "Alg5" "Alg6" "Bur1" "Bur2" "Bur3" "Bur4"
[11] "Bur5" "Bur6" "Cor1" "Cor2" "Cor3" "Cor4" "Cor5" "Cor6" "Pol1" "Pol2"
[21] "Pol3" "Pol4" "Pol5" "Pol6" "Pro1" "Pro2" "Pro3" "Pro4" "Pro5" "Pro6"

The object 'ecoconv' is the global species × site matrix. The notations are: 'Alg' Algeria, 'Bur' Burgundy, 'Cor' Corsica, 'Pol' Poland, 'Pro' Provence, and from 1-low bush to 6-preforest for the vegetation stages.

From the global matrix, obtain two lists of individual matrices: 

The following object 'list1' contains the list of the five species × stage matrices.

list1 <- list(Alg = ecoconv[, 1:6], Bur = ecoconv[, 7:12], Cor =
    ecoconv[, 13:18], Pol = ecoconv[, 19:24], Pro = ecoconv[, 25:30])
names(list1$Alg) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Bur) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Cor) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Pol) <- c("S1", "S2", "S3", "S4", "S5", "S6")
names(list1$Pro) <- c("S1", "S2", "S3", "S4", "S5", "S6")

The following object 'list2' contains the list of the six species × succession matrices.

list2 <- list(S1 = ecoconv[, c(1, 7, 13, 19, 25)],
    S2 = ecoconv[, c(2, 8, 14, 20, 26)],
    S3 = ecoconv[, c(3, 9, 15, 21, 27)],
    S4 = ecoconv[, c(4, 10, 16, 22, 28)],
    S5 = ecoconv[, c(5, 11, 17, 23, 29)],
    S6 = ecoconv[, c(6, 12, 18, 24, 30)])
names(list2$S1) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S2) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S3) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S4) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S5) <- c("Alg", "Bur", "Cor", "Pol", "Pro")
names(list2$S6) <- c("Alg", "Bur", "Cor", "Pol", "Pro")

# Obtaining Fig. 2

fouc1 <- foucart(list1, scan = F, nf = 2)

Eigenvalue barplot:

barplot(fouc1$eig)
eigenvalue barplot

Reference pattern:
s.label(fouc1$li, clab=0)
s.label(fouc1$co, clab=1, add.pl=T)

Fig2Ref

Projection of the individual matrices:

kplot(fouc1, clab.c = 1.5, clab.r = 0, csub = 2)

Fig2Main

# Obtaining Fig. 3:

fouc2 <- foucart(list2, scan = F, nf = 4)

Eigenvalue barplot:

barplot(fouc2$eig)

Second eigenvalue barplot

kplot(fouc2, clab.c = 1.5, clab.r = 0, csub = 1)
Fig3

# Obtaining Fig. 4:

rownames(fouc2$Tco)
 [1] "Alg.1" "Bur.1" "Cor.1" "Pol.1" "Pro.1" "Alg.2" "Bur.2" "Cor.2"
 [9] "Pol.2" "Pro.2" "Alg.3" "Bur.3" "Cor.3" "Pol.3" "Pro.3" "Alg.4"
[17] "Bur.4" "Cor.4" "Pol.4" "Pro.4" "Alg.5" "Bur.5" "Cor.5" "Pol.5"
[25] "Pro.5" "Alg.6" "Bur.6" "Cor.6" "Pol.6" "Pro.6"

Factorial map F1 × F2:

par.sauv <- par()$mar
par(mar=c(0.1,0.1,0.1,0.1))
s.label(fouc2$Tco, clab = 0.8)
for(i in 0:5) {
    index <- (1:5) + 5 * i
    transi <- chull(fouc2$Tco[index, ])
    transi <- index[c(transi, transi[1])]
    lines(fouc2$Tco[transi, ], lty = i + 1)
}

Fig4Axes12

Factorial map F3 × F4:

s.label(fouc2$Tco[, 3:4], clab = 0.8)

for(i in 0:5) {
    index <- (1:5) + 5 * i
    transi <- chull(fouc2$Tco[index, 3:4])
    transi <- index[c(transi, transi[1])]
    lines(fouc2$Tco[transi, 3:4], lty = i + 1)
}


Fig4Axes34

par(mar = par.sauv)


[Back to E088-031]