Ce TP est la suite du précédent. On reprend
le jeu de données sommeil que l'on a rencontré lors du 1er
TP.
Table des matières :
On peut facilement sélectionner des lignes (données) ou des colonnes (attributs) d'un data frame selon un critère quelconque. Ce qui suit va être très utilisé dans les TPs par la suite.
On utilise des crochets [ pour spécifier les lignes/colonnes à sélection. La forme générale est :
> sommeil [lignes-à-sélectionner, colonnes-à-sélectionner]
Par exemple :
> sommeil [c (3, 5, 7, 18), ]aucune colonne n'ait spécifié, ce qui signifie que l'on sélectionne toutes les colonnes.
> sommeil [, c (2, 3, 7)]aucune ligne n'ait spécifié, ce qui signifie que l'on sélecitonne toutes les données
> sommeil [seq (from = 2, to = nrow (sommeil), by = 2), c (2, 7)]
> sommeil [sommeil$Predation == 2, ]
> sommeil [(sommeil$Predation == 2) & (sommeil$Brain.Weight <= 3), ]
> sommeil [(sommeil$Predation == 2) | (sommeil$Brain.Weight <= 3), 1]ou :
> sommeil [(sommeil$Predation == 2) | (sommeil$Brain.Weight <= 3), "Species"]ou encore :
> sommeil$Species [(sommeil$Predation == 2) | (sommeil$Brain.Weight <= 3)]Avec cette dernière notation, on commence par sélectionner l'attribut Species puis on sélectionne les lignes correspondant au critère avec les crochets.
Pour obtenir le numéro des données sélectionnées, on utilise la fonction which appliquée au critère de sélection :
> which ((sommeil$Predation == 2) | (sommeil$Brain.Weight <= 3))
Le résultat est un vecteur d'indices que l'on peut utiliser comme on veut. Par exemple, on le stocke dans un objet nommé v :
> v <- which ((sommeil$Predation == 2) | (sommeil$Brain.Weight <= 3))
et utiliser ensuite ce vecteur pour sélectionner les élements de sommeil, par exemple :
> sommeil$Species [v]
Par corrélation entre deux attributs, on sous-entend comme toujours quand cela n'est pas spécifiée, linéaire, c'est-à-dire le rapport entre les valeurs de deux attributs. On a vu précédemment la fonction cor() pour calculer le coefficient de corrélation entre deux attributs.
Avant de calculer des coefficients de corrélation linéaire, lire cette page où j'explique coment interprêter la valeur de ce coefficient.
On s'intéresse à déterminer le coefficient de corrélation linéaire pour chaque couple d'attributs ; on obtient la matrice de corrélations. cor() s'appliquer à un data frame, du moment que tous les attributs en sont des nombres.
Calculez la matrice de corrélations pour le jeu de données sommeil. Prenez soin d'éliminer les données ayant des valeurs inconnues et prenez soin aussi de ne considérer que les attributs numériques.
L'attribut Species contient le nom de l'espèce animale. read.csv() l'a considéré comme un facteur (un attribut nominal). C'est plutôt une chaîne de caractères. On transforme cet attribut en chaîne de caractère en tapant la commande :
> sommeil$Species <- as.character(sommeil$Species)
Faites-le.
La fonction nchar() fournit le nombre de caractères d'une chaîne de caractères. Par exemple nchar ("hello world!") renvoie 12.
> sommeil$lg.nom.espece <- ...
Body.Weight Brain.Weight Non.Dreaming Dreaming Sleep 0.08158730 0.03118650 0.12794411 0.29249502 0.20348594 Lifespan Gestation Predation Sleep.exposure Endangered -0.36658928 -0.11486060 -0.07672917 -0.33721379 -0.22823030 lg.nom.espece 1.00000000
On observe régulièrement des corrélations linéaires impliquant le log d'une quantité plutôt que la quantité elle-même.
Il est courant d'avoir besoin de calculer une table de contingence, c'est-à-dire pour un attribut discret, le nombre de données ayant chacune des valeurs de cet attribut.
La fonction table() renvoie une table de contingence. Utilisez la page d'aide de cette fonction pour obtenir la table de contigence pour l'attribut Predation.