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] 0.00353098 0.01118260 0.03175770 0.03452060 0.04034670 0.06017530

Visualisation des données sous formes de série temporelle

Dans un premier temps, je visualise mes données.

str(data);
##  num [1:2000] 0.00353 0.01118 0.03176 0.03452 0.04035 ...

Je remarque que l’échantillon m’est donné entre 1 ms et 2000 ms, soit une période de 2 secondes. Maintenant, je vais observer si ces données sont structurées “dans le temps”.

plot(data);

plot.ts(data);

Le tracé en ligne respecte bien le nuage de point, car en regardant le tracé en nuage de point cela forme presque une ligne, grâce aux nombreux points. Il ne me semble pas qu’il y est de valeurs abberrantes, et donc pas de valeurs à écarter. Tout d’abord, je peux remarquer 2 phases : une phase avant 600 ms environ qui semble être croissante et tends à rejoindre la seconde phase qui est stationnaire à la valeur 0.20 taux de réussite, environ.

Analyse des données

plot.ts(data);
abline(h = 0.23, col="magenta", lwd=2);
abline(v = 650, col="orange", lwd=2, lty=2);
text(1300,0.15,"régime stationnaire", col = "magenta", lwd=2);
text(300,0.15,"régime transitoire", col = "orange", lwd=2);
text(0,0.22,"0.23", col="magenta", lwd=2);
text(700,0.01,"650 ms", col="orange", lwd=2);

On remarque bien grâce aux tracés des droites verticale (orange) et horizontale (violet) qu’il y a deux régimes différents : un régime transitoire en orange qui commence de 0 jusqu’à 650 ms environ, qui est croissante et tends bien à rejoindre un second régime stationnaire, en violet à la valeur 0.23, environ. Après 600 ms, le régime semble être stationnaire, c’est-à-dire les données semblent stationnés vers la valeurs 0.23.

Je décide donc de décomposer mon graphique en deux parties.

1.La partie transitoire

data_croissante = data[0:650];
plot.ts(data_croissante);
abline(h = 0.23, col="magenta", lwd=2);
text(0,0.22,"0.23", col="magenta", lwd=2);
lines(lowess(data_croissante),lwd=2,lty=2,col="red");

La courbe semble être linéairement croissante. On part bien de 0 pour atteindre la limite 0.23. Donc le cache met 650 ms, environ à être opérationnel à 20%. Lorsque le cache est à 0, on peut dire qu’il est en défaut de cache, c’est-à-dire que le processeur ne peut pas y accéder car ce dernier est plein en mémoire. Donc sur notre graphique, à 0 ms, le cache est en défaut. Donc, lors de l’exécution d’un programme, à 0 ms, il y a bien un défaut de cache. Puis ce cache tend à libérer de l’espace pour que le processeur puisse y accéder. Je remarque bien sur notre graphique, grâce à la droite horizontale violette que la valeur atteint une valeur maximale qui est 0.23. Donc ici, tout au long de jeu de données, le cache libère de la place pendant 650 ms jusqu’à 20% environ, de ses capacités. Après un défaut de cache, la libértion de la place dans le cache n’est donc pas immédiate. Je vais maintenant regarder, si après 650 ms la droite reste autour de 0.23 taux de réussite du cache.

Le régime stationnaire

data_stationnaire = data[650:2000];
plot.ts(data_stationnaire);
abline(h = 0.23, col="magenta");
text(0,0.232,"0.23", col="magenta");
max_data <- max(data);
abline(h = max_data, col="cyan");
text(200,0.244,max_data, col="cyan");

La courbe n’est plus très droite. Ce qui est logique car on a zoomé sur les valeurs entre 650 et 2000, mais si on regarde bien l’axe des ordonnées, cela ne varie que de 0.03, ce qui n’est pas grand car nos données sont comprises entre 0 et 0.25, d’après la valeur max qui touche la droite cyan. Je remarque aussi, que les valeurs en moyenne ont un taux de réussite de cache à 0.23, environ. Notre régime est bien stationnaire, je vais regarder l’histogramme de ces valeurs, pour bien analyser la répartition des données.

Histogramme de la partie stationnaire

par(mfrow=c(1,2));
hist(data_stationnaire);
abline(v=0.231,col="magenta");
text(0.227,200,"0.231",col="magenta");
hist(data_stationnaire, breaks = 1000);
abline(v=0.231,col="magenta");
text(0.227,12,"0.231",col="magenta");

Les deux histogrammes sont à peu près similaires, sauf que le 2ième est un peu plus précis, comme je peux observer un pic à 0.224 sur le 2ième graphe alors qu’il n’y est pas sur le premier. En tout cas, ce qui est amusant ici, c’est que précédemment, j’avais prédit une moyenne des valeurs du régime stationnaire à 0.23, et je trouve un le plus haut pic du 2ième graphe à 0.231, c’est-à-dire là où il y a le plus de données. C’est-à-dire, que sur le régime stationnaire, il y a plus de chance que le cache soit à 0.23 taux de réussite qu’autre chose. Remarquons que le premier graphique ne donne pas le même résultat. Maintenant, je regarde la boite à moustache, pour regarder la moyenne, quartile, etc…

par(mfrow=c(1,1));
summary(data_stationnaire);
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2126  0.2271  0.2315  0.2306  0.2349  0.2444
boxplot(data_stationnaire);

var(data_stationnaire);
## [1] 3.480103e-05

La boîte à moustache nous confirme bien que le régime est stationnaire car il varie seulement de 0.03 (valeur_max - valeur_min). La moyenne est encore à 0.23, ainsi que la médiane. Cela ce confirme par une variance très petite, c’est-à-dire, que sur ce régime stationnaire, le taux de réussite d’accès au cache lors de l’exécution de ce programme sera très problablement de 0.23. Je tiens à remarquer que la boîte à moustache est très symétrique ce qui montre, les valeurs sont équilibrées, et que la moyenne ou médiane sont très significatives et proches.

Conclusion

Je conclus que l’exécution de ce programme débute par un défaut de cache, puis ce cache est accesible à 20%, ce qui n’est pas beaucoup, n’a pas l’air de vouloir augmenter son taux de réussite. On peut faire plusieurs hypothèses : soit le cache est usé, ou les données ne sont pas assez suffisantes. Ou le programme demande constamment l’accès à une donnée stockée dans ce cache et donc celui-ce ne peut pas se vider. Ou encore, ce cache est assez peu volumineux et donc toujours plein. Ou peut-être, que l’ordinateur ne s’est pas réinitialisé depuis longtemps. Je peux faire toutes ces hypothèses mais seules les conditions de l’expèrience ou d’autres informations compléméntaires, comme les perfomances de l’ordinateur pourront les confirmer.