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