R functions et fonctions simplifié

Transcription

R functions et fonctions simplifié
Le langage R
!
« Comment devenir un Hé
o »
Qu’est-ce que R?!.............................................................................................2
Avant de démarrer...!.........................................................................................2
Symboles communs dans R!............................................................................3
Données avec R!..............................................................................................4
Arguments dans diverses fonctions dans R!..................................................11
Data exploration!.............................................................................................13
1
1.Qu’est-ce que R?
Avantages
Inconvénients
un système performant de stockage et de manipulation des données
R peut sembler trop
complexe pour une
utilisation par un nonspécialiste (par exemple
biologiste) (mais ça
passe!)
la possibilité d’effectuer du calcul matriciel et autres opérations complexes
une large collection intégrée et cohérente d’outils d’analyse statistique
un large éventail d’outils graphiques particulièrement flexibles
un language de programmation simple et efficace qui inclue de nombreuses
facilités.
R est un langage “orienté-objet”, c’est-à-dire que les variables, les données, les
matrices, les fonctions, les résultats, etc. sont stockés dans la mémoire vive de
l’ordinateur sous forme d’objets qui ont un nom : il suffit alors de taper le nom de
l’objet pour afficher son contenu.
2.Avant de démarrer...
R distingue, pour les noms des objets, les majuscules des minuscules, c’est-à-dire que x et X pourront servir à
nommer des objets distincts, de même que pour le nom des fonctions
Tableau I : Fait à partir de R pour les débutants
Commande&opérateurs Autres formes
Définition Action
>
;
#
?
Prompt
R attend une commande
pour séparer des commandes distinctes sur la même ligne
aide
Liste et effacer
ls()
1.
2.
3.
ls()
ls(pat="m")
ls(pat="^m")
1.
2.
rm(x,y)
rm(list=ls())
1.
apropos("what")
1.
2.
?lm
help(*)
1.
Permet d’afficher la liste simple des
objets en mémoire. Seuls les noms des
objets sont affichés.
1. Lister uniquement ceux qui contiennent le
caractère “m”
2. Restreindre la liste aux objets dont le
nom commence par “m”
afficher des détails sur les objets en mémoire
ls.str()
rm()
Aide en ligne
help.start()
apropos()
help() ou ?
Message de retour de R
Warning message
Error
Remove
L’option pattern (pat) peut être utilisée
effacer des objets de la mémoire
1. Efface x et y
2. Efface tout ce qui se trouve dans la
mémoire
Aide en format Html
Liste
les fonctions contenant ce qui se
trouve dans la parenthèse
listera les fonctions contenant "what”
1. Affiche l’aide pour la fonction lm()
2. Aide avec des caractères nonconventionnels (comme le symbole de
multiplication ici)
R a retourné un message d’avertissement et non
pas un message d’erreur, l’opération a donc
été effectuée
La commande n’a pas été exécuté
2
3.Symboles communs dans R
Tableau II : Symboles les plus communs lors du codage sous R
Commandes et symboles Description
Commentaires
<-
Sink, assigner une variable
=
(e.g. x<-2, 2 est forcé de
prendre la forme de x, i.e. x
vaut mainenant 2)
Il est préférable d’utiliser <pour assigner une variable
Assignation d’une variable à une
autre.
Addition
Soustraction
Division
Multiplication
Utilisé dans l’écriture de régression Ne pas oublier que la fonction
linéaire
plot(x,y) fait x en fonction de
y, mais que l'usage du "~" fait
y en fonction de x
Opérateur d’une séquence
(e.g. 1 :10 équivaut à faire 1,
2, 3, 4, 5, 6, 7, 8, 9, 10.
c(1 :10) est un vecteur allant
de 1 à 10
Exposant
R ne prendra pas ce qui a après ce
symbole
Égalités et inégalité différentes
ces opérateurs ont pour résultat
de retourner une variable de
mode logical (TRUE ou FALSE)
+
/
*
~
:
^
#
< (inférieur à),
> (supérieur à),
<= (inférieur ou égal à),
>= (supérieur ou égal à),
== (ègal), et
!= (différent de)
1. a+b
2. a:b
3. a*b
4. poly(a,n)
5. ^n
6. b%in%a
7. a-b
1.
2.
3.
4.
5.
6.
7.
effets additifs de a et de b
effet interactif entre a et b
identique à a+b+a:b
polynome de a jusqu’au degré n
inclue toutes les interactions jusqu’au niveau n, c’est-à-dire (a
+b+c)^n est identique à a+b+c+a:b+a:c+b:c
les effets de b sont hiérarchiquement inclus dans a (identique à
a+a:b)
supprime l’effet de b, par exemples : (a+b+c)^n-a:b est identique
à a+b+c+a:c+b:c, y~x-1 force la régression à passer par l’origine
(idem pour y~x+0, ou 0+y~x)
On voit que les opérateurs arithmétiques de R ont dans une formule un
sens différent de celui qu’ils ont dans une expression classique. Par
exemple, la formule y~x1+x2 définira le modèle y = β1 x1 + β2 x2 + α,
et non pas (si l’opérateur + avait sa fonction habituelle) y = β(x1+
x2 ) + α. Pour inclure des opérations arithmétiques dans une formule,
on utilisera la fonction I() : la formule y~I(x1+x2) définira alors
le modèle y = β(x1+ x2) + α.
3
4. Données avec R
R travaille sur des objets qui ont tous deux attributs intrinsèques : mode et length.
1. Le mode est le type des éléments d’un objet
1. Numeric
2. Character
3. Complex
4. Logical
5. D’autres modes existent qui ne représentent pas des données
1. Function
2. Expression
3. Formula
2. La length est le nombre total d’éléments de l’objet.
Attributs non-intrinsèques : dim()
1. une matrice composée de 2 lignes et 2 colonnes aura pour dim le couple de valeurs [2,2] ; par contre sa
length sera de 4.
Le tableau suivant donne un résumé des différents objets manipulés par R.
Object
Modes possibles
Plusieurs modes
possibles dans le
même objet ?
vector
factor
array
matrix
data.frame
list
numeric, character,
complex, ou logical
Numeric ou character
numeric, character,
complex, ou logical
numeric, character,
complex, ou logical
numeric, character,
complex, ou logical
Non
numeric, character,
complex, logical,
function, expression, ou
formula
Oui
Non
Non
Non
Oui
Définition
variable dans le sens
généralement admis
variable catégorique
tableau à k dimensions
cas particulier d’array avec
k = 2
tableau composé de un ou
plusieurs vecteurs ayant tous
la même longueur
installer des packages
install.packages("vegan") Installation d’un packages important pour l’écologie (vegan) et Hmisc pour
ajouter des barres d’erreur dans un graphique
install.packages("Hmisc")
Lire des données
Autres formes
Définition
Action
setwd()
setwd("~/Desktop/
mon_laboratoire")
set working directory
les fichiers *.dat sont
placés dans le répertoire de
travail de R, sinon il faut
soit changer ce répertoire de
travail, ou bien spécifier le
chemin d’accés dans le
programme (par exemple : file
<- "C:/data/Swal.dat")
4
read.table()
1.
read.csv()
En suivant l’exemple
Options supplémentaires
1. mydata sera alors
read.csv(file, header
un data.frame, et
= TRUE, sep = ",",
chaque variable
quote="\"",
sera nommée, par
dec=".", ...)
défaut, V1, V2, etc
e.g.
2. Les variables sont
data<accédées accédées
read.csv('base_de_donnees.
individuellement
csv', header=TRUE)
par :
1. mydata$V1,
2. read.csv2()
mydata$V2, etc., 2.
mydata["V1"],
read.csv2(file, header
mydata["V2"], etc,
= TRUE, sep = ";",
3. mydata[,1],
quote="\"",
mydata[,2], etc.
dec=",", ...)
3. Il y a toutefois
3. E.g.
une différence :
mydata <mydata$V1 et
read.table("data.dat")
mydata[,1] sont des
4. read.table(file,
vecteurs alors que
header=FALSE, sep="",
mydata["V1"] est un
quote="\"’", dec=".",
data.frame
row.names=,
col.names=,
as.is=FALSE,
na.strings="NA",
skip=0,
check.names=TRUE,
strip.white=FALSE)
Enregistrer des
données
Autres formes
Définition
Action
write(x, file="data.txt") écrit un objet x (qui peut être un vecteur, une matrice ou un array) dans le
fichier data.txt. Il y a deux options : nc (ou ncol) qui définit le nombre de
colonnes dans le fichier (par défaut nc=1 si x est de mode character, nc=5 pour
les autres modes), et append (un logical) pour ajouter les données sans effacer
celles éventuellement déjà existantes dans le fichier (TRUE) ou les effacer si
le fichier existe déjà (FALSE, le défaut).
write.table()
write.table(x, file,
écrit dans un fichier un data.frame. Les options
append=FALSE, quote=TRUE, sont :
sep=" ", eol="\n",
na="NA", dec=".",
row.names=TRUE,
col.names=TRUE)
pdf(file="Arbres par
Création d’un PDF dans le dossier de travail
transect par
pdf() et dev.off() doivent être utilisées en même
milieux.pdf",width=11,heig
temps (l’un à la suite de l’autre)
ht=8.5)
dev.off()
Générer des données
Autres formes
Définition
:
1:5
[1]
1.
2.
donne ;
1, 2, ,3 ,4 ,5
seq(1, 5, 0.5)
seq(length=9, from=1,
to=5)
est prioritaire sur les opérations arithmétiques au
sein d’une expression
1. générer des séquences de nombres réels
2. le premier nombre indique le début de la
séquence, le second la fin, et le troisième
l’incrément utilisé dans la progression de la
séquence. On
concatène les objets énumérés entre parenthèses
1.
2.
gl(k, n)
où k est le nombre de niveaux (ou classes) du
gl(2,8,
factor, et n est le nombre de réplications pour
label=c("Control","Tre chaque niveau
at"))
seq()
c()
rep()
sequence()
gl()
Action
5
expand.grid()
expand.grid(h=seq(60,80,10 sert à créer un data.frame avec toutes les
), w=seq(100,300,100),
combinaisons des vecteurs ou facteurs donnés comme
sex=c("Male","Female"))
arguments
Manipuler des données Autres formes
x[i]
x[i,j]
Si x est une matrice ou un
data.frame, on accédera à
la valeur de la ième ligne
et jème colonne
Définition
Action
Ce système d’indexation se généralise facilement
pour les array, on aura alors autant d’indices que
l’array a de dimensions (par exemple pour une array
à trois dimensions : x[i,j,k], x[,,3], ...).
L’indexation peut aussi être utilisée pour supprimer
une (des) ligne(s) ou colonne(s). Par exemples,
x[-1,] supprimera la 1ère
ligne, ou x[-c(1,15),] fera de même avec les 1ère et
15ème
lignes.
x[x >= 5] <- 20
x <- 1:10
x[x == 1] <- 25
Calcul arithmétique Autres formes
et fonctions simples
log(x,base)
exp,
log10,
log2,
sin, cos, tan,
asin, acos, atan,
abs,
sqrt
sum(x)
prod(x)
max(x)
min(x)
which.max(x)
which.min(x)
range(x)
length(x)
mean(x)
median(x)
var(x) ou cov(x)
cor(x)
var(x,y) ou cov(x,y)
cor(x,y)
round(x,n)
rev(x)
sort(x)
rank(x)
pmin(x,y,...)
pmax(x,y,...)
cumsum(x)
cumprod(x)
cummin(x)
cummax(x)
match(x,y)
Définition
Action
somme des éléments de x
produit des éléments de x
maximum des éléments de x
minimum des éléments de x
retourne l’indice du maximum des éléments de x
retourne l’indice du minimum des éléments de x
idem que c(min(x),max(x))
nombre d’éléments dans x
moyenne des éléments de x
médianne des éléments de x
variance des éléments de x (calculée sur n – 1) ; si x est une matrice ou un
data.frame, la matrice de variance-covariance est alors calculée
matrice de corrélation si x est une matrice ou un data.frame (1 si x est un
vecteur)
Covariance entre x et y, ou entre les colonnes de x et de y si ce sont des
matrices ou des data.frame
corrélation linéaire entre x et y, ou matrice de corrélations si ce sont des
matrices ou des data.frame
arrondit les éléments de x à n chiffres après la virgule
inverse l’ordre des éléments de x
trie les éléments de x dans l’ordre ascendant ; pour trier dans l’ordre
descendant : rev(sort(x))
rangs des éléments de x
un vecteur dont le ième
élément est le minimum entre x[i], y[i], ...
idem pour le maximum
un vecteur dont le ième élément est la somme de x[1] à x[i]
idem pour le produit
idem pour le minimum
idem pour le maximum retourne
retourne un vecteur de même longueur que x contenant les éléments de x qui sont
dans y (NA sinon)
6
which(x==a)
which(x!=a)
choose(n,k)
na.omit(x)
na.fail(x)
table(x)
subset(x,...)
Calcul matriciel
retourne un vecteur des indices de x pour lesquels l’opération de comparaison
est vraie (TRUE), c’est-à-dire les valeurs de i telles que x[i]==a (ou x!=a ;
l’argument de cette fonction doit être une variable de mode logical)
calcule les combinaisons de k événements parmi n répétitions = n!/[(n – k)!k!]
supprime les observations avec données manquantes (NA) (supprime la ligne
correspondante si x est une matrice ou un data.frame)
retourne un message d’erreur si x contient au moins un NA
retourne un tableau des effectifs des différentes valeurs de x (typiquement
pour des entiers ou des factor)
retourne une sélection de x en fonction de critères (...) qui dépendent du mode
de x (typiquement des comparaisons : x$V1 < 10) ; si x est un data.frame,
l’option select permet de préciser les variables à sélectionner (ou à éliminer
à l’aide du signe -)
Autres formes
Définition
Action
matrix(data=5, nr=2, nc=2)
matrix(1:6, nr=2, nc=3)
rbind() et cbind()
juxtaposent des matrices en conservant les lignes ou les colonnes,
respectivement
%*%
Produit de 2 matrices
t()
transposition
diag()
Extraction ou modification de la diagonale d’une matrice
Partitionner une
fenêtre graphique
Autres formes
split.screen()
erase.screen()
layout()
partitionne la fenêtre graphique active
efface le graphe dernièrement dessiné
1. layout(matrix(c(1,2,3, 1. où le vecteur
permet des partitions plus
4), 2, 2))
indique les numéros complexes : elle partitionne
des sous-fenêtres, la fenêtre graphique active
et les deux
en plusieurs parties sur
chiffres 2 que la
lesquelles sont affichés les
fenêtre sera
graphes successifs
divisée en 2 dans
le sens de la
hauteur, et en 2
dans le sens de la
largeur
Pour visualiser la partition créée par layout() avant de faire les graphes
Layout.show()
Fonctions graphique
primaire
Autres formes
Définition
Définition
Action
Action
plot(x)
plot(x,y)
sunflowerplot(x,y)
graphe des valeurs de x (sur l’axe des y) ordonnées sur l’axe des x
graphe bivarié de x (sur l’axe des x) et y (sur l’axe des y)
idem que plot() mais les points superposés sont dessinés sous forme de fleurs
dont le nombre de pétales représente le nombre de points
piechart(x)
graphe en “camembert”
boxplot(x)
graphe dit de “box-and-whiskers”
stripplot(x)
graphe des valeurs de x sur une ligne (une alternative à boxplot()pour des
petits échantillons)
coplot(x~y|z)
graphe bivarié de x et y pour chaque valeur de z (si z est un facteur)
interaction.plot(f1,f2,y) si f1 et f2 sont des factor, graphe des moyennes de y (sur l’axe des y) en
fonction des valeurs de f1 (sur l'axe des x) et de f2 (différentes courbes) ;
l' option fun=
permet de choisir la statistique résumée de y (par défaut fun=mean)
matplot(x,y)
graphe bivarié de la 1ère
colonne de x contre la 1ère de y, la 2ème de x contre la 2ème de y, etc.
dotplot(x)
si x est un data.frame, dessine un graphe dit de Cleveland (graphes superposés
ligne-par-ligne et colonne-par-colonne)
pairs(x)
si x est une matrice ou un data.frame, dessine tous les graphes bivariés entre
les colonnes de x
plot.ts(x)
si x est un objet ts, graphe de x en fonction du temps, x peut être multivarié
mais les séries doivent avoir les mêmes fréquence et dates
hist(x)
histogramme des fréquences de x
7
barplot(x)
qqnorm(x)
qqplot(x,y)
contour(x,y,z)
image(x,y,z)
persp(x,y,z)
histogramme des valeurs de x
quantiles de x en fonction des valeurs attendues selon une loi normale
quantiles de y en fonction des quantiles de x
courbes de niveau (les données sont en fait interpolées), x et y doivent être
des vecteurs et z une matrice telle que dim(z)=c(length(x),length(y))
idem mais en couleur (les données sont tracées)
idem mais en 3-D (les données sont tracées)
errbar()
Pour ajouter des barres d’erreur
(/!\ attention, cette
fonction nécessite Hmisc
pour quelle puisse être
utilisée)
hclust()
dist()
Fonctions graphique
secondaire
cluster analysis
distance euclédienne ou autres
Autres formes
Définition
Action
points(x,y)
lines(x,y)
text(x,y,labels,...)
ajoute des points (l’option type= peut être utilisée)
idem mais avec des lignes
ajoute le texte spécifié par labels au coordonnées (x,y) ; un usage typique
sera: plot(x,y,type="n"); text(x,y,names)
segments(x0,y0,x1,y1)
trace une ligne du point
(x0,y0) au point (x1,y1 )
arrows(x0,y0,x1,y1,angle=3 id. avec une flèche au point (x0,y0) si code=2, au point (x1 ,y1 ) si code=1,
0, code=2)
ou aux deux points si code=3 ; angle contrôle l’angle de la pointe par rapport
à l’axe
abline(a,b)
trace une ligne de pente b et ordonnée à l’origine a
abline(h=y)
trace une ligne horizontale sur l’ordonnée y
abline(v=x)
trace une ligne verticale sur l’abcisse x
abline(lm.obj)
trace la droite de régression donnée par lm.obj (cf. § 5)
rect(x1,y1,x2,y2)
trace un rectangle délimité à gauche par x1, à droite par x2, en bas par y1 et
en haut par y2
polygon(x,y)
trace un polygone reliant les points dont les coordonnées sont données par x et
y
legend(x,y,legend)
ajoute la légende au point de coordonnées (x,y) avec les symboles donnés par
legend
title()
ajoute un titre et optionnellement un sous-titre
axis(side,vect)
ajoute un axe en bas (side=1), à gauche (2), en haut (3) ou à droite (4) ; vect
(optionnel) indique les abcisses (ou ordonnées) où les graduations seront
tracées
rug(x)
dessine les données x sur l’axe des x sous forme de petits traits verticaux
retourne
locator(n, type="n", ...) retourne les coordonnées (x,y) après que l’utilisateur ait cliqué n fois sur le
graphe avec la souris ; également trace des symboles (type="p") ou des lignes
(type="l") en fonction de paramètres graphiques optionnels (...) ; par défaut
ne trace rien (type="n")
text(x, y,
text(x, y,
ajouter des expressions mathématiques sur un graphe
expression(...))
expression(Uk[37]==over(1,
1+e^{-epsilon*(Texpression() transforme son argument en équation
theta)}))) va
mathématique suivant le même code que le traitement
de texte TeX
8
substitute()
Et
as.expression()
text(x, y,
Pour inclure dans une telle expression une variable
as.expression(substitute(R numérique on utilisera la fonction substitute() en
^2==r, list(r=Rsquared)))) conjonction avec la fonction as.expression() ;
text(x, y,
as.expression(substitute(R
^2==r,
list(r=round(Rsquared,
3)))))
text(x, y,
as.expression(substitute(i
talic(R)^2==r,
list(r=round(Rsquared,
3)))))
Paramètres graphiques Autres formes
Définition
par()
permet d’enregistrer les changements des paramètres
graphiques de façon permanente, c’est-à-dire que les
graphes suivants seront dessinés en fonction des
nouveaux paramètres spécifiés par l’utilisateur
par(bg="yellow")
Action
Analyses statistiques Autres formes
Définition
Action
lm()
glm()
aov()
anova()
loglin()
nlm()
TukeyHSD()
modèles linéaires
modèles linéaires généralisés
analyse de variance
comparaison de modèles
modèles log-linéaire
minimisation non-linéaire de fonctions
Tukey kramer
Pour faire afficher des information sur le modèle
summary()
residuals()
predict()
coef()
names()
summary(mymodel)
["r.squared"]
a <- coef(mymodel)[1]
b <- coef(mymodel)[2]
names(mymodel)
names(summary(mymodel))
affiche les résultats des tests statistiques sur les
paramètres du modèle
résidus de régression
valeurs prédites par le modèle
vecteur avec les paramètres estimés
Pour lister les éléments qui contiennent les
résultats d’une analyse
attach()
logiciels standards
library(eda)
ctest
eda
lqs
modreg
mva
nls
splines
stepfun
ts
Programmation
Autres formes
boucles et exécutions conditionnels
tests classiques (Fisher, “Student”, Wilcoxon,
Pearson, Bartlett, Kolmogorov-Smirnov, ...)
méthodes décrites dans “Exploratory data analysis”
par Tukey
régression “résistante” et estimation de covariance
régression “moderne” : lissage et ajustement local
analyses multivariées
régression non-linéaire
représentations polynomiales (plus connues en
français sous le nom de splines)
analyse de fonctions de distribution empiriques
analyse des séries temporelles
Définition
9
y <- numeric(length(x))
for (i in 1:length(x))
if (x[i] == b) y[i] <- 0
else y[i] <- 1
Supposons qu’on a un vecteur x, et pour les éléments
de x qui ont la valeur b, on va donner la valeur 0 à
une autre variable y, sinon 1. On crée d’abord un
vecteur y de même longueur que x
for (i in 1:length(x))
{y[i] <- 0}
if (x[i] == b)
{y[i] <- 0}
Écrire des fonctions
myfun <- function(S, F) { data <- read.table(F) plot(data$V1, data$V2) title(S)
layout(matrix(c(1,2,3), 3, 1,))
myfun("swallow", "Swal.dat")
myfun("wren", "Wrenn.dat")
myfun("dunnock", "Dunn.dat")
layout(matrix(c(1,2,3), 3, 1,))
myfun("swallow", "Swal.dat")
myfun("wren", "Wrenn.dat")
myfun("dunnock", "Dunn.dat")
Si vous voulez vous amuser avec plein de données différentes, tapez :
"
library(help = "datasets")
10
5. Arguments dans diverses fonctions dans R
Tableau III : Arguments dans diverses fonctions dans R
read.table()
file
header
Sep
quote
dec
row.names
col.names
as.is
na.strings
Skip
check.names
strip.white
le nom du fichier (entre ""), éventuellement avec son chemin d’accès (le symbole \ est
interdit et doit être remplacé par /, même sous Windows)
une valeur logique (FALSE ou TRUE) indicant si le fichier contient les noms des
variables sur la 1ère ligne
le séparateur de champ dans le fichier, par exemple sep="\t" si c’est une tabulation
les caractères utilisés pour citer les variables de mode character
le caractère utilisé pour les décimales
un vecteur contenant les noms des lignes qui peut être un vecteur de mode character, ou
le numéro (ou le nom) d’une variable du fichier (par défaut : 1, 2, 3, ...)
un vecteur contenant les noms des variables (par défaut : V1, V2, V3, ...)
contrôle la conversion des variables caractères en factor (si FALSE) ou les conserve en
caractères (TRUE)
indique la valeur des données manquantes (sera converti en NA)
le nombre de lignes à sauter avant de commencer la lecture des données
si TRUE, vérifie que les noms des variables sont valides pour R
(conditionnel à sep) si TRUE, scan efface les espaces (= blancs) avant et après les
variables de mode character
Write.table())
sep
col.names
row.names
quote
dec
na
eol
le séparateur de champ dans le fichier
Un logical indiquant si les noms des colonnes doivent être écrits dans le fichier
idem pour les noms des lignes
un logical ou un vecteur numérique ; si TRUE, les variables de mode character sont
entourées de guillemets "" ; si un vecteur numérique, ses éléments donnent les indices
des colonnes avec guillemets. Dans les deux cas, les noms des lignes et des colonnes
sont aussi avec guillemets s’ils sont écrits.
le caractère utilisé pour les décimales
indique le caractère utilisé pour les données manquantes
le caractère imprimé à la fin de chaque ligne ("\n" correspond à un retour-charriot)
Option des commandes graphiques
add=FALSE
axes=TRUE
type="p"
main=
sub=
si TRUE superpose le graphe au graphe existant (s’il y en a un)
si FALSE ne trace pas les axes
le type de graphe qui sera dessiné, "p" : points, "l" : lignes, "b" : points connectés
par des lignes, "o" : idem mais les lignes recouvrent les points, "h" : lignes
verticales, "s" : escaliers, les données étant représentées par le sommet des lignes
verticales, "S" : idem mais les données étant représentées par le bas des lignes
verticales.
annotations des axes, doivent être des variables de mode character (c’est-à- dire soit
une variable caractères, ou des caractères entre guillemets "...")
titre principal, doit être une variable de mode character
sous-titre (écrit dans une police plus petite)
par()
Voir ?par
adj
bg
contrôle la justification du texte (0 à gauche, 0.5 centré, 1 à droite)
spécifie la couleur de l’arrière-plan (ex. : bg="red", bg="blue", ... la liste des 657
couleurs disponibles est affichée avec colors())
contrôle comment le cadre est tracé, valeurs permises :
"o", "l", "7", "c", "u" ou "]" (le cadre ressemblant au caractère correspondant) ;
bty="n" supprime le cadre
une valeur qui contrôle la taille des caractères et des symboles par rapport au défaut ;
les paramètres suivants ont le même contrôle pour les nombres sur les axes, cex.axis,
les annotations des axes, cex.lab, le titre, cex.title, le sous-titre, cex.sub
contrôle la couleur des symboles ; comme pour cex il y a : col.axis, col.lab, col.title,
col.sub
xlab=, ylab=
bty
cex
col
11
font
las
lty
lwd
mar
mfcol
mfrow
pch
ps
pty
tck
tcl
xaxt
yaxt
un entier qui contrôle le style du texte (0 : normal, 1 : italique, 2 : gras, 3 : gras
italique) ; comme pour cex il y a : font.axis, font.lab, font.title, font.sub
un entier qui contrôle comment sont disposées les annotations des axes (0 : parallèles
aux axes, 1 : horizontales, 2 : perpendiculaires aux axes, 3 : verticales)
contrôle le type de ligne tracée, peut être un entier (1 : continue, 2 : tirets, 3 :
points, 4 : points et tirets alternés, 5 : tirets longs, 6 : tirets courts et longs
alternés), ou ensemble de 8 caractères maximum (entre "0" et "9") qui spécifie
alternativement la longueur, en points ou pixels, des éléments tracés et des blancs, par
exemple lty="44" aura le même effet que lty=2
une valeur qui contrôle la largeur des lignes
un vecteur de 4 valeurs numériques qui contrôle l’espace entre les axes et le bord de la
figure de la forme c(bas, gauche, haut, droit), les valeurs par défaut sont c(5.1, 4.1,
4.1, 2.1)
un vecteur de forme c(nr,nc) qui partitionne la fenêtre graphique en une matrice de nr
lignes et nc colonnes, les graphes sont ensuite dessinés en colonne
idem mais les graphes sont ensuite dessinés en ligne
contrôle le type de symbole, soit un entier entre 1 et 25, soit n’importe quel caractère
entre guillements
un entier qui contrôle la taille en points du texte et des symboles
un caractère qui spécifie la forme du graphe, "s" : carrée, "m" : maximale
une valeur qui spécifie la longueur des graduations sur les axes en fraction du
petit de la largeur ou de la hauteur du graphe ; si tck=1 une grille est tracée
une valeur qui spécifie la longueur des graduations sur les axes en fraction de
hauteur d’une ligne de texte (défaut tcl=-0.5)
xaxt si xaxt="n" l’axe des x est défini mais pas tracé (utile avec axis(side=1,
yaxt si yaxt="n" l’axe des y est défini mais pas tracé (utile avec axis(side=2,
plus
la
...))
...))
12
6.Data exploration
Selon l’article de Zuur, A. F., Ieno, E. N., & Elphick, C. S. (2010). A protocol for data exploration to avoid common
statistical problems. Methods in Ecology and Evolution, 1(1), 3–14. doi:10.1111/j.2041-210X.2009.00001.x
Démarche à suivre :
A. Formulatre biological hypothesis and carry out experiment & collect data
B. Data exploration
library(lattice)
library("calibrate", lib.loc="/Library/Frameworks/R.framework/Versions/2.15/Resources/library")
Choses à faire pour mes données :
1. «outlieres Y & X» graph tout, regarde s'il y a des outliers (données abérantes). regarde si outliers sont normals,
voir les commentaires dans la BD au besoin (monter base de données efficace contenant les bonnes valeurse
que je veux utiliser comme effets aléatoires et effets fixes).
a. Comment? : Boxplot ou Cleveland dotplot
b. R commands : boxplot() & dotchart() & dotplot()
2. «heterogeneity of variance / homogeneity Y» homogénéité de la variance? L'hétérogénéité (différences dans les
variations) peut causer des problèmes dans les régressions linéaires et des méthodes multivariées
a. Comment? regarde résiduels (residuel vs fitted values) avec conditional boxplot
b. R commands : bwplot()
3. «normality Y». de toutes les données, dans chaque groupe.
a. Comment? histogrammes de fréquence (traits vs fq)ou QQ-plot
b. R commands : hist() & histogram()
4. « Zero trouble Y » «double 0»s or inflation. Qu'est-ce que l'on fait s'il y a des 0? combien y en a-t-il? Est-ce que
ça change quelque chose
a. Comment? Frequency plot or corrgram
b. R commands : hist() & plot() & levelplot()
5. «collinearity X» Est-ce qu'il y a collinéarité entre les covariables. Voir s'il y a une certaine dépendance des
données entre les différentes variable (genre température et heure de la journée, poids et longueur). La
collinéarité est souvent attendu entre une dimension spatiale et temporelle. La collinéarité augmente les Type II
error
a. Comment? pour détecter collinéarité, pairwise scatterplots comparing covariate, correlation coefficients or a
PCA biplot appliqué sur toutes les covariables. VIF & scatterplots, correlations & PCA
b. R commands : xyplot() & pairs()
6. «Relationships Y & X» relation entre x (toutes les varibles mesurées) et y (variable réponse)?
a. Comment? avec multi-panel scatterplot ou un pair plot (variable réponse vs chacune des covariable),
conditional boxplots
b. R commands : xyplot() & pairs()
7. «interactions» considération d'une intéraction ?
a. Comment? en faisant un coplot (e.g. longueur aile, par poids, par sex, par mois).
b. R commands : coplot()
8. «independance of observations (Y)». (variable réponse vs temps ou espace)
a. Comment? ACF & variogram, plot Y vs time/pace
b. R commands : plot() & acf()
C. Apply statistical model
13
Ce document est basé directement sur différents documents et notes de cours provenant de l'excellent BIO2042
(Biostatistiques 2) donné à l'Université de Montréal. Documents produits par Daniel Borcard, Marie-Hélène
Ouellette, Guillaume Blanchet. Sophie Carpentier, démo, août 2014. [email protected]
Matrices
d'associati
on
Ressemblanc
e entre
Indice de ressemblance
Diag
onal
e de
la
matr
ice
Centrer-réduire?
Mode R
Variables
Corrélation (Pearson,
Kendall) entre chacune des
paires de variables
1
non
Mode Q
Objets
Distances (Euclidienne, etc.)
entre chaque paire d'objets
0
oui, sauf si mêmes unités et pas grave si pas
même poids
Test de Mantel: pour tester corrélation entre 2 matrices de ressemblances. Revient à faire
corrélations(ex.Pearson)entre matrices de similarité ou distance. Fonction R: mantel(matrice 1, matrice 2)
Distances
Distances
dans R
(package
"vegan")
Bon pour données
d'espèces…
Particularité?
Euclidienne
vegdist(x,
"euclidean")
abondances centréesréduites
Bray-Curtis
vegdist(x,
"bray")
abondances
Gower
vegdist(x,
"gower")
abondances
Jaccard
vegdist(x,
"jaccard")
présence-absence
Hellinger
vegdist((decost
and(x,
"hellinger")),
"euclidean")
abondances
distance euclidienne sur données transfo par
hellinger
Sorensen
?
présence-absence
donne plus de poids aux doubles présences
de corde
?
abondances
insensible aux doubles zéros!
variables catégoriques et continues dans même
matrice est possible
Code pour lui dire que c'est une matrice de distance: as.dist(vegdist(x, "whatever la distance choisie"))
Groupements: révèle potentielles discontinuités dans les données. Ordination: met en évidence des gradients.
À partir d'une matrice d'association, on peut faire un groupement ("clustering").
Groupeme
nt
A.K.A.
fonction R
Bon pour?
14
agglomérati
f
hiérarchiqu
e à liens
simples
single linkage
clustering
hclust(x, "single")
mettre en évidence les gradients
agglomérati
f
hiérarchiqu
e à liens
complets
complete
linkage
hlcust(x, "complete")
mettre en évidence les contrastes
hclust(x, "average")
utilisées en taxonomie numérique, basées sur
similarité moyenne des groupes plutôt que nombre
de liens entre groupes
hiérarchiqu
e
agglomérati
f moyen**
**
méthodes
# d'objets des
groupes
Moyennes
arithmétiques
Groupement centroïde
Égaux
UPGMA
UPGMC
Inégaux
WPGMA
WPGMC
Données à
expliquer
Variables
explicatives
Analyse à faire
1 variable
1 variable
Régression simple
1 variable
m variables
Régression multiple
p variables
-
Ordination simple
PCA
Scaling 1
Graphiq
ue
Angles
Distance
vecteurs
pas de
sens
dist. perpend.
au vecteur
d'un objet (pt)
approx. sa
valeur sur
cette variable.
Plus objets
proches, plus
variables
similaires.
Basé sur
distance
euclidienne.
15
fonction R
fonction R
fonction R
rda((
dec
osta
nd(x
,
"helli
nger
"),
scali
ng=
1 ou
2)
Scaling 2
vecteurs
représe
ntent
corrélati
ons
dist. perpend.
au vecteur
d'un objet (pt)
approx. sa
valeur sur
cette variable.
Entre objets
n'a pas de
sens. Basé
sur distance
euclidienne.
AFC
Scaling 1
points
-
pts-objets
proches=profil
sp. Similaire.
Basé sur
distance du
khi-carré.
cca(
x,
scali
ng=
1 ou
2),
don
née
s
brut
es
Scaling 2
points
-
pts-sp.
proches=fréq.r
elativ.similaire
s dans
l'ens.des
objets. Plus
pt-sp. proche
d'un pt-objet,
plus y
contribue (et
donc y est
abondant).
Basé sur
distance du
khi-carré.
PCo
A
N/A
Peut
montrer
objets et
descripteu
rs
seulement
si fonction
"wascores
" de
vegan, ou
biplot.pcoa
(package
PCNM, de
Legendre)
cmd
scal
e(x,
k=5,
sig=
TRU
E)
x est une
matrice de
distances,
k est le
nombre de
dimensions
(max= n-1),
sig=TRUE
si tu veux
affichage
des
vecteurs
propres.
16
p variables
m variables
Ordination canonique
RDA
(can
oniq
ue
de
PCA
)
Scaling 1
vecteurs
fonction R
rda((d
ecost
and(x
,
"helli
nger"
),y,
scalin
g= 1
ou 2),
où x
est
matri
ce
expliq
uée
transf
o. et
y est
matri
ce
explic
ative
Scaling 2
vecteurs
CCA
(cano
nique
de
AFC)
Scaling 1
points
cca(
x,y)
Scaling 2
points
fonction R
Pour
tester
significati
on RDA
ou CCA,
utiliser
fonction
R:
anova.cca
(rda ou
cca)
Quand on plot une ordination: plot(resultat de l'ordination, scaling=1 ou 2). Ordination en 3D: ordirgl(resultat de l'ordination,
type-"t", scaling=1)
17