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");