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

Je dispose du jeu de données HPC suivant :

## [1] 3.87162 2.93444 2.86022 3.11609 2.57139 2.83167

Analyse préliminaire

Vérifions que les données sont bien des données numériques à l’aide de la fonction str :

str(data)
##  num [1:6936] 3.87 2.93 2.86 3.12 2.57 ...

Les données étant des durées, vérifions également que nous n’avons que des valeurs positives :

sum(data<0)
## [1] 0

Nous disposons donc de 6936 données positives que nous pouvons commencer par visualiser dans le temps en créant une série temporelle grâce à la fonction plot.ts :

Nous pouvons distinguer 3 phases.

La première phase (X1) concerne les 150 à 200 premières valeurs qui évoluent entre 2,5 et 4.

La deuxième phase (X2) concerne les valeurs où le régime est stationnaire autour de 2,75 ou 3 (on enlève alors les pics).

La troisième phase (X3) concerne les “pics” qui paraîssent être des valeurs extrêmes et que je décide donc de traiter à part.

On observe clairement que la phase X3 est répétée tout au long de la série temporelle, avec un intervalle de temps qui diminue au fur et à mesure.

pattern = data[1150:1900]
plot.ts(pattern);

Quant à X1, il semblerait qu’elle corresponde au début de la factorisation Cholesky pendant laquelle le régime est transitoire. Nous ne nous intéresserons donc pas à cette partie du jeu de données.

Nous avons alors le découpage suivant :

break1 = 150;
dataBis = data[break1:length(data)];
X2 = dataBis[dataBis<2.90 & dataBis>2.75];
X3 = dataBis[dataBis<2.0 | dataBis>3.0];
X3Low = dataBis[dataBis<2.5];
X3High = dataBis[dataBis>8.0];
plot.ts(dataBis)

Étude des valeurs extrêmes X3High et X3Low

X3High

plot.ts(X3High)

On remarque que la plupart des valeurs tournent autour de 9 mises à part 3 que je décide de retirer.

X3High_bis = X3High[X3High>8.6 & X3High<9.1]
plot.ts(X3High_bis);

Il n’y a pas de structure particulière, nous pouvons donc tracer l’histogramme pour analyser les valeurs plus en détail :

hist(X3High_bis)

Il n’y a pas d’asymétrie forte. Il y a un léger pic de valeurs entre 8.90 et 8.95 mais on ne dispose pas de beaucoup de valeurs et elles sont au final peu différentes entre elles. La moyenne et la médiane devraient alors être très proches. On peut le vérifier avec un summary et un boxplot :

summary(X3High_bis)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   8.803   8.904   8.950   8.960   9.023   9.075
boxplot(X3High_bis)

X3Low

plot.ts(X3Low)

On remarque ici que les valeurs ont tendance à augmenter au fur et à mesure et on peut imaginer qu’elle continueront encore d’augmenter. Il serait donc peu utile d’en faire un histogramme et un boxplot.

Étude de la phase stationnaire X2

Zoomons sur X2 :

plot.ts(X2)