Dans ce TP nous apprendrons à faire des représentations graphiques des données, mais tout d'abord nous allons découvrir R Markdown, un outil simple et pratique pour développer du code et à la fois créer un document bien commenté et agréable à lire.
R Markdown (disponible dans RStudio) est très simple à utiliser et s'apprend en deux minutes !
La fonction principale permettant de tracer des graphiques avec R est la fonction plot.
Elle prend deux vecteurs x et y en arguments avec les coordonnées des points à tracer.
L'option type permet d'indiquer à R si il faut tracer un nuage des points (par défaut) ou s'il faut relier les points par une ligne en utilisant type='l' (c'est la lettre l et pas le chiffre 1).
Reprenons les données ToothGrowth :
library(datasets)
attach(ToothGrowth)
plot(len,dose)
len_ord <- sort(len)
plot(len_ord,len_ord^2,type='l')
Les nombreuses options de la fonction plot permettent de choisir les propriétés du graphique. Voici une liste des principales options de la fonction plot :
plot(len_ord,len_ord^2,type='l',col=5,lwd=3,main = 'en couleur',xlim=c(-20,35))
Pour les données des cathédrales représenter le nuage des points hauteur et longeur. Ajouter un titre aux axes, jouer avec la couleur et la forme de points.
Tout appel de la fonction plot efface le graphique précédent. Afin de superposer un nuage de points ou une courbe au graphique existant, on utilise une des fonctions suivantes :
A la place des trois points ... on peut préciser les mêmes options graphiques que celles présentées pour la fonction plot().
plot(len_ord,len_ord^2,type='l',col=5,lwd=3,main = 'en couleur')
points(runif(100,0,35),runif(100,0,1000),pch=8)
abline(0,1000/35,col=2,lty=4)
La fonction hist est utilisée pour tracer des histogrammes. Essayons-le :
hist(len)
Dans le cours, nous avons défini l'histogramme comme une fonction qui intègre à 1, ce qui n'est visiblement pas le cas de la fonction tracée ci-dessus. En fait, la commande hist(len) représente le nombre d'observations (les effectifs) par sous-intervalle. L'option frequ=FALSE permet de changer l'échelle afin d'obtenir un histogramme comme défini dans le cours.
hist(len,freq=FALSE)
L'histogramme est une approximation de la densité de la loi des données. Afin de comparer la distribution des données à une loi théorique, on peut superposer la densité de la loi théorique à l'histogramme des observations. Pour "tester" si la loi de la longueur de cathédrale est une loi normale, on rajoute la densité de la loi normale de paramètres $\mu=$ moyenne empirique de la longueur et $\sigma^2=$ variance empirique de la longueur. Pour cela on utilise la fonction dnorm (pour la densité de la loi normale) et de la fonction curve (pour tracer une courbe).
mu <- mean(len)
sig <- sd(len)
hist(len,freq=FALSE,ylim=c(0,.06),xlim=c(-10,50))
curve(dnorm(x,mu,sig),add=TRUE)
L'adéquation entre l'histogramme et la densité n'est pas bonne. On dirait que la loi de la longueur de cathédrale est plus concentrée autour de la moyenne qu'une loi normale et le "pic" de l'histogramme est bien trop large pour une gaussienne.
La fonction hist a d'autres paramètres optionnels qui permettent de paramétrer précisement la forme de l'histogramme, notamment l'option breaks pour définir la partition utilisée (voir l'aide pour les détails).
La fonction ecdf calcule la fonction de répartition d'un vecteur d'observations. Pour la tracer, on tape :
Fn <- ecdf(len)
plot(Fn)
Tracer la fonction de répartion empirique de la hauteur. Rajouter la fonction de répartition de la loi normale de paramètre $\mu=$ moyenne empirique de la hauteur et $\sigma^2=$ variance empirique de la hauteur en utilisant la fonction pnorm. Commentez le graphique.
Le QQ-plot est un outil graphique pour comparer la distribution de deux vecteurs. S'ils ont la même distribution, les points s'alignent sur la première bissectrice. La commande qqplot(x,y) trace le QQ-plot des vecteurs x et y.
Pour mieux juger l'adéquation des distributions, on peut rajouter la première bissectrice par la commande abline(0,1)
x <- rnorm(100,10,1)
y <- runif(60,6,14)
qqplot(x,y)
abline(0,1)
La commande qqnorm(x) trace le QQ-plot qui compare la loi du vecteur x à la loi normale standard $\mathcal N(0,1)$. Si les points s'alignent sur la première bissectrice, les observations suivent la loi normale $\mathcal N(0,1)$.
Pour vérifier si la loi des observations appartient à la famille de lois normales, il est courant de standardiser les données de façon suivante
x.std <- (x-mean(x))/sd(x)
et puis de tracer le QQ-plot qui compare x.std à la loi normale standard par la commande qqnorm(x.std). Si les points s'alignent sur la première bissectrice, la loi de x est (à peu près) normale.
La commande boxplot(x) trace le boxplot du vecteur x. Exemple :
boxplot(len)
Pour tracer les boxplots de plusieurs variables (par exemple des vecteurs x et y) côte à côte, on écrit boxplot(x,y).
Quand on passe à la fonction boxplot un tableau en argument, R trace un boxplot pour chaque variable (chaque colonne). Parfois des variables qui ne sont pas de type numérique sont automatiquement transformées pour pouvoir tracer un boxplot. Mais attention : ces transformations automatiques n'ont pas toujours beaucoup de sens comme dans l'exemple ci-dessous pour la variable supp.
boxplot(ToothGrowth)
Souvent on souhaite comparer les boxplots d'une même variable pour des différents sous-groupes. Cela est facile si la variable qui définie les groupes est de type facteur (factor). La commande qui trace tous les boxplots pour les différents groupes utilise la fonction plot et elle est de la forme
plot(x ~ var.facteur)
class(supp)
plot(len~supp)
On considère un tableau de données sur des personnes anorexiques qui ont été suivi pendant quelque temps. Certaines patientes ont suivis une thérapie (soit une thérapie familiale 'FT', soit la thérapie Cognitive Behavioural Treatment 'CBT'), d'autres n'ont suivi aucun traitement (c'est le groupe de contrôle 'Cont' ). Le tableau contient pour chaque individu le type de la thérapie et son poids au début et à la fin de l'étude (en livre).
Ce tableau de données sur l'anorexie a été établi lors d'une étude clinique. L'objectif de l'étude est de comparer les trois types de traitements et leurs effets sur les patients. Quelle thérapie est la plus efficace? Il-y-a t'il des traitements qui n'ont pas de résultat positif voire négatif sur la santé des patients?
Nous formulons ici quelques questions précises, auxquelles vous devez réfléchir et chercher des réponses en utilisant des outils de la statistique descriptive, notamment des représentations graphiques. C'est à vous de choisir les bons outils pour répondre aux cinq questions suivantes.
Question 1
Tout d'abord, on veut savoir si l'étude a été correctement menée. En particulier, on veut vérifier si la composition des trois groupes de patients qui suivent des traitements différents à été bien faite. Plus précisément, afin de pouvoir comparer les résultats, il faut qu'au début de l'étude les trois groupes soient similaires. Comparer les nombres de patients par groupe, et comparer les distributions du poids des patients au début de l'étude.
Question 2
Vu que les trois groupes ne sont pas identiques au début de l'étude, il se pose la question comment évaluer le succès d'un traitement. Est-ce raisonnable de comparer simplement le poids des patients à la fin d'étude? Ou ne serait-il pas plus pertinent de comparer les variations de poids durant l'étude (c'est-à-dire les prises/pertes de poids)?
Question 3
Le groupe de contrôle ('Cont') est constitué de patients qui n'ont pas suivi de traitement particulier. Comment a évolué le poids de ses patients durant l'étude?
Question 4
Etudier l'impact des différents traitements sur le poids des patients. Comparer les trois méthodes. Quel traitement semble le meilleur?
Question 5
Analyser la distribution des différentes variables liées aux poids par type de traitement. Est-ce envisageable de les modéliser par une loi normale.
Le devoir doit être préparé en binôme.
Il est dû au plus tard le 22 novembre avant minuit. Tout document rendu après cette date ne sera pas noté.
Le devoir est à déposer dans votre boîte de dépôt Sakai.
Vous devez indiquer le nom de chacun des deux auteurs sur les documents à rendre.
Vous devez rendre un rapport pour répondre aux Questions 1 à 5 ci-desssus. Faites comme si vous travaillez dans un hôpital et que vous rédigez un rapport pour votre supérieur, qui s'intéresse avant tout aux résultats et aux interprétations statistiques, et beaucoup moins au code. Le rapport doit bien sûr contenir des figures. Soyez précis et concis à la fois.
Utilisez R Markdown pour rédiger votre rapport.
Deposez dans la boîte à dépôt le fichier Rmd ainsi que le fichier html.