1 Utilisation R & R Studio

Au début de chaque session, il faut s’assurer qu’on travaille dans l’espace de travaille (ou le working directory en anglais) souhaité. L’idéale est de travailler dans un espace - et donc un dossier sur votre ordinateur - dédié à la session ou aux analyses en question. Quand vous travaillez dans un R Project, votre session s’ouvre automatiquement dans l’espace de travail et donc le dossier où ce situe votre fichier .RProj. Si vous n’utilisez pas de R Project, vous pouvez vous-mêmes préciser l’espace de travaille avec la fonction setwd(). Il faut alors préciser, entre parenthèses et guillemets, le chemin absolu vers votre dossier de travail. P.ex. setwd("~/Documents/M1/MQEM/TD_R"). A tout moment vous pouvez retrouver votre espace de travail actuel avec la fonction getwd().

Un script R vous permet d’écrire et d’éditer des lignes de codes pour ensuite les utiliser dans la console R (si vous rentrez les commandes directement dans R, vous devriez systématiquement recopier votre code après chaque éxécution si vous devez faire des corrections). Vous pouvez éxécuter les codes depuis le script en sélectionnant les codes que vous voulez éxécuter et en appuyant sur ctrl-Entrée si vous êtes sur PC, ou cmd-Entrée si vous êtes sur Mac.

Le language R est centré sur les objets. Ces objets peuvent être presque tout, d’un simple nombre ou d’une chaîne de caractères (comme un mot) à des structures très complexes comme la sortie d’un graphique, un résumé de votre analyse statistique ou un ensemble de commandes R qui effectuent une tâche spécifique. On crée un nouvel objet dans R avec l’operateur d’affectation <-. On peut alors assigner un objet (comme un nouveau jeu de données, voir Importer un jeu de données ci-dessous) à un nom souhaité, p.ex mon_objet1 <- c(1:10) pour créer un vecteur de valeurs numériques allant de 1 à 10.

On peut ensuite appliquer des fonctions sur ces objets qui nous permettent d’effectuer des taches précises. Ces taches peuvent être simples, comme mean(mon_objet1) qui nous calcule la moyenne de notre vecteur de valeurs numériques. Les taches peuvent aussi être plus complexes, comme créér un modèle linéaire avec les colonnes x et y de mes_donnees avec la fonction lm(). On peu ainsi assigner ce modèle à un nouvel objet, mon_modele, pour le stocker et ensuite appliquer d’autres fonctions sur celui-ci. mon_modele <- lm(y ~ x, data = mes_donnees). Les fonctions prennent toujours différent ARGUMENTS entre leurs parentèses, séparées par des virgules. Pour savoir quels arguments sont requis et quel format de données est nécessaire, on peut retrouver toutes les spécificités de chaque fonction dans sa page d’aide dédiée en exécutant la commande ?fonction(), p.ex. ?lm().

2 Importer un jeu de données

Vous pouvez importer vos jeu de données en fonction de leur format. Pour des fichiers .csv, utilisez read.csv(). Pour des fichier .txt, utilisez read.table(). Les fichiers Excel sont déconseillé, le mieux est de d’abord le convertir en .csv ou .txt avant de les importer dans R. Pensez à spécifier comment les colonnes de votre jeu de données sont séparé avec l’argument sep = "".

P.ex. mes_donnees <- read.csv(file = "mon/chemin/mes_donnees.csv", sep = ";")

3 Explorer, transformer et nettoyer

head()
colnames() / rownames()
melt()
summary()
str()
mean()
sd()
apply()     # appliquer une fonction sur toutes les colonnes ou toutes les rangées d’un dataframe

avec le package dplyr (je vous ai mis l’aide-mémoire sur Ametice) :

filter()
select()

4 Visualisations

boxplot()
vioplot()
hist()

p.ex. Plot violon

library(vioplot)
vioplot(df20, 
        ylab = "Rendement (quintaux/ha)", 
        names = c("Variété I", "Variété II", "Variété III", "Variété IV"),
        col = "lightblue")

5 Tests statistiques simples

t.test()
shapiro.test()
wilcox.test()
anova(aov(y ~ x, data = df)

6 Corrélations et régressions

cor.test(x, y)         # appliquer des tests de correlation type Pearson, Kendall ou Spearman entre x et y
lm(y ~ x, data = df)   # créer un modèle linéaire

p.ex.

cor.test(df28$age, df28$diametre, method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  df28$age and df28$diametre
## t = 5.2915, df = 5, p-value = 0.003214
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.5486638 0.9885009
## sample estimates:
##       cor 
## 0.9211324
model_arbre <- lm(diametre ~ age, data = df28)
summary(model_arbre)
## 
## Call:
## lm(formula = diametre ~ age, data = df28)
## 
## Residuals:
##          1          2          3          4          5          6          7 
## -3.000e+01  1.000e+01  2.000e+01  1.000e+01  1.000e+01 -5.329e-15 -2.000e+01 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)    40.00      16.90   2.366  0.06424 . 
## age            20.00       3.78   5.292  0.00321 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 20 on 5 degrees of freedom
## Multiple R-squared:  0.8485, Adjusted R-squared:  0.8182 
## F-statistic:    28 on 1 and 5 DF,  p-value: 0.003214
predict(model_arbre, newdata = data.frame(age=c(5, 10, 15))) # nous permet de prédire la variable réponse de notre modèle (y, ici : diamètre) pour différentes valeurs de la variable explicative (x, ici: age)
##   1   2   3 
## 140 240 340
# on peut aussi le faire à la main connaissant la pente et l'intercept du modèle. Mais ça devient intéressant quand on veut prédire multiple valeurs à la fois, ou quand on a des modèles plus compliqués

7 Analyses multivariées

7.1 Analyse en Composantes Principales ACP

Plusieurs packages permettent de faire des ACP. On en a vu quelques-uns:

  • package stats (déjà installé de base sur R) : princomp()
  • package vegan : rda()
  • package ade4 : dudi.pca

Par exemple:

temp <- read.csv("data/temperature.csv", sep = ";", row.names = 1)
temp <- temp[,-11]
colnames(temp)
##  [1] "Janv" "Fevr" "Mars" "Avri" "Mai"  "Juin" "Juil" "Aout" "Sept" "Octo"
## [11] "Nove" "Dece" "Lati" "Long"
library(vegan)
acp1 <- rda(temp[,1:12], scale = TRUE)
biplot(acp1)

7.2 Analyse Principale des Coordonnées PCoA

  1. On calcule d’abord la dissimilarité ou distance entre nos sites / echantillons / communautés
    • vegan : vegdist()
  2. Ensuite on fait une PCoA sur ces distances
    • cmdscale()
  3. Puisque on calcule des distance entre sites, on “perd” l’information des espèces. On peut, dans une troisième étape, reprojeter nos espèces sur notre PCoA
    • vegan : wascores()

7.3 Nonmetric dimensional scaling NMDS

Voir 07/04/2022

8 Figures avec ggplot2

Voir 07/04/2022

8.1 La logique de ggplot2

Voir 07/04/2022

9 Des cartes simples sous R

Voir 07/04/2022