Vous êtes sur la page 1sur 2

Tinn-R - [C:\Users\admin2\Desktop\TD Analyse en Composante Principale (ACP).

r] 1/2

# Localiser le répertoire de travail


getwd()
# Modifier le répertoire de travail si besoin (ex : "mes documents")
setwd("C:/Users/Documents")
# Charger le package "datasets"
library(datasets)
# Charger le jeu de données "iris"
data(iris)
# Analyser la structure de l'objet "iris"
str(iris)
# Représenter graphiquement les relations deux à deux entre les 4 variables
# quantitatives du jeu de données "iris"
plot(iris[,1:4])
# Afficher la matrice de covariance pour ces 4 variables quantitatives
cov(iris[,1:4])
# Afficher la matrice de corrélation pour ces 4 variables quantitatives
cor(iris[,1:4])
# Sélectionner un miroir pour pouvoir télécharger un ou des packages
chooseCRANmirror()
# Installer le package "ade4" sur le disque dur
install.packages("ade4")
# Charger le package "ade4"
library(ade4)
# Réaliser une Analyse en Composante Principale (ACP) de type normée sur les 4
# premières variables quantitatives du jeu de données "iris"
monACP <- dudi.pca(iris[, 1:4], center=TRUE, scale=TRUE, scannf=FALSE,
nf=dim(iris[, 1:4])[2])
monACP
str(monACP)
str(monACP$eig)
str(monACP$li)
str(monACP$co)
# Calcul des pourcentages d'inertie portés par chaque Composante Principale (CP)
monACP$eig/sum(monACP$eig)
screeplot(monACP)
# Afficher les individus par lot d'espèce dans le plan CP1-CP2
plot(monACP$li[, 1], monACP$li[, 2], type="n", xlab="CP1", ylab="CP2")
setosa <- which(iris$Species=="setosa")
versicolor <- which(iris$Species=="versicolor")
virginica <- which(iris$Species=="virginica")
points(monACP$li[setosa, 1], monACP$li[setosa, 2], col="red", pch=19)
points(monACP$li[versicolor, 1], monACP$li[versicolor, 2], col="green", pch=15)
points(monACP$li[virginica, 1], monACP$li[virginica, 2], col="blue", pch=17)
legend(1.75, 2.5, c("Iris setosa", "Iris versicolor", "Iris virginica"),
col=c("red", "green", "blue"), pch=c(19, 15, 17))
# Autre solution d'affichage des individus par espèce dans le plan CP1-CP2
s.class(monACP$li[,1:2], iris$Species)
# Afficher le cercle des corrélations
s.corcircle(monACP$co)
# Afficher à la fois les individus et les variables
biplot(monACP)
# Pour le fun : afficher la troisième dimension de l'ACP
install.packages("rgl")
library(rgl)
plot3d(monACP$li[, 1], monACP$li[, 2], monACP$li[, 3], type="s",
col=iris$Species)
# Faire une ACP sur les données bioclimatiques en libre accès de WorldClim :
# http://www.worldclim.org/bioclim
install.packages("raster")
library(raster)
bioclim <- getData("worldclim", var="bio", res=10)
bioclim
Tinn-R - [C:\Users\admin2\Desktop\TD Analyse en Composante Principale (ACP).r] 2/2

bioclim[[1]]
plot(bioclim[[1]])
install.packages("fBasics")
library(fBasics)
colorT <- rev(divPalette(n=100, name="RdYlBu"))
colorP <- seqPalette(n=100, name="Blues")
par(mfrow=c(2, 1))
plot(bioclim[[1]]/10, col=colorT)
title("Températures Moyennes Annuelles (°C) 1950-2000")
plot(bioclim[[12]], col=colorP)
title("Précipitations Annuelles (mm) 1950-2000")
temp <- getValues(bioclim[[1]])
tsea <- getValues(bioclim[[4]])
prec <- getValues(bioclim[[12]])
psea <- getValues(bioclim[[15]])
bio <- as.data.frame(temp)
bio[, "tsea"] <- tsea
bio[, "prec"] <- prec
bio[, "psea"] <- psea
# Récupérer l'information d'appartenance aux différents biomes terrestres en
# téléchargeant le Shapefile intitulé "wwf_terr_ecos" sur le site :
# http://worldwildlife.org/publications/terrestrial-ecoregions-of-the-world
# Sauvegarder l'ensemble des fichiers du Shapefile dans le répertoire de
# travail(cf. "getwd()") avant de le charger grÂce au package "maptools"
install.packages("maptools")
library(maptools)
teow <- readShapePoly("wwf_terr_ecos")
# Vérifier que la projection de l'objet "teow" est identique à celle de l'objet
# "bioclim" soit prj="+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
bioclim[[1]]
teow
str(teow@data)
teow <- rasterize(teow, bioclim[[1]], field="BIOME", fun="last")
biom <- getValues(teow)
bio[, "biom"] <- biom
bio <- na.omit(bio)
monACP <- dudi.pca(bio[, 1:4], center=TRUE, scale=TRUE, scannf=FALSE,
nf=dim(bio[, 1:4])[2])
s.corcircle(monACP$co)
plot(monACP$li[, 1], monACP$li[, 2], type="n", xlab="CP1", ylab="CP2")
tropic <- which(bio$biom==1|bio$biom==2|bio$biom==3|bio$biom==7)
temperate <- which(bio$biom==4|bio$biom==5|bio$biom==8)
boreal <- which(bio$biom==6|bio$biom==11)
mediter <- which(bio$biom==12)
points(monACP$li[tropic, 1], monACP$li[tropic, 2], col="forestgreen", pch=19)
points(monACP$li[temperate, 1], monACP$li[temperate, 2], col="brown", pch=19)
points(monACP$li[boreal, 1], monACP$li[boreal, 2], col="blue", pch=19)
points(monACP$li[mediter, 1], monACP$li[mediter, 2], col="red", pch=19)
legend(-3, -6, c("Tropical biomes", "Temperate biomes", "Boreal biomes",
"Mediterranean biomes"), col=c("forestgreen", "brown", "blue", "red"),
pch=c(19, 19, 19, 19))
# Quitter
q()

Vous aimerez peut-être aussi