0% ont trouvé ce document utile (0 vote)
23 vues10 pages

Case Study 2

Cette étude de cas se concentre sur la prédiction de la prolifération d'algues nocives dans les rivières à partir de données chimiques d'échantillons d'eau. Elle implique des phases de prétraitement, d'analyse exploratoire et de modélisation prédictive, avec des données collectées sur un an. L'objectif est de développer des modèles prédictifs pour surveiller les algues et comprendre les facteurs influençant leur fréquence.

Transféré par

Mureille Magne
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues10 pages

Case Study 2

Cette étude de cas se concentre sur la prédiction de la prolifération d'algues nocives dans les rivières à partir de données chimiques d'échantillons d'eau. Elle implique des phases de prétraitement, d'analyse exploratoire et de modélisation prédictive, avec des données collectées sur un an. L'objectif est de développer des modèles prédictifs pour surveiller les algues et comprendre les facteurs influençant leur fréquence.

Transféré par

Mureille Magne
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Deuxième cas d’étude avec R

Prédiction de la prolifération d'algues


Cette étude de cas vous présentera certaines des tâches de base de toute exploration de
données.

Phase du Data Mining dans ce problème : prétraitement des données, analyse exploratoire des
données et modèle prédictif.

2.1 Description du problème et objectifs

Des concentrations élevées de certaines algues nocives dans les rivières constituent un grave
problème écologique avec un fort impact non seulement sur les formes de vie des rivières, mais aussi
sur la qualité de l’eau. Être capable de surveiller et d’effectuer une prévision précoce des proliférations
d’algues est indispensable pour améliorer la qualité des rivières.

Dans le but de résoudre ce problème de prédiction, plusieurs échantillons d'eau ont été collectés dans
différents fleuves à différents moments au cours d'une période d’environ un an. Pour chaque
échantillon d'eau, des propriétés chimiques différentes ont été mesurées ainsi que la fréquence
d'apparition de 7 algues nuisibles. Quelques d'autres caractéristiques du processus de collecte de l'eau
ont également été stockées, telles que la saison de l'année, la taille de la rivière et la vitesse de la
rivière.

L'une des principales motivations de cette application réside dans le fait que la surveillance
chimique est peu coûteuse et facilement automatisée, tandis que l'analyse biologique des échantillons
pour identifier les algues présentes dans l'eau implique l'examen microscopique nécessite une main
d'œuvre qualifiée et est donc à la fois coûteux et lent. Ainsi, obtenir des modèles capables de prédire
avec précision les fréquences d'algues basées sur les propriétés chimiques faciliteraient la création de
systèmes automatisés et bon marché pour surveiller les proliférations d'algues nuisibles.

Un autre objectif de cette étude est de mieux comprendre les facteurs influençant la fréquence
des algues. Nous voulons notamment comprendre comment ces fréquences sont liées à certains
attributs chimiques des échantillons d'eau ainsi que d'autres caractéristiques des échantillons (comme
la saison de l'année, le type de rivière, etc.).

2.2 Description des données ([Link]

Les données disponibles pour ce problème se composent de deux fichiers texte distincts («
[Link] » et « [Link] »). Chaque fichier contient un ensemble d'échantillons d'eau. Le premier
fichier contient des données concernant 200 échantillons d'eau collectés dans différentes rivières.
Chaque échantillon d'eau est décrit par 11 variables. Trois de ces variables sont nominaux et décrivent
la saison de l’année au cours de laquelle l’échantillon a été collecté, la taille de la rivière et la vitesse
de l'eau de la rivière. Les 8 variables restantes sont des valeurs de différents paramètres chimiques
mesurés dans l'échantillon d'eau.

Les paramètres mesurés sont :

• Valeur pH maximale ;

• Valeur minimale d'O2 (Oxygène) ;

• Valeur moyenne du Cl (Chlore) ;

1
• Valeur moyenne du NO3− (Nitrates) ;

• Valeur moyenne de NH+4 (Ammonium)

• Moyenne de PO34 (Orthophosphate) ;

• Moyenne de PO4 totale (Phosphate)

• Moyenne de chlorophylle II

À chacun de ces échantillons d’eau sont associés 7 nombres de fréquences de différentes


algues nocives trouvées dans les échantillons d’eau. Aucune information n'est donnée concernant
quelles algues ont été identifiées.

Le deuxième fichier de données contient 140 autres échantillons d'eau décrits par les mêmes
variables. Ces échantillons peuvent être considérés comme une sorte d’ensemble de tests (données
de test). En tant que tel, les informations concernant les valeurs des concentrations des 7 algues ont
été omis. L'objectif principal de notre étude est de prédire les fréquences des 7 algues pour ces 140
échantillons d'eau.

Notes :

1. En réalité, chaque observation dans les fichiers de données est une agrégation de plusieurs
échantillons d'eau réalisée sur une période de trois mois, sur le même fleuve, et au cours de la
même saison de l'année.
2. Rappelons que chaque ligne correspond à une agrégation de plusieurs échantillons d'eau
prélevés dans la même rivière pendant la même période de l'année (c'est-à-dire la même
saison).

2.3 Chargement des données dans R

Les deux fichiers de données sont disponibles sur le site Web [Link]
dans la section Données. Le Le lien « Training data » contient les 200 échantillons d'eau du fichier «
[Link] », tandis que le lien « Données de test » pointe vers le fichier « [Link] » qui contient les
140 échantillons de test. Il existe un lien supplémentaire qui pointe vers un fichier (« [Link] ») qui
contient les fréquences d’algues des 140 échantillons testés. Ce dernier fichier sera utilisé pour vérifier
les performances de nos modèles prédictifs et sera considéré comme informations inconnues au
moment de la construction du modèle. Les fichiers ont les valeurs pour chaque échantillon d’eau sur
une ligne différente. Chaque ligne de la formation et Les fichiers de test contiennent les valeurs des
variables (selon la description donnée sur la section 2.2) séparés par des espaces. Les valeurs
inconnues sont indiquées par la chaîne « XXXXXXX ».

La première chose à faire pour suivre cette étude de cas est de télécharger les trois fichiers du site
Web du livre et stockez-les dans un répertoire de votre disque dur.

Après avoir téléchargé les fichiers de données dans un répertoire local, nous pouvons commencer
par charger (Reading data from text files) dans R, les données du fichier « [Link] » (les données
d'entraînement, c'est-à-dire les données que les fichiers texte utilisera pour obtenir les modèles
prédictifs).

Pour lire les données du fichier il suffit d'écrire la commande suivante :

2
Le paramètre header=F indique que le fichier à lire ne comprend pas une première ligne avec les noms
des variables.

dec=’.’ indique que les nombres utilisent le caractère ’.’ pour séparer les décimales. Ces deux
paramètres précédents pu être omis car nous utilisons leurs valeurs par défaut.

[Link] permet de fournir un vecteur avec les noms à donner aux variables dont les valeurs sont en
cours de lecture.

Enfin, [Link] sert à indiquer un vecteur de chaînes qui doivent être interprétés comme des valeurs
inconnues. Ces valeurs sont représentées en interne dans R par la valeur NA.

R possède plusieurs autres fonctions qui peuvent être utilisées pour lire les données contenues
dans Lecture à partir d'autres fichiers texte. Vous souhaiterez peut-être taper «?[Link]» pour
obtenir plus d'informations sur les types de fichiers sur ceci et d'autres fonctions connexes. De plus, R
dispose d'un manuel que vous pouvez souhaiter parcourir, nommé « R Data Import/Export », qui décrit
les différentes possibilités que R inclut pour lire des données provenant d’autres applications.

Le résultat de cette instruction est une trame de données, qui peut être considérée comme
une sorte de matrice ou tableau avec des colonnes nommées (dans cet exemple avec les noms que
nous avons indiqué dans le paramètre [Link]). Chaque ligne de ce bloc de données contient un
échantillon d'eau. Par exemple, nous pouvons voir les 5 premiers échantillons en utilisant l'instruction
algues[1:5,].

Note : Nous supposons que les fichiers de données se trouvent dans le répertoire de travail courant de
R. Sinon, utilisez le commande "setwd()" pour changer cela, ou utilisez l'option "Change dir..." dans le
menu "Fichier" deVersions Windows.

2.4 Visualisation et synthèse des données


Compte tenu du manque d’informations supplémentaires sur le domaine du problème, il est
sage d’étudier certaines propriétés statistiques des données, afin de mieux comprendre le problème.
Même si ce n'était pas le cas, il est toujours judicieux de commencer notre analyse par une sorte
d'analyse exploratoire des données similaire à celle que nous montrerons ci-dessous.

Une première idée des propriétés statistiques des données peut être obtenue à travers une
synthèse de leurs statistiques descriptives. (Obtenir des statistiques descriptives de base)

3
Cette instruction simple nous donne immédiatement un premier aperçu les propriétés
statistiques des données. Dans le cas de variables nominales (représentées par facteurs dans les
trames de données R), il fournit des décomptes de fréquence pour chaque valeur possible (En effet,
s'il y en a trop, seuls les plus fréquents sont affichés). Par exemple, on peut observer qu’il y a plus
d’échantillons d’eau collectés en hiver que pendant les autres saisons. Pour les variables numériques,
R nous donne une série de statistiques comme leur moyenne, leur médiane, leurs informations sur les
quartiles et leurs valeurs extrêmes. Ces statistiques donnent une première idée sur la répartition des
valeurs des variables (nous nous reviendrons sur cette question plus tard). Dans le cas d'une variable
ayant une inconnue valeurs, leur numéro est également affiché après la chaîne na. En observant la
différence entre médianes et moyennes, ainsi que l'écart interquartile (3e quartile moins le 1er
quartile).

Note : Si l'on ordonne les valeurs d'une variable, le 1er quartile est la valeur en dessous de laquelle se
trouvent 25% des points de données, tandis que le 3ème quartile est la valeur en dessous de laquelle il
y a 75% des cas, ce qui signifie qu'entre ces deux valeurs nous avons 50% de nos données. L'intervalle
interquartile est défini comme le 3ème quartile moins le 1er quartile, constituant ainsi une mesure de
l'écart de la variable autour de sa valeur centrale (des valeurs plus grandes indiquent un écart plus
grand).

4
On peut avoir une idée de l'asymétrie de la distribution et aussi sa propagation. Pourtant, la
plupart du temps, ces informations sont mieux capturées graphiquement. Voyons un exemple :

Cette instruction nous montre l'histogramme de la variable mxPH. Le résultat est les
histogrammes présentés dans la figure 2.1. Avec le paramètre prob=T, nous obtenons des probabilités
au lieu de décomptes de fréquence pour chaque intervalle de valeurs. Omettre ce paramètre nous
donnerait des décomptes de fréquence de chaque barre de l'histogramme.

La figure 2.1 nous indique que les valeurs de la variable « mxPH » suivent une distribution très
proche de la distribution normale, avec des valeurs bien regroupées autour de la valeur moyenne.
Nous pouvons obtenir des informations complémentaires en utilisant à la place les instructions
suivantes (le résultat est dans la figure 2.2)

La première instruction est fondamentalement la même que la précédente, sauf que nous
omettons l'étiquette de l'axe X, nous modifions le titre du graphique et nous fournissons des limites
raisonnables pour l'axe Y. La deuxième instruction trace une version fluide de l'histogramme (une
estimation de la densité du noyau de la distribution de la variable), tandis que la troisième trace les
valeurs réelles de la variable près de l'axe X, permettant ainsi de repérer facilement les valeurs
aberrantes. Par exemple, on peut observer qu’il existe deux valeurs significativement inférieures à tous
les autres. Ce type d'inspection des données est très important car il peut identifier d'éventuelles
erreurs dans l'échantillon de données, ou même aider à localiser des valeurs si gênantes qu'il ne s'agit
peut-être que d'erreurs ou du moins, nous ferions mieux de les ignorer dans une analyse postérieure.

Note : Le réglage du paramètre [Link]=T est utilisé dans plusieurs fonctions pour indiquer que les
valeurs na ne doivent pas être prises en compte dans le calcul de la fonction. Ceci est nécessaire dans
plusieurs fonctions car ce n'est pas leur comportement par défaut, sinon une erreur serait générée.

5
Un autre exemple (Figure 2.3) illustrant ce type d'inspection des données peut être réalisé avec
les instructions suivantes, cette fois pour la variable oPO4 :

La première instruction dessine une boîte à moustaches de la variable oPO4. Les boîtes à
moustaches fournissent un résumé rapide de certaines propriétés clés de la distribution variable. A
savoir, il existe une case dont les limites sont les 1er et 3ème quantile de la variable.

Cette case comporte une ligne horizontale à l’intérieur qui représente la valeur médiane de la
variable. Soit r l'intervalle interquartile. Le petit tiret horizontal ci-dessus la case est la plus grande
observation inférieure ou égale au 3ème quartile plus 1,5r. Le petit tiret horizontal sous la case est la
plus petite observation supérieure ou égale au 1er quartile moins 1,5r. Les cercles au-dessous ou au-
dessus de ces petits tirets représentent des observations extrêmement faibles (élevées) par rapport à
toutes les autres et sont généralement considérées comme des valeurs aberrantes. Cela signifie que
les diagrammes en boîte nous donnent de nombreuses informations concernant non seulement la
valeur centrale et la répartition de la variable, mais également les éventuelles valeurs aberrantes.

La deuxième instruction a déjà été décrite précédemment (la seule différence étant l'endroit
où les données sont tracées), tandis que la troisième utilise la fonction abline() pour tracer une ligne
horizontale7 à la valeur moyenne de la variable, qui est obtenu en utilisant la fonction moyenne(). En
comparant cette ligne avec la ligne à l'intérieur la case indiquant la médiane on peut conclure que la
présence de plusieurs les valeurs aberrantes ont faussé la valeur de la moyenne.

6
L'analyse de la figure 2.3 nous montre que la variable oPO4 a une distribution des valeurs
observées clairement asymétrique vers la droite (valeurs élevées). Dans la plupart des échantillons
d'eau, la valeur d'oPO4 est faible, mais il existe plusieurs observations de valeurs élevées, voire
extrêmement élevées.

Parfois, lorsque nous rencontrons des valeurs aberrantes, nous souhaitons identifier les
observations aberrantes qui ont ces valeurs « étranges ». Nous allons montrer deux façons de faire des
cas ce. Tout d’abord, faisons-le graphiquement. Si nous traçons les valeurs de la variable NH4, nous
remarquons une valeur très grande. Nous pouvons identifier l'échantillon d'eau respectif en faisant :

La première instruction trace toutes les valeurs de la variable. Les appels à la fonction abline()
dessinent trois lignes informatives, une avec la valeur moyenne, une autre avec la moyenne + l'écart
type et l'autre avec la médiane. La dernière instruction est interactive et permet à l'utilisateur de
cliquer sur les points tracés avec le bouton gauche de la souris. Pour chaque point cliqué, R écrira le
numéro de ligne correspondant dans le bloc de données sur les algues. L'utilisateur peut terminer
l'interaction en cliquant sur le bouton droit bouton de la souris.

Note :

-Le paramètre lty=2 permet d'obtenir une ligne pointillée.

-La position où vous cliquez par rapport au point détermine le côté où R écrit le numéro de ligne. Par
exemple, si vous cliquez à droite du point, le numéro de ligne sera inscrit à droite.

Nous pouvons également effectuer cette inspection sans graphiques, comme indiqué ci-
dessous : (Le résultat de cette instruction peut sembler un peu étrange. Cela résulte du fait qu’il y a
quelques observations avec des valeurs NA dans la variable NH4, ce qui « laisse perplexe » R. Nous
pouvons éviter ce comportement en émettant à la place l'instruction algae[![Link](algae$NH4) &
algae$NH4 > 19000,]. L'opérateur '!' effectue la négation logique, l'opérateur '&' la négation logique
conjonction, tandis que la fonction [Link]() est vraie chaque fois que son argument a la valeur NA.)

7
Cette instruction illustre une autre forme d'indexation d'une trame de données, en utilisant
une expression logique comme sélecteur de ligne. Le résultat affiche les lignes du bloc de données
pour lesquelles l'expression logique est vraie.

Enfin, nous explorerons quelques exemples d’un autre type d’inspection des données.

Ces exemples utilisent le package graphique « treillis » de R, qui fournit un ensemble d'outils
graphiques impressionnants. Supposons que nous souhaitions étudier la distribution des valeurs, par
exemple, de l'algue a1. Nous pourrions utiliser n’importe laquelle des possibilités évoquées
précédemment. Cependant, si l’on veut étudier comment cette distribution dépend d’autres variables,
de nouveaux outils sont nécessaires.

Les tracés conditionnés sont des représentations graphiques qui dépendent d’un certain
facteur. Un facteur est une variable nominale avec un ensemble de valeurs finies. Par exemple, Boîte
conditionnée, nous pouvons obtenir un ensemble de boîtes à moustaches pour la variable a1, chacune
pour des tracés de valeurs différentes de la taille de la variable (cf. Figure 2.4). Chacune des boîtes à
moustaches a été obtenue en utilisant le sous-ensemble d’échantillons d’eau qui ont une certaine
valeur de taille variable.

Ces graphiques permettent d'étudier comment cette variable nominale peut influencer la
distribution des valeurs de a1. Le code pour obtenir les boîtes à moustaches est :

La première instruction se charge dans le package « lattice »10. La seconde obtient une boîte
à moustaches en utilisant la version « treillis » de ces parcelles. Le premier argument de cette
instruction peut être lu comme « tracer a1 pour chaque valeur de taille ». Les autres arguments ont
des significations évidentes.
La figure 2.4 nous permet d’observer que des fréquences plus élevées d’algues a1 sont attendues dans
les petites rivières, ce qui peut constituer une connaissance précieuse.
Ce type de tracés conditionnés ne se limite pas aux variables nominales, ni à un seul facteur.
Vous pouvez réaliser le même type d'étude de conditionnement avec les variables continues
(Conditionnement sur variables continues) à condition de les « discrétiser » au préalable. Voyons un
exemple de variables continues en observant le comportement de la fréquence de l'algue a3
conditionnée par la saison et mnO2, cette dernière étant une variable continue. La figure 2.5 montre
un tel graphique et le code pour l'obtenir est le suivant :

8
La première instruction utilise la fonction é[Link]() pour créer une version factorisée de la
variable continue mnO2. Le paramètre numéro définit le nombre de groupes souhaités, tandis que le
paramètre chevauchement définit le chevauchement entre les groupes près de leurs limites
respectives (cela signifie que certaines observations seront attribuées aux groupes adjacents). Les
compartiments sont créés de telle sorte qu'ils contiennent un nombre égal d'observations. Vous avez
peut-être remarqué que nous n'avons pas utilisé algues$mnO2 directement. La raison est la présence
de valeurs na dans cette variable.

Cela entraînerait des problèmes dans la fonction graphique ultérieure. Nous avons utilisé la
fonction [Link]() qui supprime toute valeur na d'un vecteur.11 Strip plots La deuxième ligne contient
l'appel à la fonction graphique stripplot(). Il s’agit d’une autre fonction graphique du package « lattice
». Il crée un graphique contenant les valeurs réelles d'une variable, dans différentes bandes en fonction
d'une autre variable (dans ce cas la saison). Différents graphiques sont eux dessinés pour chaque bac
de la variable mnO2. Les bacs sont ordonnés de gauche à droite et de bas en haut. Cela signifie que le
tracé en bas à gauche correspond à des valeurs inférieures de mnO2 (inférieures à 25 environ).
L'existence de valeurs na dans mnO2 a également un certain impact sur les données à utiliser pour
tracer le graphique. Au lieu d’utiliser le paramètre data=algae (comme pour la création de la figure
2.4), nous avons dû « éliminer » les lignes correspondant aux échantillons avec des valeurs na en mnO2.
Ceci a été réalisé en utilisant la fonction [Link](), qui produit un vecteur de valeurs booléennes (vrai ou
faux). Un élément de ce vecteur est vrai lorsque mnO2 est na. Ce vecteur comporte autant d’éléments
qu’il y a de lignes dans la trame de données algue. La construction ![Link](mnO2) renvoie ainsi un
vecteur de valeurs booléennes vraies dans les éléments correspondant aux lignes où mnO2 est connu,
car ’!’ est la négation logique opérateur. Compte tenu de la façon dont R gère les vecteurs d'indice
boléen (cf. section 1.2.7), cela signifie que nous utilisons les lignes de la base de données sur les algues,
correspondant aux échantillons d'eau n'ayant pas na dans la valeur de la variable mnO2. Les valeurs

9
NA posent des problèmes à plusieurs méthodes. La prochaine session aborde cette question et suggère
des formes de surmonter ces problèmes.

2.5 Valeurs inconnues

10

Vous aimerez peut-être aussi