Le but de ce DM est de vérifier que vous avez compris les principales étapes à suivre lorsque l’on analyse un jeu de données.

Pour cela, vous appliquerez la démarche de statistiques descriptives vue en cours aux divers jeux de données proposés:

À chaque étape, vous justifierez que ce que vous calculez ou affichez a bien du sens. Le cas échéant, si le jeu de données ne satisfait pas les hypothèses attendues, vous essayerez de vous restreindre à un sous-ensemble du jeu de données en justifiant vos choix. Si vous avez l’impression qu’il y a plusieurs régimes (successifs ou supperposés), vous séparerez les deux régimes et les analyserez séparément.

On rappelle les différentes fonctions de base de R qui pourront vous êtres utiles: str, summary, mean, diff, sort, var, sd, plot, plot.ts, hist, boxplot.

Récupération des jeux de données

## [1] 101 102 101 101 101 101

Visulisation de data :

Je commence par regarder/vérifier le type des données.

str(data); # nous donne la structure de data
##  num [1:8373] 101 102 101 101 101 101 101 101 101 101 ...

Ce sont donc bien des nombres. Il y en a 8373 et les premières valeurs sont toutes des valeurs entière et égales ou très proches de 101.

Nous allons tout d’abord visualiser ces données sous forme de points.

plot(data); # nous donne un graphe nuage de point

plot of chunk unnamed-chunk-3

Maintenant, afin d’avoir une autre vision de l’échantillon, regardons si ces données sont structurées “dans le temps” (à dire vrai, on n’a pas d’information sur la date à laquelle la mesure a été prise mais on sait que la durée est d’environ 25 minutes et que la fréquence de la prise de donnée est toutes les 0.2 secondes. Les unités des mesures sont en millisecondes. ).

plot.ts(data); # nous donne un graph ligne en tps (.ts)

plot of chunk unnamed-chunk-4

Sur ces deux graphs, nous pouvons observer qu’une majeure partie des valeurs sont égales à 101. On observe trois zones d’exceptions (appelons les A, B et C) : Dans A et B, les valeurs tournent plus autour de 94-95 et semblent stationnaires sur 100 points environ. A semble se situer entre les points 700 et 800 (725 et 785 en réalité) et B entre les points 3000 et 3100 (3011 et 3152 en réalité) Enfin dans C, les valeurs semblent varier entre 101 et 115 sur 200 points. C semble se situer entre les points 8200 et le dernier point, c’est à dire 8373 ( 8209 et 8373 en réalité). En plus de ces 3 zones, il semble y avoir deux valeurs aberrantes (environ 120 et 149) aux alentours du pts 3100. Pour finir, sur tout l’échantillon, il y a quelques valeurs supérieures à 101, mais qui ne semblent ni aberrantes, ni de véritable exception car elles sont peu nombreuses, bien réparties (elles ne forment pas de “zone”) et ne dépassent jamais 110.

Visualisons nos 3 zones A, B et C. (Notons que sur ces graphs, le temps recommencera toujours à 0 et que donc le temps associé à un point sera différent du temps associé à ce même point dans notre échantillon de départ.)

plot of chunk unnamed-chunk-5

A=data[700:800];
plot.ts(A); # nous donne un graph ligne en tps (.ts)
abline(v=25, col='RED',lty=2,lwd=2);
abline(v=87, col='RED',lty=2,lwd=2);
text(50, 105, "A", col="RED");

plot of chunk unnamed-chunk-6

B=data[3000:3200];
plot.ts(B);
abline(v=10, col='GREEN',lty=2,lwd=2);
abline(v=154, col='GREEN',lty=2,lwd=2);
text(90, 140, "B", col="GREEN");

plot of chunk unnamed-chunk-6

C=data[8150:8373];
plot.ts(C);
abline(v=58, col='BLUE',lty=2,lwd=2);
abline(v=225, col='BLUE',lty=2,lwd=2);
text(120, 113, "C", col="BLUE");

plot of chunk unnamed-chunk-6

Remarquons qu’afin de mieux visualiser nos zones nous avons affiché quelques-unes des données précédentes et suivantes.

Nous allons maintenant supprimer nos 2 valeurs aberrantes et construire un histogramme.

data2=data[data<119]; #data2 est l'ensemble de l'echantillon moins les deux valeurs aberrantes.
hist(data2, col='RED');

plot of chunk unnamed-chunk-7

Sur cet histogramme, nous pouvons voir que la valeur 101 est largement plus fréquente que toutes les autres valeurs reunies. Nous avions pensé enlever les 3 zones d’exception (A,B,C), mais nous pouvons voir que cela est finalement inutile : même avec ces zones d’exception, la valeur 101 est toujours majoritaire.

Si l’on veut mieux voir les fréquences des autres valeurs (les valeurs des zones A, B et C), il faut “zoomer”.

hist(data2, col='RED', ylim=c(0,600));

plot of chunk unnamed-chunk-8

Sur ce deuxième histogramme, on peut voir que les valeurs entre 95 et 97 (valeurs de A et B) semblent plus fréquentes car plus regroupées (seulement 3 valeurs), et que les valeurs entre 102 et 112 plus la valeur 114 (zone C) semblent avoir les fréquences les plus basses car elles semblent plus étalées (12 valeurs).

Faisons maintenant un summary afin de vérifier ces suppositions.

summary(data2);
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    94.8   101.0   101.0   101.0   101.0   114.0

On remarque que la moyenne, la médiane et les 1er et 3ème quartiles sont tous égaux à 101. Cela signifie qu’au minimum 50% de mes valeurs sont égales à 101.

Une boîte à moustache pour résumer tout ça visuellement :

boxplot(data2);

plot of chunk unnamed-chunk-10

On peut voir que la boîte est “aplatie” en une ligne : la médiane est égale à la moyenne et aux quartiles. De plus on peut voir que 25% de mes valeurs sont égales ou supérieurs à 101 et inférieur à 114. Ce sont majoritairement les valeurs de la zone C, étalées et peu fréquentes. Enfin 25% de mes valeurs sont égales ou inférieures à 101 et supérieur à 94.8. Ce sont majoritairement les valeurs de A et C : plus fréquentes car plus regroupée.