Académique Documents
Professionnel Documents
Culture Documents
Réalisé par :
CHAMI Soufiane
Membres du jury
Page i
Table des matières
Dédicace 1
Remerciement 1
Abstract 1
Résumé 1
Introduction générale 1
0.1 Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . 1
iii
TABLE DES MATIÈRES
2.5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 Définition theoriques . . . . . . . . . . . . . . . . . . . . . . 19
2.5.3 Un système d’analyse vibratoire . . . . . . . . . . . . . . . . 22
2.5.4 Les avantages de l’analyse vibratoire : . . . . . . . . . . . . . 22
2.6 Analyse de survie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Phase de Modélisation 48
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Construction des modèles . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Premier et deuxième itérations . . . . . . . . . . . . . . . . . 49
4.2.2 Troisième itération : Modèle de régression de Cox à risques
proportionnelles . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.3 La fonction coxph : Applications sur R . . . . . . . . . . . . 51
4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6 Déploiement et Conclusion 63
Appendices 64
Page iv
TABLE DES MATIÈRES
Bibliographie 79
Page v
Table des figures
1 Distribution de la vitesse . . . . . . . . . . . . . . . . . . . . . . . . i
vi
TABLE DES FIGURES
Page vii
Liste des tableaux
viii
0.1. INTRODUCTION GÉNÉRALE
Page 1
Chapitre 1
L’objectif de ce chapitre est de placer ce projet de fin d’études dans son contexte
global. Tout d’abord, on va commencer par présenter l’organisme d’accueil.
Ensuite, la partie qui suit, quant à lui, sera consacré au cadrage du projet en
présentant son contexte, ses objectifs, ses phases de réalisation, ses livrables, les
facteurs de son succès et les risques auxquels il faut prêter attention.
2
1.1. ORGANISME D’ACCUEIL
Page 3
1.1. ORGANISME D’ACCUEIL
Figure 1.2: Histoire de l’OCP (source* : Rapport annuel du groupe OCP 2013)
Page 4
1.1. ORGANISME D’ACCUEIL
Échelle international
— D’après le rapport annuel de l’OCP & IFA 2013, le groupe OCP est le 1er
exportateur mondial de phosphate sous toutes formes
— 28% 28% de part du marché mondial de phosphate sous toutes formes.
— 7,1 Milliards de Dirhams de résultats net
— 46 Milliards de Dirhams de chiffre d’affaires
— 145 Milliards de Dirhams investis dans le programme de transformation
industrielle 2008-2025
Page 5
1.2. PRÉSENTATION DE PROJET DE FIN D’ÉTUDES
2. Transformations
(a) Acide Phosphorique
i. Production de 4,4 Mt
ii. Capacité d’extraction de 4,7 Mt
(b) Engrais phosphatés :
i. Production de 4,8 Mt
ii. Capacité d’extraction de 7,4 Mt
3. Exportations
(a) Roche phosphatée = 8,6 Mt (part de marché de 33%)
(b) Acide Phosphorique = 2 Mt (équivalent de 47% de part de marché)
(c) Engrais phosphatés= 4,3 Mt (part de marché de 19
1.2.1 Contexte
Étant donné qu’il y a plus de 1000 équipements qui sont répartis sur la
superficie du complexe industriel du MAROC CHIMIE qui vaut de plus 500 000
m2 , la mission de la gestion et le monitoring des équipements et l’assurance de
leur disponibilité tout en évitant des pannes imprévues devient plus en plus une
tache chalengeuse, parfois, difficile pour l’équipe de la maintenance dans l’usine.
Or, L’utilisation de la technologie Internet Of Things a facilité beaucoup le
travail des maintenanciers en leur permettant d’effectuer un contrôle à distance
des équipements critiques, grâce à des capteurs installés à bord. Grâce à une
plateforme online, , il est devenu possible aux responsables de la maintenance
de checker l’état actuel de tous ces équipements à tout moment, depuis leurs
smart-phones ou leurs ordinateurs.
L’impact de cette technologie était très positif sur l’efficience de travail des
maintenanciers dans l’usine. En effet, cela leur a permis de gagner en termes de
réactivité et de rapidité de leurs interventions et aussi en termes de réduction des
coûts qui sont réduites de façon drastiques grâce à cette technologie.
Page 6
1.2. PRÉSENTATION DE PROJET DE FIN D’ÉTUDES
Page 7
1.2. PRÉSENTATION DE PROJET DE FIN D’ÉTUDES
Phase IV : Modélisation
C’est la phase de Data Science proprement dite. En fait, la modélisation
comprend le choix, le paramétrage et le test de différents algorithmes ainsi que
leur enchaı̂nement, qui constitue un modèle. Ce processus est :
— Descriptif pour générer de la connaissance, en expliquant pourquoi les
choses se sont passées.
— Prédictif en expliquant ce qu’il va se passer,
— Prescriptif en permettant d’optimiser une situation future.
Page 8
1.2. PRÉSENTATION DE PROJET DE FIN D’ÉTUDES
Phase V : Évaluation
L’évaluation vise à vérifier le(s) modèle(s) ou les connaissances obtenues afin
de s’assurer qu’ils répondent aux objectifs formulés au début du processus. Elle
contribue aussi à la décision de déploiement du modèle ou, si besoin est, à son
amélioration. A ce stade, on teste notamment la robustesse et la précision des
modèles obtenus.
Phase VI : Déploiement
Il s’agit de l’étape finale du processus. Elle consiste en une mise en production
pour les utilisateurs finaux des modèles obtenus. Son objectif : mettre la
connaissance obtenue par la modélisation, dans une forme adaptée, et l’intégrer
au processus de prise de décision.
Le déploiement peut ainsi aller, selon les objectifs, de la simple génération
d’un rapport décrivant les connaissances obtenues jusqu’à la mise en place d’une
application, permettant l’utilisation du modèle obtenu, pour la prédiction de
valeurs inconnues d’un élément d’intérêt.
Page 9
1.2. PRÉSENTATION DE PROJET DE FIN D’ÉTUDES
Page 10
1.2. PRÉSENTATION DE PROJET DE FIN D’ÉTUDES
Conclusion
Ce chapitre a été consacré à la présentation du projet dans sa globalité en
commençant par l’organisme d’accueil et sa strategie de la digitalisation, puis un
flash sur quelques nouvelles technologies de l’intelligence artificielle et de l’industrie
4.0 et en finissant par le cadrage du projet.
L’objectif de ce chapitre était d’expliciter l’importance de projet quant à
la vision stratégique de la digitalisation du Groupe OCP et de déclarer la
méthodologie de travail dans ce projet.
Après cette mise en situation, on va commencer la première phase de la
démarche CRISP qui concerne la connaissance du métier de la maintenance et
la structure et le fonctionnement de la plateforme IoT ainsi que ses fonctionnalités
actuelles.
Page 11
Chapitre 2
Business Understanding :
Connaissance du métier
12
2.1. INTRODUCTION
2.1 Introduction
La connaissance du métier est une phase très importante pour réussir dans
ce projet. En effet, comprendre les détails du métier de la maintenance permet
de savoir quels paramètres et quelles variables à prendre en considération dans la
phase de la préparation des données et de la modélisation.
Encore plus, sans la connaissance de métier, il serait difficile d’interpréter les
résultats de l’analyse et en tirer le maximum des informations. Cela entraine le
risque de rester dans un niveau d’analyse très superficiel des données qu’on collecte.
En outre, cette incompréhension du métier limite la valeur ajoutée de l’outils
Data Analytics et amplifie la difficulté des problématiques qu’on peut rentrer. Or,
grâce au cours qu’on a reçu au génie Industriel,on est déjà familiarisé avec plusieurs
concepts qui sont en relation avec la maintenance prédictive et la problématique
de ce projet. Il s’agit principalement des cours de :
— La maintenance : les méthodes et les stratégies de la maintenance.
— La fiabilité qui traite principalement les modèles mathématiques statiques
qui permettent de modéliser l’évolution de la dégradation d’un équipement.
— Statistical Learning qui donne des outils révolutionnaires d’intelligence
artificielle. Ces outils permettent de générer des modèles mathématiques
dynamiques et plus flexibles pour décrire la courbe de dégradation d’un
équipement. Ces modèles ont la capacité de changer leur forme selon les
conditions de fonctionnement de chaque équipement. Ce dernier point sera
discuté en plus de détails dans le chapitre 4.
Alors, dans ce chapitre on va parler de trois points nécessaires pour la conduite
d’une bonne analyse. Le premier est une discussion des différentes stratégies de
la maintenance en comparant les caractéristiques techniques et financières de
chacune pour déduire enfin l’utilité de la stratégie de la maintenance prédictive.
Le deuxième point concerne une définition de la technique de l’analyse vibratoire
comme l’un des outils de la maintenance prédictive pour suivre la dégradation des
équipements. Ensuite, on finira par le troisième point qui est une présentation de
l’analyse de survie comme un type particulier des analyses qui permet de traiter la
problématique de ce projet. Finalement, La compréhension de ces trois éléments
constitue le nécessaire et le suffisant non seulement pour la compréhension de la
problématique de ce projet mais aussi pour sa réussite.
Page 13
2.2. PHILOSOPHIES DE LA MAINTENANCE
Page 14
2.3. COURBE P-F
Page 15
2.3. COURBE P-F
Page 16
2.4. LES TECHNIQUES DE LA MAINTENANCE PRÉDICTIVE
Page 17
2.5. ANALYSE VIBRATOIRE
Page 18
2.5. ANALYSE VIBRATOIRE
Page 19
2.5. ANALYSE VIBRATOIRE
Page 20
2.5. ANALYSE VIBRATOIRE
Page 21
2.5. ANALYSE VIBRATOIRE
Page 22
2.5. ANALYSE VIBRATOIRE
Page 23
2.6. ANALYSE DE SURVIE
Xiobs = min(Xi , Ci )
Dans la plupart des cas, on parle des données censurées à droite(voir figure 2.8).
Par exemple, supposons qu’on veut faire une étude médicale de l’occurrence
d’événement au niveau du corps de plusieurs personnes pendant 20 semaines. Si
le corps de l’un des patients n’a pas connu l’occurrence de cet évènement pendant
cette période, alors on dit l’information qu’on a collecté sur ce corps pendant
l’étude est censurée à droite, et La durée de survie pour ce patient est considérée
au moins supérieure à la durée totale de l’étude.
Page 24
2.6. ANALYSE DE SURVIE
Page 25
2.6. ANALYSE DE SURVIE
Conclusion
Une fois on devient familier avec les basiques du métier de la maintenance
prédictive et la technique de l’analyse vibratoire, on peut maintenance commencer
la première phase de traitement des données afin de pouvoir construire des modèles
prédictives par la suite.
Page 26
Chapitre 3
27
3.1. EXPLORATION DES DONNÉES
Page 28
3.1. EXPLORATION DES DONNÉES
Page 29
3.1. EXPLORATION DES DONNÉES
remarque, par exemple, qu’il y a des points extrêmes et très loins de la moyenne.
Ceci revient aux deux facteurs principaux :
1. Un défaut au niveau des capteurs : comme toute pièce fabriquée, un capteur
n’est pas parfait et donc il est susceptible qu’il commet des erreurs au
moment du prélèvement des mesures.
Page 30
3.1. EXPLORATION DES DONNÉES
Page 31
3.1. EXPLORATION DES DONNÉES
7
6
5
4
3
2
1
0
0.5
0.0
0 5 10 15
Page 32
3.1. EXPLORATION DES DONNÉES
> skewness(Data_Sensors$G.pk)
[1] 4.265274
on conclut que la distribution de l’accélération est aussi asymétrique à droite. On
peut aussi en tirer comme information que la médiane est inférieure de la moyenne.
On souligne aussi l’existence des valeurs aberrantes pour cette variable aussi.
Or, mathématiquement parlant, l’accélération est définie comme la dérivée de la
vitesse des vibrations, donc elles sont des variables dépendantes. C’est pour cette
raison qu’ils peuvent prendre des valeurs aberrantes en même moment.
Température
La figure 3.6 donne un échantillon de la variation de la température au cours
du temps. La variable de la température est caractérisée par une moyenne valant
de 47.27 et un écart-type de 13,1
> mean(Data_Sensors$Temp)
[1] 42.27007
> sd(Data_Sensors$Temp)
[1] 13.10095
70
50
30
10
Page 33
3.1. EXPLORATION DES DONNÉES
> skewness(Data_Sensors$Temp)
[1] -0.3632181
> mean(Data_Sensors$Temp)
[1] 42.27007
> median(Data_Sensors$Temp)
[1] 43.79883
0.030
0.020
Density
0.010
0.000
0 20 40 60 80 100 120
Page 34
3.1. EXPLORATION DES DONNÉES
G.pk
*** ***
15
0.78
Density
10
−0.14
5
0
●
mm.s.RMS
***
200
●
Density
x ● 0.043
100
●●
●
● ●●
●●●
●●● ●
● ●●
●
●
●●
●
●●
●
●●
●● ●●●
●●●
● ●
●
●
●●
●●
●●
●
●●
●●
●●
●
●●●● ●●
●
● ●
●
●
●●
●
●●
●
●●●
●●●
●
● ●●
●
●
●●
● ●
●
●
●●
●
●
●●
●
● ●●
●●
●●
●●● ●●
●●
●
●
● ●● ● ●●
●●●
●●
●● ●
●●
● ●●
● ● ●●
●
●
●
●●
●●
●● ●●
●●
●
●
●●
●
●●
●
●●●●
●●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●● ●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●●●
●
● ●
0
● ●
●●
●
●
● Temp
80
●
●●●
●● ●
●●
●
Density
●
●● ●●●
● ●●
●
●
●●
●
●
●
●● ●
●●
●
●●
●
●
●● ●●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●
●● ●●● ●
●
●
●●
●
●
●
●●
●
●
●
●
●
●● ●●
●
● ● ●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
● ● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●●
●
●●
●●
●
●● ●
●●●●
● x ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●●
●●●
●
●●
●●
●
●
●
●●●●
●
●●
●
●
●●
●
●
● ●
● ●
●
●●
●
●
●●
●
● ●●
●●●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●● ● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●● ●
●
●●
● ● ●● ●●● ●
●●
●
●
●●
● ● ●●
40
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●●
●
●●
●
● ●● ● ● ● ● ●●●●
●
● ●
●●
● ● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●●●
●
●●
●●●● ●
●
●●
● ●●●
● ●●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●●
● ●
●●
●● ●●
● ●
●●
●
● ● ●●
● ●
●
●● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●●
●
●●
●●●
● ●● ● ●●●
●
●●
●●
●
●
●●
●
●
●
●●
●●●
●
●●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●●
●
●●
●●
●
●
●
●●● ●
●
● ●
●●
●●
●●
●●●
●●
●●●
● ● ●
●
● ●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●● ●●
● ●
●●
●●●
●
●●
●●
●
●●●●
● ●
●●
●●
●
●●●●
●● ●
●
●
●
●
●
●●
●
●
● ●
●●●
●
●
●●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●●
●●
●
●●
●
●
●●
●●●
●
●●●● ●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●●
●●
●●●
●
●
●●
●
●●●
●
●●
●
●●●
●●
●●
●
●●
●
●●● ● ●
●
●
●
●
●
●
●
●●●●
●●
●●
● ●
●
●●
●
●●
●
●●
●
●
●●
●
●●
●●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●●
● ●
●●●●
●●
●
●●
●
●●
●
●●
●
●
●
●●
●
●● ● ●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ● ●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●● ●●
●
●
●
● ●
●
●
● ●
● ●
0
0 5 10 15 0 20 40 60 80 100
Cette figure permet de tirer deux informations principales concernant les relations liant les
trois variables :
1. Mesure de corrélation linéaire : la valeur du coefficient de corrélation reflète la force
de la relation de corrélation linéaire entre deux variables. Plus le coefficient est grand plus
la relation est forte.
2. Mesure de la dépendance : la p-valeur qui donne une information sur la force de
dépendance entre deux variables et au quel point cette dépendance est significatif.
3.
Commentaires/Remarques :
— D’une part, on remarque que le coefficient de corrélation est important entre les
deux variables (vitesse et accélération), alors qu’il est faible en valeur absolue pour la
température et vitesse et la température et accélération.
— Or, si le coefficient de corrélation est faible ou nul, cela ne signifie absolument pas que
les deux variables sont indépendantes car le coefficient de corrélation mesure en fait la
dépendance linéaire entre deux variables. Nous pouvons seulement tirer de conclusion de
sa nullité que nos deux variables ne sont pas dépendantes linéairement.
— D’autre part, on trouve, qu’il y a une interaction significative entre les trois variables en
question vu que la p-valeurs est très grande.
— Enfin, même si que le coefficient de corrélation est grand entre la vitesse et l’accélération,
on ne peut éliminer une d’eux grâce à la présence remarquable d’un effet d’interaction
entre ces deux variables.
Page 35
3.1. EXPLORATION DES DONNÉES
Après avoir normalisé la base des données, chaque aura un seul attribut avec lequel on
peut relever toutes les informations d’un équipement. le tableau 3.4 montre le résultat après la
normalisation de la base des données des historiques des pannes.
Le défaut de la normalisation n’est pas seulement limité aux attributs des équipements mais
aussi il peut se manifester dans autres colonnes du tableau, comme celle des références des lignes
de production auxquelles l’équipement appartient (ligne AP, ligne AP 1/2 ...etc). On a remarqué
que le nom de chaque ligne a changé avec le temps (par exemple : AP 1/2 devient AB et AP
3/4 devient CD). le défaut à ce niveau peut aussi créer des problèmes et des biais lors de la
manipulation des données .
Page 36
3.1. EXPLORATION DES DONNÉES
Cela peut apparaitre simple mais vu la variance au niveau de chaque colonne et la taille de la
base des données (plus de 200 équipements) de laquelle on prend les historiques correspondants
aux 40-50 équipements connectés à la plateforme.
Par conséquence, le travail de la normalisation seul peut prendre un temps considérable juste
pour le finir qui peut aller jusqu’à deux semaines comme c’était le cas dans ce projet.
Page 37
3.2. INTRODUCTION À LA PRÉPARATION PRÉPARATION DES
DONNÉES
Page 38
3.3. VALEURS MANQUANTES (MISSING VALUES)
Cette fonction nous donne la proportion des valeurs manquantes au niveau de chaque
colonne. Les résultats obtenus sont :
> propmiss(Data_Sensors)
$Equipment
nmiss n propmiss
1 0 79721 0
$Date
nmiss n propmiss
1 0 79721 0
$G.pk
nmiss n propmiss
1 0 79721 0
$mm.s.RMS
nmiss n propmiss
1 0 79721 0
$Temp
nmiss n propmiss
1 115 79721 0.001442531
Alors, on conclut que les valeurs manquantes représente 0.14% de la totalité des données du
tableau. Or cela n’est pas encore suffisant pour prendre une décision sur la façon avec laquelle
on va traiter ces valeurs.
Alors, on va chercher l’emplacement de chacune de ces valeurs, le code suivant permet de
donner cette information.
Page 39
3.3. VALEURS MANQUANTES (MISSING VALUES)
for(i in 1: nrow(Data_Sensors)){
if(is.na(Data_Sensors$Temp[i])){
df[j,]=Data_Sensors[i,]
j=j+1
}
On remarque qu’il s’agit d’une succession temporelle des valeurs manquantes. On peut
poser des hypothèses dans ce cas qui permet d’expliquer la situation. Puisqu’il s’agit des
valeurs manquantes détectées lors du fonctionnement des capteurs pendant 5 jours continus
de 2016-11-04 jusqu’à 2016-11-09.
Alors on pose l’hypothèse que c’est à cause d’une panne au niveau du capteur. Les
responsables qui surveillent ces capteurs confirment cette hypothèse quand on les a consulté !
Page 40
3.4. VALEURS ABERRANTS (OUTLIERS)
Enfin, concernant les données qu’on a, on trouve que les valeurs manquantes de la
température étaient dues à une défaillance au niveau du capteur. En plus, on juge qu’il n’y
a pas de mal à éliminer les données des lignes ayant des valeurs manquantes pour les raisons
suivantes :
1. Il n’y a pas de panne au voisinage de la période pendant laquelle ces valeurs ont été
enregistrées (la dernière panne est en 07/09/2016 et la panne suivante est en 13/12/2016,
donc 63 jours avant et 34 jours après !).
2. La proportion des données manquantes ne dépasse même pas 0.2%
La décision d’élimination n’est définitive et peut être changée si on trouve qu’il avait un
impact sur les résultats des analyses.
Les autres méthodes utilisées pour limiter l’impact des valeurs manquantes (et les valeurs
aberrantes par la suite) sont :
1. Méthodes d’imputation par règle métier : c’est à dire que les gens de métier peuvent mettre
des règles pour remplacer les valeurs manquantes par d’autres données disponibles.
2. Méthodes d’imputation par régression : on remplace la valeur manquante par une autre
valeur prédite par un modèle de régression.
3. Méthodes d’imputation par la méthode du k-plus proches voisins : on définit une fonction
qui peut caractériser la proximité entre les individus ; après on remplace la valeur
manquante d’un individus par la moyenne des valeurs des k voisins les plus proches (
k est une entier)
4. ...etc
Conclusion Dans cette partie on a fini avec le problème des valeurs manquantes et on
va passer à un autre problème qui est celui des valeurs aberrantes. Souvent, on tend d’éviter de
travailler sur ce problème parce qu’il n’est pas facile à traiter. Cependant, les outliers peuvent
réduire la précision des analyses ou même les biaiser.
Page 41
3.4. VALEURS ABERRANTS (OUTLIERS)
Pour comprendre plus la différence entre les deux types valeurs, on donne l’exemple d’un
tableau qui contient des informations de l’âge des individus d’une population. Une valeur
aberrante est le cas d’un individu né en 2000 mais les données dans le tableau disent qu’il a
30 ans (illogique). Par contre, une valeur extrême est le cas d’un individu qui a 90 ans alors l’âge
moyen de cette population est 20 ans. Alors, pour le problème de la maintenance prédictive, le
fait d’avoir des valeurs extrêmes est quelque chose de tout à fait normal à cause des pannes que
subit la machine de temps en temps.
La température
On dresse la box plot pour la variable de la température avec les logiciel R.
●
80 100
●
●
●
60
40
20
Page 42
3.4. VALEURS ABERRANTS (OUTLIERS)
> boxplot(subset(Sensor_data$Temp)$out
[1] 78.66211 79.98047 78.98438 87.97852 88.97461 98.99414
[2] 98.99414 112.99805 98.99414
Alors, il s’agit de 9 valeurs extrêmes entre 78.66 et 113. Après consultation des responsables
de la maintenance, on nous a dit que c’est logique que la température prend des valeurs pareilles
quand il y a un problème au niveau de l’équipement en question (le ventilateur d’assainissement)
alors on va les tenir en compte dans nos analyses.
La vitesse
●
200
●
●
100
●
●
●
●
●
●
●
●
●
●
●
●
●
●
50
●
●
●
●
●
●
●
●
●
●
0
D’après l’expérience des maintenanciers, la vitesse-RMS d’un ventilateur ne peut pas prendre
telles valeurs. Alors, ceux sont des valeurs aberrantes. On va parler de le méthode de leur
traitement dans la partie du traitement.
L’accélération
Pour l’accélération, on attend de trouver un cas pareil de la vitesse.
> selectMax(Sensors_Data)
Date G.pk mm.s.RMS Temp
Page 43
3.4. VALEURS ABERRANTS (OUTLIERS)
●
15
●
●
●
●
●
●
●
●
10
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
5
●
●
●
●
●
●
●
●
●
●
0
La remarque qu’on peut faire ici c’est les valeurs aberrantes de la vitesse sont aussi des
valeurs aberrantes de l’accélération.
L’accélération
Page 44
3.4. VALEURS ABERRANTS (OUTLIERS)
●
10
4
●
●
●
●
●
●
●
●
●
●
8
3
● ●
● ●
●
●
●
6
●
●
●
●
●
● ●
2
● ●
●
●
4
●
●
●
●
●
1
●
●
●
●
●
●
2
0
0
La vitesse
●
●
80
50
●
●
●
●
●
40
● ●
●
60
● ●
● ●
●
● ●
●
30
● ●
● ●
● ●
●
● ●
40
● ●
●
●
●
●
20
●
●
●
●
●
●
●
●
●
20
10
0
0
La Température
●
80
●
80
●
●
60
60
40
40
20
20
●
●
●
0
●
0
En final, on remarque qu’aucune valeur de la température n’a été enlevées au contraire des
deux autres variables. Dans la partie suivante, on va passer à la dernière partie de la phase de
la préparation des données qui concerne la création et la transformation des variables.
Page 45
3.5. TRANSFORMATION DES VARIABLES (FEATURES ENGINEERING)
T BF (i) = ti+1 − ti
3.6 Conclusion
Dans ce chapitre, on a fini la phase de la préparation des données dont l’objectif était
d’assurer une bonne qualité des données qui peut donner des analyses correctes et fiables. Cette
Page 46
3.6. CONCLUSION
phase a pris une portion considérable de temps du stage (presque 35%-40%). On a donc réussi
de définir les variables prédicteurs (La vitesse, l’accélération et la température) et la variable de
réponse TTF. Dans la partie suivante, on verra les différents modèles testés pour faire prédire
la date des pannes des équipements
Page 47
Chapitre 4
Phase de Modélisation
Maintenant, on va commencer la phase de la construction des modèles qui est l’une des
parties les plus importantes dans toute la démarche CRISP et qui ajoute la valeur la plus grande
au le projet
48
4.1. INTRODUCTION
4.1 Introduction
Comme on a mentionné au début de la présentation de la démarche, on a dit qu’elle est
principalement une démarche itérative. Généralement, dans ce type des projets, on n’est pas
toujours chanceux de tomber dans le bon modèle au premier coup. Il faut plutôt essayer plusieurs
modèles et les réajuster plusieurs fois jusqu’à avoir des résultats satisfaisants. Ce projet n’est
pas une exception de cette règle.
En effet, on a itéré plus de deux fois avec plusieurs modèles, mais on n’a pas encore abouti.
Après plusieurs recherches, on s’est rendu compte que la nature du problème qu’on veut résoudre
ne peut pas être résolu pas des modèles classiques du machine Learning seuls (comme la régression
logistique, SVM, Random Forest, et même les réseaux de neurones). En fait, afin de pouvoir
prévoir la durée de vie résiduelle des machines, on a besoin de faire appel à un type particulier
d’analyse qui utilisent des modèles spécifiques. Il s’agit de l’analyse de survie qui est conçu
spécifiquement pour traiter les problèmes de survie. Ce type d’analyse vise de traiter un cas
particulier des données qui sont appelées des données censurées.
Dans les parties qui suivent, on va donner un bilan des deux itérations qu’on a fait. Ensuite,
on va passer à la troisième itération avec plus de détails.
Itération 1
1. Les prédicteurs :
(a) Vitesse
(b) Accélération
(c) Température
2. Variable de réponse :
”Down”, quand la machine est en panne
Le statut de la machine
”U p” , sinon
3. Modèles utilisés :
(a) La régression logistique (Performance Test : 27
(b) Random forest (Performance Test : 80
(c) Decision Trees (Performance Test : 50
4. Conclusion :
(a) L’objectif de cette itération était pour comprendre plus les données et l’interaction
des variables entre eux.
(b) Selon la démarche de cette itération, On ne peut pas savoir quand la machine va
tomber en panne.
(c) Cette itération n’a pas tenu en compte le caractère censuré des données.
Page 49
4.2. CONSTRUCTION DES MODÈLES
Itération 2
1. Les prédicteurs :
(a) Vitesse
(b) Accélération
(c) Température
2. Variable de réponse : La durée de vie résiduelle de l’équipement.
3. Modèles utilisés : (Voir tableau 4.1)
4. Conclusion :
(a) Dans cette iteration, on a pas tenu en compte
(b) Malgré que la performance des ces modeles peut etre bien dans un premier, mais
statistiquement parlant, leurs analyses sont erronées car on n’a pas tenu en compte
le fait qu’on des données censurées.
Page 50
4.2. CONSTRUCTION DES MODÈLES
hi (t) h0 (t)eηi
= = eηi −ηi0
hi0 (t) h0 (t)eηi0
Donc, on trouve bien que le ratio ne dépend pas de temps et par conclusion, on dit les
risques des observations sont proportionnels.
D’où vient le nom du Modèle : régression de Cox à risques proportionnels.
> library(survival)
> args(coxph)
function (formula, data, weights, subset, na.action, init, control,
ties = c("efron", "breslow", "exact"), singular.ok = TRUE,
robust = FALSE, model = FALSE, x = FALSE, y = TRUE, tt, method = ties,
...)
NULL
Page 51
4.2. CONSTRUCTION DES MODÈLES
> fit_formula<-Surv(TTF_days,delta)~Temp_mean+G.pk_mean+mm.s.RMS_mean
> fit.cox <- coxph(formula = fit_formula, data = Model_data )
> fit.cox
Call:
coxph(formula = fit_formula, data = Model_data)
> summary(fit.cox)
Call:
coxph(formula = fit_formula, data = Model_data)
En premier temps, on va commenter juste les deux colonnes de coef et exp(coef) puis on va
revenir pour commenter sur la colonne de la p-valeur après avoir présenté les performances des
quatre modèles.
Vu la complexité des autres modèles et pour la contrainte de temps consacré pour le stage,
il n’est pas possible à ce niveau de traiter tous les détails des modèles. Ce qui nous intéresse le
plus, c’est les résultats finaux. Voir le rapport des résultats des modèles en Annexe.
Page 52
4.3. CONCLUSION
Remarques et commentaires
1. Dans un premier temps, on va discuter les résultats de la performance des quatre modèles.
Les indices d’évaluation de ces modèles sont un peu particuliers car ces modèles sont dits
des modèles probabilistes c’est à dire qu’ils prédisent des probabilités. Pour cette raison,
on utilise un score qui s’appelle Intergrated Brier Score (IBS). Ce score est similaire à
la fonction des couts pour les modèles linaires (Cost Function) et permet de mesurer la
capacité de prédiction d’un modèle probabiliste en calculant la moyenne quadratique de
la différence entre :
— La probabilité prédite de l’occurrence de l’évènement en question.
— La probabilité actuelle.
Par conséquences, plus se score est proche de zero plus le modèle est performant. En
effet, la formule qui relie le score IBS est la performance/capacité de prédiction d’un
modèle probabiliste est la suivante : IBS = (1 − perf ormance)2 D’où les performances
des modèles sont :
Performance
Reference 1-racine(0.023)= 0.8483425
Cox 1-racine(0.023)= 0.8483425
RfSurv 1-racine(0.026)= 0.8387548
Cforest 1-racine(0.023)= 0.8483425
Alors, les quatres modeles ont une capacité de precition superieure de 80%.
2. Puisque les modèles ont presque la même performance, on a choisi en premier temps, le
modèle de Cox car il donne la possibilité d’interpréter la relation entre les prédicteurs (les
covariantes) et la variable de réponse alors que les autres modèles sont comme une boite
noire qui ne donne pas accès à une telle information. Par exemple, on dans les résultats
du modèle de cox :
coxph(formula = fit_formula, data = Model_data)
4.3 Conclusion
Pour conclure, dans ce chapitre on a vu les résultats des trois itérations qui ont mener enfin
à la construction d’un modèle prédictive plus puissant et capable de prédire le risque de l’arrivée
de la panne au niveau de la machine. La troisième itération nous a permet de faire des bons
prédictions en tenant compte du nature censuré des données.
Page 53
Chapitre 5
Maintenant, une fois les modèles sont prêts, on doit créer un outil d’interfaçage qui permet
l’exploitation des modèles et donner l’accès au gens de métier pour savoir l’état de santé des
équipements
54
5.1. INTRODUCTION
5.1 Introduction
Les utilisateurs de cette solution sont principalement des responsables de la maintenance
dans le site. Ces gens n’auront pas besoin d’entrer dans les détails des modèles analytiques
pour pouvoir exploiter cet outil de la maintenance prédictive. Ils doivent prendre rapideent
l’information nécessaire et suffisante qui leur permettre de savoir l’état de santé des équipements
surveillés dans le site, les pannes potentielles, leurs nature et le moment approximatif de chaque
panne.
Pour ce faire, on va créer un outil informatique d’aide à la décision qui permet de
synthétiser les informations nécessaires pour qu’un maintenancier prendre une décision envers
les interventions à mener chaque jour sur la base des résultats de prédictions. Dans ce chapitre,
nous allons présenter l’utilité de cet outil et sa valeur ajoutée ainsi que son processus de
fonctionnement.
Page 55
5.4. APERÇU SUR L’UTILISATION DE L’APPLICATION
Cette page contient des informations sous forme d’un rapport sur l’ensemble des équipements
connectés à la plateforme. La page du Dashboard permet l’utilisateur d’avoir accès :
1. Aux recommandations d’intervention en exposant :
— La date de la panne potentielle la plus proche
Page 56
5.4. APERÇU SUR L’UTILISATION DE L’APPLICATION
Figure 5.3: ValueBox, estimation du nombre des pannes prévues dans une
semaine
La taille des bubbles et leur couleur représentent la criticité de l’équipement comme suit :
(a) Taille des bulles : Plus la taille est grande plus la date de la panne de l’équipement
est proche
Page 57
5.4. APERÇU SUR L’UTILISATION DE L’APPLICATION
(b) Couleurs des bulles :le degré de la criticité de la panne est défini par le tendance
vers la couleur rouge comme suit :
— Verts : quand il reste plus 25 jours pour la prochaine de l’équipement en
question
— Jaune : Quand moins de 15 jours restent pour l’arrivée de la panne
— Rouge : Quand moins d’une semaine pour la panne.
(c) Recommandations de la liste des équipements ayant besoin d’intervention le plus
urgent :
Page 58
5.4. APERÇU SUR L’UTILISATION DE L’APPLICATION
Page 59
5.5. PAGE ”EQUIPEMENT OVERVIREW”
A travers cette page, on a essayé de rassembler les informations essentielles sur la fiabilité
de l’équipement. Elle peut être indiquée par trois ou quatre indicateur principaux :
1. MTBF : le temps moyen entre le début de la réparation et la panne suivante. Il est défini
par la formule suivante :
X durée de f ocntionement − durée de panne
M T BF =
nombre des pannes + 1
Page 60
5.5. PAGE ”EQUIPEMENT OVERVIREW”
3. La date de la prochaine panne de l’équipement : cette date est la valeur qu’on obtient
grâce aux modèles prédictifs. Dans le box (figure 5.13), on affiche combien reste de jours
pour l’arrivée de la panne.
Figure 5.13: Le BOX qui affiche le compte à rebours pour la prochaine panne
Page 61
5.6. CONCLUSION
5.6 Conclusion
Dans cette partie, on a expliqué la valeur ajoutée de la visualisation des données qui réside
dans la facilité de l’accès à l’information et la compréhension des résultats des modèles. Ensuite,
on da expliqué le fonctionnement de l’application web et les différents volets qu’elle contient.
Cette application est un outil d’aide à la décision qui va permettre aux gens de la maintenance
d’optimiser les coûts de la maintenance dans l’usine et de ne pas mener des interventions de la
maintenance que si nécessaire.
Page 62
Chapitre 6
Déploiement et Conclusion
63
Appendices
64
Annexe A
.1
Les variations des trois indicateurs
vibratoires
65
.1.
LES VARIATIONS DES TROIS INDICATEURS VIBRATOIRES
Page 66
.2.
FONCTIONS DE R (PHASE DE PRÉPARATION)
.2
Fonctions de R (Phase de préparation)
1. Fonctions qui rend un rapport sur la proportion des des valeurs manquantes dans les
données capteurs
.3
Fonctions exécutées pour la méthode de
Tukey
> calcul.IQR <- function(x) {
iqrV <- IQR(x, na.rm=TRUE)
iqrV }
return(column_without_outliers)
}
.4
Rapports de RStudios des des résultats des
quartes modèles
> p <- function(df){
lapply(df,function(x)
data.frame(
nmiss=sum(is.na(x)),
Page 67
.4.
RAPPORTS DE RSTUDIOS DES DES RÉSULTATS DES QUARTES
MODÈLES
n=length(x),
p=sum(is.na(x))/length(x)
)
)
}
p(Data_Sensors)
> fitpec
Prediction models:
No.Observations: 396
Pattern:
Freq
event 5
right.censored 391
Bootstrap cross-validation
Type: resampling
Bootstrap sample size: 396
No. bootstrap samples: 10
Sample size: 396
IBS[0;time=210)
Reference 0.023
Cox 0.023
Page 68
.5.
CODE DE L’APPLICATION SHINY
RfSurv 0.026
Cforest 0.023
.5
Code de l’application Shiny
* Par un souci de confidentialité, on va donner ici juste une template de l’application.
Fichier Server :
##############################################################################################
################# R-shiny App for Predicive Maintenance ######################################
##############################################################################################
########################### Author Soufiane CHAMI ############################################
##############################################################################################
########################### Date : 06/April/2017 #############################################
##############################################################################################
Page 69
.5.
CODE DE L’APPLICATION SHINY
function(input, output) {
set.seed(122)
library(bubbles)
library(ggplot2)
library(xts)
library(dygraphs)
library(DT)
library(zoo)
library(data.table)
library(ggplot2)
library(lubridate)
library(dplyr)
library(dtplyr)
library(reshape2)
library(dataQualityR)
library(caret)
library(compare)
library(psych)
library(randomForest)
library(nnet)
library(e1071)
library(rpart)
library(tree)
library(xgboost)
library(plyr)
library(gbm)
library(party)
library(neuralnet)
library(survival)
library(rms)
library(randomForestSRC)
library(party)
library(prodlim)
library(xts)
library(dygraphs)
library(DT)
Page 70
.5.
CODE DE L’APPLICATION SHINY
TTF_date=TTF+Sys.Date()
Equipment=cbind(Equipment,PanneID, TTF, TTF_date)
Equipment$TTF_date=format(Equipment$TTF_date)
Equipment=Equipment[order(Equipment$TTF_date, decreasing = F),, drop=F]
S=rep(0, length(Equipment$TTF))
for(i in 1:length(Equipment$TTF)){
S[i]=1-(Equipment$TTF[i]/100)
}
Equipment=cbind(Equipment, S)
# colnames(Equipment)=c("Equipment", "ID", "PanneID", "TTF", "TTF_date","S")
Panne=read.csv(as.character(first(as.character(Equipment$PanneID[1]))),
header = T, sep = ",")
for (i in 2:nrow(Equipment)){
if (file.exists(first(as.character(Equipment$PanneID[i])))){
Tab=read.csv(first(as.character(Equipment$PanneID[i])),
header = T, sep = ",")
Panne=rbind(Panne,Tab)
}
}
Panne=Panne[,-1]
colnames(Panne)=c("Equipement", "Ligne", "Date", "Maintenance", "Duree" )
Panne$Date=as.POSIXct(as.character(Panne$Date), format = "%d/%m/%Y ")
levels(Panne$Maintenance)
levels(Panne$Maintenance)[1]="Electrical"
levels(Panne$Maintenance)
levels(Panne$Maintenance)[2]="Civil"
levels(Panne$Maintenance)
levels(Panne$Maintenance)[3]="Mechanical"
levels(Panne$Maintenance)
levels(Panne$Maintenance)[4]="Civil"
levels(Panne$Maintenance)
levels(Panne$Maintenance)[4]="Regulation"
levels(Panne$Maintenance)
Panne$Maintenance=as.character(Panne$Maintenance)
Panne$Equipement=as.character(Panne$Equipement)
FromDate= reactive({
as.POSIXct(input$fromDatetime, format = "%Y-%m-%d %H:%M:%S")
})
ToDate= reactive({
as.POSIXct(input$ToDatetime, format = "%Y-%m-%d %H:%M:%S")
})
Xable=reactive({
Data_Sensors[Data_Sensors$Date>= FromDate()
& Data_Sensors$Date<=ToDate()
& Data_Sensors$Equipment==input$machine,]
})
Page 71
.5.
CODE DE L’APPLICATION SHINY
Yable=reactive({
Xable()[,input$Paramerter]
})
output$dt = DT::renderDataTable(DT::datatable({
data <- Xable()
data
}))
X1=reactive({
na.approx(xts(Yable(), as.POSIXct(Xable()$Date, format = "%Y-%m-%d %H:%M:%S")))
#I used appox in order to replace missing values
# by interpolation
})
output$ts= renderPrint({
summary(X1())
})
output$summ= renderPrint({
summary(Xable())
})
output$alarm =DT::renderDataTable(DT::datatable({
data1 <- X1()
data1
}))
shade_tab=reactive({
Panne[Panne$Date>= FromDate() & Panne$Date<=ToDate()
& Panne$Equipement==input$machine,]
})
output$Shadee = DT::renderDataTable(DT::datatable({
data_shade <- shade_tab()
data_shade
}))
output$str= renderPrint({
summary(shade_tab())
})
dg= reactive ({
ddgg=dygraph(X1(), main ="interactive graph",
xlab = "time frame",
ylab = "records" ) %>% dyRangeSelector()
for( i in 1:nrow(shade_tab()))
{
ddgg=dyShading(ddgg, from= shade_tab()$Date[i],
to = shade_tab()$Date[i] + 24*60*60 ,
color = ifelse(shade_tab()$Maintenance[i]== ’Mechanical’ ,
’gold’,
ifelse(shade_tab()$Maintenance[i]== ’Electrical’ ,
’springgreen’ ,
Page 72
.5.
CODE DE L’APPLICATION SHINY
ifelse(shade_tab()$Maintenance[i]== ’Civil’ ,
’royalblue’ , ’red’ ) ) ))
}
ddgg
})
bubbles(Equipment$S, Equipment$Equipment,
color =ifelse(Equipment$TTF>25,"#40E354",
ifelse(Equipment$TTF>15, "#FABC3C",
ifelse(Equipment$TTF>7, "#F55536", "#F55536"))),
width = "100%", height = 600)
})
output$packageTable<- renderTable({
Equipment[,c(1,5,4)]
})
Page 73
.5.
CODE DE L’APPLICATION SHINY
output$MTBF=renderValueBox({
valueBox( "MTBF" ,paste("30", "jours", sep=" "),
icon = icon("glyphicon glyphicon-send", lib ="glyphicon" ),
color = "red"
)
})
output$TTF =renderValueBox({
valueBox( "Next failure date ",
paste(max(Equipment$TTF[Equipment$Equipment== input$machine], 0),
"jours", sep=" "),
icon = icon("glyphicon glyphicon-hourglass"),
color = "red"
)
})
output$TTR=renderValueBox({
valueBox("MTTR", paste(max(Equipment$TTF[Equipment$Equipment==input$machine]+2, 0),
"heures", sep=" "),
icon = icon("glyphicon glyphicon-wrench", lib="glyphicon"), color = "orange")
})
output$Temperature=renderValueBox({
valueBox("TEMPERATURE",
paste(signif(mean(Data_Sensors$Temp[(
length(Data_Sensors$Equipment[Equipment$Equipment== input$machine])-15)]),
digits = 3)
,"degree", sep = " " ),
icon = icon("glyphicon glyphicon-tint", lib="glyphicon"), color = "orange")
})
output$equipment=renderInfoBox({
infoBox("Equipment",input$machine, icon("glyphicon glyphicon-tags", lib="glyphicon"),
color = "orange" )
})
output$MachineClass=renderValueBox({
Page 74
.5.
CODE DE L’APPLICATION SHINY
output$UpTime=renderValueBox({
valueBox("Up time ","100 jours 20 heures 30 min", icon("glyphicon glyphicon-oil",
lib="glyphicon"),
color = "green" )
})
Fichier Server :
Page 75
.5.
CODE DE L’APPLICATION SHINY
),
dashboardSidebar(
####################### Sidebar / Menu items #########################################
sidebarMenu(
sidebarSearchForm(textId = "searchText", buttonId = "searchButton", label = "Search..."),
h5("Main Navigation"),
h5("Rooms"),
selectInput("machine",
"Equipment name:",
c("",
unique(as.character(Data_Sensors$Equipment))), multiple = F),
menuSubItem(’Data Stream’,
tabName = ’a’,
icon = icon(’line-chart’)
),
menuSubItem("Data raw",
tabName = "DataRaw",
icon = icon("bars" )),
menuSubItem(’Equipment overview’,
tabName = ’overview’,
icon = icon(’folder-open-o’)
)),
br(),
Page 76
.5.
CODE DE L’APPLICATION SHINY
br(),
br(),
actionButton("count", "Refresh Data")
)
),
####################### Dashb.Body#########################################
dashboardBody(
includeCSS("C:/Users/Desktop/Shiny Interface/www/custom.css"),
tags$head(
tags$link(rel = "stylesheet", type = "text/css", href = "custom.css")
),
tabItems(
tabItem("dashboard",
fluidRow(
valueBoxOutput("nextFailure"),
valueBoxOutput("efficiency"),
valueBoxOutput("CriticalEquips")
),
fluidRow(
box(
width = 8, status = "primary", solidHeader = TRUE,
title = "Equipment Criticality Overview",
value = tags$p(style = "font-size: 10px;", "Bubbles"),
bubblesOutput("packagePlot", width = "100%", height = 600),
collapsible = T
),
box(
width = 4, status = "info", collapsible = T , solidHeader = TRUE,
title = "Recommendations for maintenance actions ",
tableOutput("packageTable")
)
)
)
,
tabItem(tabName = "overview",
h2("Equipment overview"),
fluidRow(
valueBoxOutput("equipment"),
valueBoxOutput("MTBF"),
valueBoxOutput("TTR")),
fluidRow(
valueBoxOutput("VitesseRotation"),
valueBoxOutput("MachineClass"),
valueBoxOutput("Diametre")),
fluidRow(
valueBoxOutput("UpTime"),
Page 77
.5.
CODE DE L’APPLICATION SHINY
valueBoxOutput("TTF"),
infoBoxOutput("Temperature"))
tabItem(tabName = ’a’,
h2("DATA STREAM"),
fluidRow(
box(dygraphOutput("dygraph"), width = 9),
fluidRow(
h3("Equipement settings"),
box(selectInput("Paramerter", "Indicator", names(Data_Sensors)[-c(1,2)]),
width = 3, status = "success",solidHeader = TRUE,
box(
br(), width = 3)
)),
tabItem(tabName = "DataRaw",
h2("Data raw from sensors"),
fluidRow(dataTableOutput("dt"))
),
tabItem(tabName ="info",
h2("How this App works ?"))
)
)
)
Page 78
Bibliographie
[1] Eric Biernat et Michel Lutz. OCTO Technologie. (France) [Data Science : Fondamentaux et
études de cas]. 195–201, 2004.
[2] Paresh Girdhar et C. Scheffer. [Practical Machinery Vibration Analysis and Predictive
Maintenance]. Oxford University. UK, pages 1–54, 2012.
[3] Thomas Rahlf. [Data Visualisation with R]. Deutsche Forschungsgemeinschaft Bonn,
Germany,390 pages, 2014.
[4] Morgan Kaufmann. [ Data Preparation for Data Mining]. San Francisco, CA 94104-3205
USA,1999.
[5] Claire Rowland, Elizabeth Goodman, Martin Charlier, Ann Light, and Alfred Lui. [
Designing Connected Products]. Printed in the United States of America.,2015.
[6] Data visualisation with R : Shiny app , Shiny Dashboard, HTML, CSS
https://stackoverflow.com
[7] Monde Diplomatique : L’Office chérifien des phosphates amorce une nouvelle phase
d’expansion,
https://www.monde-diplomatique.fr/1962/06/A/24781
79