0% ont trouvé ce document utile (0 vote)
225 vues19 pages

Introduction à R pour débutants

Ce document présente une introduction à R et à ses fonctionnalités de base pour l'analyse de données. Il décrit comment charger et manipuler des données, réaliser des statistiques descriptives et des graphiques, et effectuer des tests statistiques.

Transféré par

daoud ounaissi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
225 vues19 pages

Introduction à R pour débutants

Ce document présente une introduction à R et à ses fonctionnalités de base pour l'analyse de données. Il décrit comment charger et manipuler des données, réaliser des statistiques descriptives et des graphiques, et effectuer des tests statistiques.

Transféré par

daoud ounaissi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Introduction à R

Ce document est extrêmement succinct. Vous pouvez facilement trouver des


informations plus détaillées sur internet, comme les quelques documents mis à votre
disposition sur le site de l'UE.

NB : dans R il y a de multiples façons de faire la même chose, à travers la syntaxe


qui peut être utilisée de différentes façons, ou les mêmes analyses qui existent dans
des packages variés. Si vous êtes habitués à une autre façon de faire que ce qui est
présenté, vous pouvez bien sûr l'utiliser.

Attention, la syntaxe de R est sensible à la casse (majuscules ou minuscules) !


Ne mettez pas de caractères spéciaux dans les noms (accents, espace,
parenthèses, virgule, slash, etc.), et utilisez le point comme séparateur décimal
(PAS la virgule).

Commandes/fonctions

Il est possible de réaliser dans R des opérations (mean, sqrt, … voir plus bas), qui
génèrent un résultat immédiat à l’écran, mais on utilise plus souvent des fonctions
([Link], boxplot, lm, …) qui sont toujours suivies de leurs arguments entre
parenthèses. Les arguments permettent d’indiquer à la fonction les données et les
options choisies. On peut ajouter des commentaires (ignorés) après #.

Entrer des données

Pour aller chercher un fichier en format texte (.txt) n'importe où sur l'ordinateur,
avec des en-têtes de colonnes (sinon h ou header=F) :
donnees=[Link]([Link](),h=T)

On a ici créé un objet nommé donnees auquel on a assigné les données du fichier
choisi. On a utilisé pour ça l’opérateur =, mais on aurait pu utiliser <- (ou ->, plus
rare).

On peut aussi simplement créer un vecteur (1 colonne de données val1… valn) :


X=c(val1,val2,…) # ou X<-c(val1,val2,…)

Pour créer un objet avec plusieurs colonnes, il faut utiliser la fonction matrix avec
nrows lignes et ncol colonnes dont les noms sont donnés par dimnames :
X=matrix(c(val1,val2,val3,val4,val5,val6), nrow=2, ncol=3,
byrow=TRUE, dimnames=list(c("L1","L2"),c("C1","C2","C3")))

Un tableau de données, avec des lignes (objets : individus, observations,


prélèvements, …) et des colonnes (variables), qui ont éventuellement des
identifiants, est dans R un dataframe.

1/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

On peut modifier le tableau avec la fonction edit, qui ouvre l’éditeur de R :


donnees2=edit(donnees) # pour enregistrer les modifications
dans un nouvel objet

?nom_de_la_fonction donne l’aide sur une fonction (connue)


[Link]("mot_cle") liste tous les packages où le mot apparaît

Pour "attacher" les variables du fichier à l'espace de travail. Permet ensuite


d'accéder aux variables par leurs noms (colonnes) :
attach(donnees)
On peut annuler cette opération par :
detach(donnees)

Il est sinon possible de créer des objets correspondants aux variables, par exemple
pour les variables 1 et 2 (e.g. X1 et X2) dans les colonnes 1 et 2 du fichier
donnees :
X1=donnees[,1]
X2=donnees[,2]
ou encore (au cours de l’utilisation d’une fonction)
(X1,X2,data=donnees)
ou
(donnees$X1,donnees$X2)

Pour appliquer à une variable X divisée en groupes une fonction (moyenne (ici),
variance, test de normalité…) :
tapply(X,groupe,mean)

Pour créer un sous-jeu X1 des données X correspondant à une modalité d’un


facteur (ici A pour un facteur Fact, par exemple à 2 niveaux A et B) :
X1=subset(X,Fact=="A")

On a parfois besoin de vider la mémoire de R :


rm(list=ls())

Statistiques descriptives

moyenne mean(X)
variance estimée var(X)
somme sum(X)
effectif (n) length(X)
écart-type estimé sd(X)
médiane median(X)
erreur-type sqrt(var(X)/length(X))

2/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Quelques transformations de données

Logarithme népérien : log(X)


Logarithme en base 10 : log10(X)
Racine : sqrt(X)
Inverse : 1/X
Arcsinus : asin(X)

Diagramme quantile normale

qqnorm(X)
qqline(X) #pour tracer une ligne

Graphiques

La fonction plot() ouvre une nouvelle fenêtre graphique, qui s’effacera quand un
autre graphique sera créé. Pour créer une nouvelle fenêtre en plus de la précédente,
il faut utiliser la fonction windows(). Il est aussi possible de diviser une fenêtre pour
faire apparaître plusieurs graphiques sur une même page :
par(mfrow=c(3,2)) # partage la page en 3 lignes et 2 colonnes

La fonction plot génère un graphique différent en fonction de l’objet qu’elle


contient, et donc des analyses réalisées.
Par exemple, pour générer un nuage de points entre 2 variables X et Y, taper :
plot(X,Y) # ou plot(Y~X)

On peut ajouter des éléments (facultatifs) aux graphiques, entre autres :


main ajoute un titre (entre "") en haut du graphique
xlab et ylab ajoutent des noms (entre "") aux axes des abscisses et des
ordonnées
type permet de modifier les symboles (p pour des points, 1 pour des lignes)
pch permet de modifier les types de symboles (de nombreux types sont disponibles
et correspondent à des nombres : 0 = carré, 1 = rond, 2 = triangle, etc.)
col modifie la couleur ("black", …) des symboles
cex modifie la taille des symboles (1 est la taille par défaut)

Boxplot
boxplot(X)
boxplot(X1,X2,…) # permet de faire apparaître plusieurs
boxplots dans le même repère
boxplot(X~groupe) # ~ signifie "en fonction de"

Histogramme
hist(X) # nombre de classes m à partir de la règle de Sturge
Si on désire entrer ses propres limites de classes (l1, l2, etc.) :
hist(X,breaks=c(l1,l2,l3,…,…))

3/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

"Sourcer" une fonction

Cela permet d’utiliser des fonctions permettant de réaliser des analyses en plus des
fonctions de base de R. On le fait via le menu
Fichier -> Sourcer du code R… # sur Mac : Sourcer Fichier…
Permet ensuite de l'appliquer tel que décrit à la première ligne du fichier.

Packages

Il est souvent nécessaire d’installer des packages (« librairies ») dans R, qui sont
des ensembles de fonctions permettant de réaliser des analyses non disponibles
dans la version de base :
Menu Packages & Données -> Installeur de Packages

Il faut d’abord acquérir la liste des packages, puis les installer/mettre à jour en
installant les dépendances (c’est-à-dire les éventuels autres packages nécessaires).
Pour charger le package nom_package, entrez :
library(nom_package)

4/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Test de comparaisons de 2 moyennes

Pour 2 groupes x1 et x2 (même variable).


[ou avec un vecteur "groupe" à 2 niveaux, G, et une variable x : x~G]
Pour un test bilatéral : alternative = "[Link]" # Par défaut. Voir
aide des fonctions
Pour un test unilatéral : alternative = "less" ou "greater"

Tests de normalité
Shapiro-Wilk : [Link](x)

Données non appariées

Comparaison de variances :
Test F
[Link](x1,x2) # ou [Link](x~G) avec une variable
identifiant 2 groupes [idem pour les autres tests]

Test de Fligner-Killeen (non paramétrique)


[Link](x1,x2) # ou [Link](x~G)

Comparaison de moyennes :
Test t
[Link](x1,x2,[Link]=TRUE)

Avec correction de Welch


[Link](x1,x2) # par défaut : [Link]=FALSE

Test de Mann-Whitney
[Link](x1,x2,paired=FALSE) # par défaut

Test t par permutation


Sourcer fonction [Link].R
[Link](x1,x2,nperm=999) # valeur par défaut, modifiable

Données appariées

Test t
[Link](x1,x2,paired=TRUE)

Test de Wilcoxon
[Link](x1,x2,paired=TRUE)

Test t par permutation


Sourcer fonction [Link].R
[Link](x1,x2,nperm=999)

5/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Test de comparaison de 2 proportions

Pour 2 groupes comportant des nombres de succès x1 et x2 sur des populations


d’effectifs n1 et n2.
On peut tester l’égalité des proportions de plus de 2 groupes.

Pour tester l’égalité des proportions x1/n1 et x2/n2, on peut entrer :

[Link](c(x1,x2),c(n1,n2))

Il est également possible d’entrer les données dans une matrice 2X2 (x) contenant
une colonne pour les succès et une pour les échecs, par :

[Link](x)

Pour un test bilatéral : alternative = "[Link]" # par défaut


Pour un test unilatéral : alternative = "less" # ou "greater"
La correction de continuité s’applique ou non par correct=TRUE # or FALSE

Avec p = [valeur] # ou prob = [valeur]


il est possible de tester si une proportion est égale à une valeur donnée p (entre 0 et
1) ou si plusieurs proportions observées sont égales à p.
Avec p = NULL # par défaut
on teste l’égalité des proportions observées.

6/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Puissance et n optimal

Il s’agit de déterminer la puissance (power) d’un test à déclarer comme significatif


un écart donné entre des moyennes pour un nombre d’observations donné n
associé à une dispersion donnée, pour un niveau de signification ([Link]) fixé.
On peut également calculer un paramètre, comme n, pour obtenir une puissance
fixée, par rapport à un écart ou une dispersion donné(e) entre les moyennes.
Les conditions d’indépendance, de normalité, et d’homoscédasticité doivent être
respectées.

Comparaison de moyennes de 2 groupes

Il est nécessaire d’indiquer la valeur de l’écart-type moyen des 2 groupes (en


prenant la racine carrée de la variance pondérée si nécessaire) sd, et l’écart attendu
delta entre les moyennes, sauf si c’est un de ces paramètres qu’on désire estimer
en fixant tous les autres.

La fonction
[Link](n=NULL, delta=[valeur], sd=[valeur],
power=[valeur], [Link] = 0.05)
retourne la valeur du paramètre déclaré comme NULL (ici n) si les autres ont des
valeurs fixées. Le n éventuellement calculé est la valeur dans chaque groupe. Le
niveau de significativité peut être modifié ou estimé à partir des autres paramètres.
On peut aussi ne pas mettre le paramètre à estimer dans les arguments.

Il faut aussi spécifier le type de données, appariées ou non via


type = c("[Link]", "[Link]", "paired")
ainsi que si le test est bilatéral ou unilatéral :
alternative = c("[Link]", "[Link]")

Comparaison de moyennes de > 2 groupes

Il est nécessaire d’indiquer les valeurs des dispersions inter-groupes [Link]


et intra-groupes [Link], sauf si c’est une de celles-ci qu’on désire estimer en
fixant tous les autres paramètres.
Pour un facteur F et une variable X, on peut calculer ces dispersions comme suit :
Variance inter-groupes : var(tapply(X,F,mean))
Variance intra-groupes : mean(tapply(X,F,var))

La fonction
[Link](groups=[valeur], n=[valeur],
[Link]=[valeur], [Link]=[valeur], power=NULL,
[Link] = 0.05)
retourne la valeur du paramètre déclaré comme NULL (ici power) si les autres ont
des valeurs fixées. Le niveau de significativité peut être modifié ou estimé à partir
des autres paramètres.

7/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Analyses de variance

Pour les analyses de variance, les fonctions anova(lm(…)) et aov peuvent être
utilisées. Nous allons utiliser cette dernière, qui présente les résultats (via summary)
de la façon la plus classique, qui réclame que le critère de classification (s’il est
identifié par des chiffres) soit déclaré [Link] (par exemple pour un facteur A :
A=[Link](A))

ANOVA à 1 facteur (Fact ; la variable est X)

paramétrique
Calcul des moyennes (facultatif) et test de normalité (Shapiro-Wilk)
tapply(X,Fact,mean)
tapply(X,Fact,[Link])

Calcul des variances (facultatif) et test de Bartlett


tapply(X,Fact,var)
[Link](X~Fact)

ANOVA
summary(aov(X~Fact))
ou
anova1=aov(X~Fact) # idem pour les autres types d’ANOVA
summary(anova1)

par permutation
Test d'homogénéité des variances
Sourcer la fonction [Link].R
[Link](X,Fact,nperm=999) # ou un autre nombre de
permutations

ANOVA
Sourcer la fonction anova.1way.R
anova.1way(X~Fact,nperm=999)

non paramétrique
Test de Fligner-Killeen
[Link](X~Fact)

Test de Kruskal-Wallis
[Link](X~Fact)

ANOVA à 2 facteurs croisés (Fact1 et Fact2 ; la variable est X)

Calcul des moyennes (facultatif) et test de normalité


tapply(X,interaction(Fact1,Fact2),mean)

8/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

tapply(X,interaction(Fact1,Fact2),[Link])
ou
tapply(X,Fact1:Fact2,mean)
tapply(X,Fact1:Fact2,[Link]) # pour effectuer le test de
normalité sur les groupes identifiés par les croisements de
modalités (= les cases du tableau)

Calcul des variances (facultatif) et test de Bartlett


tapply(X,interaction(Fact1,Fact2),var)
ou
tapply(X,Fact1:Fact2,var)

[Link](split(X,list(Fact1,Fact2)))
ou
[Link](X,Fact1:Fact2)

paramétrique
sans répétitions
summary(aov(X~Fact1+Fact2))

avec répétitions
summary(aov(X~Fact1*Fact2)) # "*" signifie que les 2 facteurs
et leur interaction doivent être calculées
ou
summary(aov(X~Fact1+Fact2+Fact1:Fact2))

Diagramme d'interactions
[Link](Fact1,Fact2,X) # le premier facteur (ici
Fact1) sera en abscisse

par permutation
Sourcer la fonction anova.2way.R
anova.2way(X~Fact1*Fact2,model=1,nperm=999) # pour une ANOVA
de modèle 1 (2 facteurs fixes)

non paramétrique
Test de Friedman (2 facteurs croisés sans répétitions)
[Link](X~Fact)

Test de Sheirer-Ray-Hare (2 facteurs croisés avec répétitions)


Sourcer la fonction SRH.R
SRH(X,Fact1,Fact2)

ANOVA hiérarchique (avec le facteur principal A et le sous-facteur b)

paramétrique
Test du sous-facteur (par rapport à la variation due aux erreurs)
anovaH=aov(X~A/b)
summary(anovaH) # ou summary(aov(X~A/b))

9/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

# Dans le summary, seule la ligne A:b est valide

Test du facteur principal


anovaH2=aov(X~A+Error(A:b))
summary(anovaH2) # ou summary(aov(X~A+Error(b)))
# Dans le summary, la ligne A est correcte

par permutation
Sourcer la fonction [Link].R
[Link](X,A,b,nperm=999)

Tests post-hoc

Test HSD de Tukey


avec 1 facteur
anova1=aov(X~Fact)
TukeyHSD(anova1) # ou TukeyHSD(aov(X~Fact))

avec 2 facteurs
anova2=aov(X~Fact1*Fact2)
TukeyHSD(anova2,"Fact1") # ou "Fact2", bien sûr.

On peut aussi utiliser des tests 2 à 2 avec correction pour l'inflation de l'erreur
de Type 1 (comme la correction de Bonferroni) :
[Link](X,Fact,[Link]="bonf")

Non paramétriques
Conover-Iman
Il faut installer le package [Link]
[Link](X,Fact)

Dunn
Il faut installer le package [Link]
[Link](X,Fact)

10/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Corrélation et régression linéaire simple

Corrélation et covariance (2 variables X1 et X2)

Calcul de la covariance :
cov(X1,X2)

Corrélation paramétrique et non paramétrique


Calcul de la corrélation :
cor(X1,X2)

Test de la corrélation :
paramétrique
[Link](X1,X2) # avec calcul de l’intervalle de confiance
Il est bon (mais pas toujours suffisant) de tester avant la normalité de chaque
variable avec [Link]. Les conditions peuvent être vérifiées de la même
façon avec le même diagnostic que pour la régression.

Par défaut, l’argument method est pearson (corrélation paramétrique). Pour


calculer/tester une corrélation non paramétrique, il suffit de le changer pour
spearman ou kendall :
cor(X1,X2,method="spearman")
[Link](X1,X2,method="kendall")

par permutations
Sourcer la fonction corPerm.R
corPerm1(X1,X2,nperm) # nperm = nombre de permutations. Le
test est bilatéral

Test de H0 r ≠ 0 (soit r = r0) :


Sourcer la fonction [Link].R
[Link](r,r0,n) # n = nombre d’observations

11/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Régression linéaire simple

On a ici une variable Y (variable réponse ou dépendante) qui dépend de X (variable


explicative ou indépendante)

Tracé du diagramme de dispersion :


plot(X,Y)

Calcul de la droite de régression et test des coefficients :


reg=lm(Y~X)
summary(reg) # ou summary(lm(Y~X))

Tableau d’ANOVA du modèle :


anova(reg) # ou anova(lm(Y~X))

Tracé de la droite de régression de modèle 1 dans le diagramme :


plot(X,Y) # plot doit être appelé avant le tracé de la droite
abline(reg) # ou abline(lm(Y~X))

Diagnostic et évaluation du modèle de régression via l’examen des résidus :


plot(reg) # ou plot(lm(Y~X))
Cette fonction produit 4 graphiques séquentiellement, qui peuvent être affichés
simultanément sur la même page en entrant avant :
par(mfrow=c(2,2)) # partage la page en 2 lignes et 2 colonnes

Il est possible de récupérer les résidus de cette régression via


resid(reg)
On peut tester la normalité des résidus via un test de Shapiro-Wilk.

Calcul d’intervalles de confiance


Paramètres du modèle
confint(reg) donne par défaut l’estimation à 95 % de tous les paramètres, le
niveau peut être modifié via l’argument level (= 0.95 par défaut)

Estimation pour une valeur Xi de X


nouvX=[Link](X=Xi) # Xi est un chiffre, bien sûr
predict(lm(Y~X),nouvX,interval="confidence") # intervalle de
confiance d’une estimation de Yi pour un Xi, le niveau peut
être modifié via level (=0.95 par défaut)
ou directement
predict(lm(Y~X),[Link](X=Xi),interval="confidence")

Calcul d’un intervalle de prédiction :


predict(lm(Y~X),nouvX,interval="prediction") # intervalle de
prédiction d’une estimation de Yi pour un nouveau Xi

12/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Lien entre variables qualitatives

On considère 2 variables qualitatives W et Z, avec respectivement les modalités W1


et W2, et Z1 et Z2.

Test du Khi-2

Ce test permet d’analyser des tableaux plus grands que 2X2 si besoin.

La première étape est de réaliser un tableau de contingence (ici tabcont) qui va


lister les fréquences des croisements de modalités des variables considérées. C’est
ce que fait la fonction table, à partir d’une matrice contenant pour plusieurs
observations les modalités de W et Z dans 2 colonnes :

tabcont=table(W,Z)

On peut bien sûr directement créer la matrice si on dispose des fréquences, par
exemple via la fonction matrix.

Pour effectuer le test du Khi-2 :

[Link](tabcont)

Il possible de calculer et visualiser les effectifs théoriques par :


[Link](tabcont)$expected

La correction de continuité s’applique ou non par correct=TRUE # or FALSE

Attention, les effectifs théoriques absolus doivent être d’au moins 5, sinon un
message d’erreur est produit.

Test exact de Fisher

Ce test est ordinairement réservé aux tableaux de contingence 2X2, et doit


également être effectué sur un tableau de contingence. Il est valide pour toutes les
tailles d’échantillons, donc avec les faibles effectifs. La probabilité exacte d’obtenir
les données observées est calculée, avec une durée qui augmente rapidement avec
le nombre de lignes et de colonnes. Le test s’effectue comme suit :

[Link](tabcont)

13/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Analyse de covariance

Analyse de covariance

- une variable dépendante Y


- une variable indépendante quantitative X
- une variable indépendante qualitative Z, qui doit être déclarée [Link] si
nécessaire (niveaux identifiés par des chiffres = groupes)

Tracé du diagramme de dispersion :


par exemple pour un facteur Z à 3 niveaux Z1, Z2, Z3 :
plot(X,Y,type='n')
symbols=c(1,2,3) # vous pouvez choisir d’autres symboles
points(X,Y,pch=symbols[[Link](Z)])
legend(locator(1),c('Z1','Z2','Z3'),pch=c(1,2,3)) # cliquez
sur le graphique pour placer la légende

Approche paramétrique :
anc=lm(Y~X*Z)
anova(anc) # ou anova(lm(Y~X*Z))
Dans le tableau d’ANOVA, on aura :
l’effet de X sur Y, qui doit d’abord être évalué pour chaque niveau du facteur Z
l’effet de Z sur Y
l’effet de l’interaction de X et Z sur Y, notée X:Z

Ou (suit pas à pas l’approche montrée en cours) :


Sourcer la fonction ancova.R
ancova(Y,Z,X)

14/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Régression multiple
Régression polynomiale

Régression multiple

On a une variable Y (variable réponse ou dépendante) qui dépend de plusieurs


variables X1, X2, … Xn (variables explicatives ou indépendantes).
On considèrera arbitrairement ci-dessous un modèle avec 3 variables
indépendantes.

Calcul du modèle de régression et test des coefficients :


regm=lm(Y~X1+X2+X3)
summary(regm) # ou summary(lm(Y~X1+X2+X3))

Sélection des variables


On peut effectuer cette sélection « à la main » en retirant ou en ajoutant des
variables Xn selon la procédure choisie.

Il est également possible d’utiliser une procédure automatique :


regm=lm(Y~X1+X2+X3)
step(regm) # la procédure par défaut est une élimination
descendante, modifiable via "direction"
La fonction step sélectionne le meilleur modèle en se basant sur l’AIC (Akaike
Information Criterion)

Elimination descendante (backward elimination)


step(regm,direction="backward")

Sélection ascendante (forward selection)


step(regm,direction="forward")

Procédure pas à pas (stepwise procedure)


step(regm,direction="both")

Diagnostic et test du modèle de régression via l’examen des résidus :


plot(regm)
Cette fonction produit 4 graphiques séquentiellement, qui peuvent être affichés
simultanément sur la même page en entrant avant :
par(mfrow=c(2,2))

Il est possible de récupérer les résidus de cette régression via


resid(regm)

15/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Régression polynômiale

Il s’agit ici d’ajuster un modèle non linéaire aux données. Cela peut se faire dans un
contexte de régression simple ou multiple, nous allons nous cantonner à la
régression simple Y = f(X), dans laquelle la variable indépendante X sera élevée à
différents ordres ≥ 2 en fonction du modèle choisi à travers l’examen du nuage de
points.

Pour un modèle d’ordre 2 (e.g. regpol2) :


regpol2=lm(Y~X+I(X^2))
ou
regpol2=lm(Y~poly(X,2,raw=TRUE)) # plus pratique si on veut
utiliser un polynôme d’ordre élevé

Pour un modèle d’ordre 3 (e.g. regpol3) :


regpol3=lm(Y~X+I(X^2)+I(X^3))
ou
regpol3=lm(Y~poly(X,3,raw=TRUE))

etc.

Test des coefficients :


summary(regpol)

Les mêmes procédures de sélection des variables qu’en régression linéaire multiple
peuvent être utilisées.

Tracé du diagramme de dispersion avec la courbe de régression :


plot(X,Y)
x=min(X):max(X) # attention à la casse ici
y=predict(regpol,list(X=x))
lines(x,y)

16/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

Analyse multivariable

De nombreux packages permettent de faire les analyses présentées ici dans R


(vegan, ADE4, FactoMineR, etc.). Nous allons utiliser ici vegan pour certaines
analyses non disponibles dans la version de base de R.
Il faut donc installer le package vegan (Packages & Données).

L’analyse se fait sur une matrice de données (dataframe), ici X.

Ordination

Analyse en composantes principales (ACP)

Avec la version basique de R :


ACP=prcomp(X,center=TRUE,scale=TRUE) # scale=TRUE permet
d’utiliser une matrice de corrélation
Attention à la situation par défaut (scale=FALSE) qui réalise l’analyse sur une
matrice de covariance

Le résultat affiché montre les coordonnées des objets sur chaque composante
principale.

Afficher le résumé et l’histogramme des valeurs propres


summary(ACP) # ou plot(prcomp(X,center=TRUE,scale=TRUE))
plot(ACP)

Tracer le diagramme d’ordination (biplot)


biplot(ACP)

NB : la fonction princomp fait en gros la même chose avec un calcul de l’ACP par
une autre méthode, moins recommandée.

Avec vegan :
library(vegan)
ACP=rda(X,scale=TRUE) # afin d’utiliser une matrice de
corrélation
ACP
Attention à la situation par défaut (scale=FALSE) qui réalise l’analyse sur une
matrice de covariance
NB : la fonction rda effectue une analyse canonique de redondance, qui revient une
ACP lorsqu’on n’a qu’une seule matrice de données.

vegan permet d’effectuer les calculs de projection de l’ACP en préservant les


distances Euclidiennes entre les objets (scaling=1) ou les corrélations entre
descripteurs (scaling=2).

17/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

ACP avec cadrage de type 1 préservant la distance euclidienne entre les objets :
summary(ACP,scaling=1)
biplot(ACP,scaling=1)

ACP avec cadrage de type 2 préservant la corrélation entre les descripteurs:


summary(ACP,scaling=2)
biplot(ACP,scaling=2)

Vous pouvez également tracer les biplots avec la fonction [Link].R, qui
génère en même temps les 2 cadrages :

Sourcer la fonction [Link].R


[Link](ACP,point=TRUE) # point=TRUE ajoute des points
pour les objets

Analyse factorielle des correspondances (AFC)

Avec vegan :
library(vegan)
AFC=cca(X)
AFC
NB : la fonction cca effectue une analyse canonique des correspondances, qui
revient une AFC lorsqu’on n’a qu’une seule matrice de données.

vegan permet d’effectuer les calculs de projection de l’AFC en préservant les


distances du Khi-2 entre les lignes (sites, objets) (scaling=1) ou les entre les
colonnes (espèces) (scaling=2).

AFC avec cadrage de type 1 préservant la distance entre les lignes :


summary(AFC,scaling=1)
plot(AFC,scaling=1)

AFC avec cadrage de type 2 préservant la distance entre les colonnes :


summary(AFC,scaling=2)
plot(AFC,scaling=2)

Groupements

Matrice de distance

La fonction dist dans R permet de calculer des matrices de distance, mais elle offre
un choix assez limité. Nous allons à nouveau utiliser vegan, avec la fonction
vegdist, pour cela.

Pour des données quantitatives classiques (pas de problème du double-zéro) dans


une matrice X, on peut utiliser une distance Euclidienne.

Il est souvent judicieux de standardiser les données avant de calculer cette distance

18/19
Yves Desdevises, Observatoire Océanologique de Banyuls, Sorbonne Université

(fonction decostand de vegan) :


decostand(X,method="standardize")

D=dist(X) # la distance Euclidienne est le choix par défaut,


sinon ajouter l’argument method="euclidean"
ou
D=vegdist(X,method="euclidean") # la distance de Bray-Curtis
est le choix par défaut

Pour des données d’abondance (problème du double-zéro) dans une matrice X, on


peut utiliser une distance de Bray-Curtis.

D=vegdist(X) # la distance de Bray-Curtis est le choix par


défaut, sinon ajouter l’argument method="bray"

Pour des données binaires, il suffit d’ajouter l’argument binary=TRUE (FALSE par
défaut), et de choisir une méthode appropriée (e.g. "jaccard").
Pour un indice de simple concordance, la fonction dist de R peut être utilisée :
D=dist(X,method="binary")

Groupement hiérarchique

Lien simple
gptls=hclust(D,method="single")
plot(gptls) # ou plot(hclust(D,method="single"))

Lien complet
gptlc=hclust(D,method="complete")
plot(gptlc)

Lien moyen
gptlm=hclust(D,method="average")
plot(gptlm)

Test de Mantel

Le test se fait sur 2 matrices de distances, D1 et D2.

mantel(D1,D2)

On peut changer le coefficient de corrélation utilisé via l’argument method


("pearson" (par défaut), ou "spearman" ou "kendall"). Le nombre de
permutations, 999 par défaut, est contrôlé par l’argument permutations.

Il est possible de contrôler l’effet d’une troisième matrice D3 à l’aide d’un test de
Mantel partiel :
[Link](D1,D2,D3) # même options

19/19

Vous aimerez peut-être aussi