L’utilisation de R consiste à résoudre des problèmes. Vous avez téléchargé R et RStudio la semaine dernière. Nous interagissons uniquement avec RStudio, qui offre des avantages, comme l’interface, lors de la programmation d’analyses utilisant R en arrière-plan.
La plupart du temps, le travail sur vos données dans R consiste à nettoyer et à traiter les données. Le traitement des données devient extrêmement important pour s’assurer que votre analyse sera correcte à la fin. Au cours de ce processus, vous explorerez également vos données, grâce auxquelles vous obtenerez une perspective plus large des tendances que vos variables peuvent présenter, avant de procéder à l’analyse principale. Il est essentiel de connaître le contenu de vos données avant de les analyser.
Comme tout autre langage de programmation, R possède une syntaxe spécifique qu’il est important de comprendre si vous voulez utiliser ses fonctionnalités. Nous utiliserons différents types de syntaxe au cours de Statistique II et III pour exécuter différentes analyses. La syntaxe doit être écrite dans le script R, qui est un document dans lequel, la semaine dernière, vous vous êtes assuré que RStudio fonctionnait en tapant “1+1”. Pour commencer un nouveau script, allez dans le coin supérieur gauche, sélectionnez File > New file > R Script, et une fenêtre vide devrait apparaître, prête à être tapée. Tapez à nouveau “1+1” pour vous assurer que cela fonctionne. Pendant le cours, nous nous appuierons toujours sur nos analyses en syntaxe, vous devez donc vous assurer que vous ne perdez aucun des fichiers. Pour rester organisé pendant le semestre, nous vous suggérons de créer un dossier sur votre ordinateur (par exemple, “Statistique II Automne 2022”), où vous garderez toutes vos syntaxes et ensembles de données (gardez-les ensemble). Pour sauvegarder une syntaxe, allez dans File > Save As…, et une fois que vous lui avez donné un nom et que vous l’avez enregistré dans le dossier, vous pouvez simplement cliquer sur Save ou sur la petite disquette juste au-dessus de la fenêtre de syntaxe. Vous pouvez utiliser un seul long fichier de syntaxe pendant tout le semestre, ou vous pouvez ouvrir une nouvelle syntaxe chaque semaine, afin de conserver un ordre ordonné des fichiers. N’hésitez pas à choisir ce qui vous convient le mieux.
Définir votre répertoire de travail, ou working directory - votre fichier doit se trouver dans le même dossier que votre ensemble de données. Le répertoire de travail est le dossier dans lequel se trouve votre fichier. Une fois que vous avez défini votre répertoire de travail, vous pouvez utiliser la syntaxe pour ouvrir l’ensemble de données à l’aide de RStudio. Pour savoir comment définir votre répertoire de travail, consultez le Code 1.
Conseil Important : un répertoire de travail n’est valable que tant que votre RStudio est ouvert, c’est-à-dire une session. Si vous fermez RStudio à la fin de ce cours, et que vous le rallumez ensuite, vous devez à nouveau définir le répertoire de travail pour la nouvelle session.
Lisez votre fichier de données et enregistrez-le dans un objet. Vous pouvez donner à votre objet pratiquement n’importe quel nom (mais évitez d’utiliser des noms de fonctions). L’option la plus courante est de l’enregistrer sous le nom ‘df’, qui signifie data frame. R fonctionne à l’aide de noms d’objets et, par conséquent, tout ensemble de données ouvert ou toute analyse effectuée doit être sauvegardé dans un objet utilisant un nom distinct, afin que vous puissiez facilement le rappeler une fois sauvegardé. Nous allons nous entraîner en utilisant un ensemble de données réel utilisé dans une publication de Kraut et al. (1998). Le fichier nommé “depression-and-the-internet.csv” est disponible sur Moodle, dans le dossier Semaine 2 > Matériaux TP. Assurez-vous de télécharger et de sauvegarder l’ensemble des données dans le même dossier que votre fichier de syntaxe et votre répertoire de travail.
Conseil Important : Commencez à annoter votre syntaxe. Cela la rend transparente pour les autres et vous permet de vous souvenir rapidement de ce que vous avez fait, en particulier si on vous demande de faire une analyse supplémentaire lorsque vous devez réviser et soumettre à nouveau un article. Vous pouvez le faire en commençant votre ligne par un hashtag (#). Vous verrez que tout ce qui est suivi du hashtag devient bleu jusqu’à la fin de la ligne.
Note : Prenez l’habitude d’annoter votre syntaxe à l’aide du hashtag dès le début du semestre. Cela vous sera très utile lorsque vous réviserez pour l’examen, car vous ne vous souviendrez pas de toutes les étapes de l’analyse.
# Il existe deux façons de définir votre répertoire de travail. La première (recommandée)
# consiste à aller dans le panneau de l'utilisateur en haut, puis à choisir Session > Set
# working directory > Choose directory... En cliquant sur "Choose directory", vous
# pourrez choisir manuellement le dossier dans lequel vous souhaitez enregistrer votre
# syntaxe et dans lequel votre ensemble de données est chargé. Une fois que vous l'avez
# fait, vous verrez dans la fenêtre Console, que R a exécuté la fonction pour vous en
# affichant le code. Sinon, vous pouvez aussi le faire manuellement en modifiant la
# syntaxe ci-dessous, pour localiser le fichier (gardez à l'esprit que la description de
# l'emplacement du fichier diffère pour les systèmes d'exploitation Mac et Window). Dans
# cet exercice, j'ai enregistré mon ensemble de données dans le dossier Semaines 1-2.
# Pour garder vos fichiers en ordre pendant le cours, essayez de créer un dossier
# séparé pour Statistique II, de sorte que vous puissiez stocker tous les fichiers et
# syntaxes pour votre propre facilité et confort.
setwd("~/Desktop/Enseignement UNIL/Automne 2022/Semaines 1-2")
# La prochaine fonction que nous utiliserons est "read.csv" qui nous permettra d'ouvrir
# les fichiers enregistrés au format .csv. C'est le seul type de fichiers que nous
# utiliserons ce semestre. Assurez-vous qu'après avoir téléchargé le fichier et l'avoir
# placé dans le bon dossier, vous ne l'ouvrez pas en double-cliquant dessus. En l'ouvrant
# dans le mauvais logiciel, vous risquez de modifier les paramètres du fichier et de ne
# plus pouvoir le lire dans RStudio. Au lieu de cela, rendez-vous dans RStudio
# directement après avoir placé l'ensemble de données dans le bon dossier, et utilisez la
# commande `read.csv("nom du fichier.csv")`, en suivant l'exemple ci-dessous. Nous
# enregistrerons le fichier sous le nom d'objet "df".
df <- read.csv("depression_and_internet_data.csv", header = TRUE)
# À moins que vous ayez reçu un message d'erreur, le fichier devrait avoir été ouvert
# avec succès. Essayons de l'imprimer dans la console en écrivant le nom de l'objet. La
# sortie ne retournera pas l’entièreté de l'ensemble des données, car il y a trop de
# lignes.
df
Vous verrez que RStudio a imprimé plus de 100 lignes de données, tout en affichant également les noms des colonnes. Retrouvez la description des données ci-dessous, avant de passer à l’application des fonctions.
Conseil Utilisation de “=” au lieu de “<-” pour enregistrer des objets sous des noms spécifiques. C’est une pratique très courante d’utiliser la flèche pour enregistrer des fichiers et des modèles dans des objets portant un titre spécifique. Il existe des débats dans les communautés de programmation sur la manière dont l’utilisation de l’un ou l’autre signe s’inscrit dans notre compréhension des fonctions. Vous pouvez utiliser soit “=” soit “<-” lorsque vous assignez des objets à leur nom, mais soyez cohérent.
En utilisant cet ensemble de données sauvegardé dans l’objet df, nous allons mettre en pratique quelques fonctions R de base. Les fonctions nous permettent d’en savoir plus sur la structure de notre ensemble de données, en utilisant les arguments appropriés. Pour l’instant, nous allons utiliser notre objet df comme argument d’une fonction. Vous trouverez ci-dessous quelques-unes des fonctions les plus pratiques avec leur description.
head() vous donne les 6 premières lignes de votre ensemble de données.tail() vous donne les 6 dernières lignes de votre ensemble de données.dim() fournit la dimension de votre cadre de données (nombre de colonnes et de lignes).str() vous indique la structure interne d’un objet R (noms et types de variables, nombre d’observations).names() liste les noms de toutes vos variables dans le cadre de données.view() vous permet d’afficher l’ensemble des données dans une nouvelle fenêtre.Conseil Les arguments complètent votre fonction dans les parenthèses. Puisque dans ce cas nous pouvons utiliser notre objet df comme argument, une fonction head(df) (par exemple) renverrait les six premières lignes de l’ensemble de données sauvegardé sous l’objet df.
Essayez d’appliquer cette fonction et d’autres en suivant les instructions ci-dessous.
# les 6 premières lignes de données
head(df)
# les 6 dernières lignes de données
tail(df)
# afficher les noms et les numéros des colonnes
names(df)
## [1] "X" "InternetUseMean" "DepressionBefore" "DepressionAfter"
## [5] "Gender" "Race" "Age" "IncomeHousehold"
## [9] "Household.size"
# indiquer combien de lignes et de colonnes il y a dans l'ensemble de données
dim(df)
## [1] 169 9
# renseigner sur le nombre d'observations et le type de chaque variable
str(df)
## 'data.frame': 169 obs. of 9 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ InternetUseMean : num 1.07049 1.91029 0 0.00192 0.98568 ...
## $ DepressionBefore: num 1.733 0.133 0.6 1.866 0.4 ...
## $ DepressionAfter : num 0.928 0.143 0.357 0.857 0.286 ...
## $ Gender : chr "male" "male" "female" "female" ...
## $ Race : int 1 1 1 1 1 1 1 1 0 1 ...
## $ Age : chr "Adult" "Adult" "Adult" "Adult" ...
## $ IncomeHousehold : num 85 85 85 85 NA 85 85 52.5 52.5 85 ...
## $ Household.size : int 5 5 5 5 4 3 3 4 4 5 ...
Tout n’est pas disponible tel quel dans RStudio. Afin de pouvoir exécuter certaines fonctions et des analyses supplémentaires, nous devons importer des paquets externes pour étendre les fonctionnalités du logiciel. Pensez aux jeux vidéo qui ont besoin de mises à jour supplémentaires pour élargir le nombre d’options permettant de naviguer dans l’univers virtuel. Vous vous souvenez des Sims et des packs d’extension ? C’est exactement ce dont RStudio a besoin pour pouvoir exécuter des analyses supplémentaires. Ces paquets doivent être installés une seule fois, à l’aide de la fonction install.packages('nom du paquet'), puis activés à l’aide de library(nom_du_paquet) (remarquez le changement subtil et l’absence de guillemets dans cette dernière fonction).
Tip Important : Alors que vous ne devez installer chaque paquet qu’une seule fois, vous devez l’activer à l’aide de la fonction library() chaque fois que vous ouvrez RStudio, ou lorsque vous démarrez une nouvelle session (tout comme avec un répertoire de travail). Un moyen facile de ne pas l’oublier est de supprimer ou de marquer avec le hashtag le code install.packages() une fois le paquet importé, et de ne garder que celui qui l’active. Dans l’étape suivante, nous allons installer et activer le paquet ‘psych’ qui contient des fonctions qui seront utiles pour visualiser les données (Tâche 4).
# install.packages('psych') supprimer le hashtag avant de faire cela
library(psych)
Maintenant que le paquet ‘psych’ est activé, nous pouvons tracer les données à l’aide de la fonction de ce paquet, pairs.panels(), qui affiche un diagramme de dispersion de matrices, avec des diagrammes de dispersion bivariés sous la diagonale, des histogrammes sur la diagonale et la corrélation de Pearson au-dessus de la diagonale. L’exécution de cette fonction facilite l’exploration des données avant de plonger dans les statistiques descriptives et les analyses plus complexes.
pairs.panels(df)
Il semble que l’inclusion de df dans la parenthèse ait produit une série de graphiques et de figures pour l’ensemble des données (regardez les noms des variables sur la diagonale). Mais que se passe-t-il si nous ne sommes intéressés que par des variables spécifiques ? C’est-à-dire si nous voulions nous concentrer sur les corrélations entre le nombre d’heures passées sur Internet, le niveau de dépression mesuré avant et après, et le revenu du ménage ? Pour cela, nous devons spécifier les variables (colonnes) de l’ensemble de données.
En utilisant la fonction suivante, nous pourrons sélectionner les variables/colonnes spécifiques sur lesquelles nous voulons exécuter la fonction pairs.panels(). Lisez les points suivants, prêtez attention aux différences entre la façon dont vous spécifiez les indicateurs entre les parenthèses.
df[ , ] - l’utilisation des crochets vous permet de sélectionner les lignes et les colonnes de votre objet, c’est-à-dire “df”. Le premier espace dans les crochets, avant la virgule, est pour les lignes, le second est pour les colonnes. Vous devez insérer un nombre de ligne/colonne, pour spécifier celle que vous voulez que la fonction évalue. Laissez le premier espace vide si vous voulez sélectionner toutes les lignes et spécifiez les colonnes seulement après la virgule.df[ , 3] - comme expliqué ci-dessus, cet argument sélectionne uniquement la colonne 3, et inclut toutes les lignes.df[ , c(3:5)] - si vous voulez sélectionner plus d’une colonne, vous devez utiliser l’argument c(), qui signifie “combiner”. Dans cet exemple, nous cherchons à explorer toutes les lignes, mais seulement les lignes de 3 à 5 (remarquez le double point).Avant de tracer les données, examinons à nouveau la structure de notre ensemble de données. Nous voulons nous concentrer sur le nombre d’heures passées sur Internet, le niveau de dépression mesuré avant et après, et le revenu du ménage. Examinons les numéros des variables. Nous pouvons rappeler les numéros des colonnes en utilisant names(df).
# Afficher les noms et les numéros des colonnes
names(df)
## [1] "X" "InternetUseMean" "DepressionBefore" "DepressionAfter"
## [5] "Gender" "Race" "Age" "IncomeHousehold"
## [9] "Household.size"
Vous voyez maintenant que nous sommes intéressés par les colonnes 2, 3, 4 et 8. Vérifions à l’aide de la fonction ci-dessous.
# Rappeler les noms des variables/colonnes 2, 3, 4 et 8
names(df[ , c(2:4, 8)])
## [1] "InternetUseMean" "DepressionBefore" "DepressionAfter" "IncomeHousehold"
Traçons maintenant les variables sélectionnées à l’aide de la fonction pairs.panels().
pairs.panels(df[ , c(2:4, 8)])
Vous verrez maintenant qu’il est beaucoup plus facile de lire les informations du nuage de points des matrices. En réduisant le nombre de variables cibles, le nuage de points est devenu plus lisible et plus transparent. Prenez quelques minutes pour essayer de comprendre les relations entre les variables. Commencez par la diagonale et regardez la distribution des données entre les variables. Pouvez-vous tirer des conclusions initiales des diagrammes de dispersion bivariés (sous la diagonale) et des coefficients de corrélation de Pearson (au-dessus de la diagonale) ?
describe() - une fonction qui fournit une série de statistiques descriptives basées sur vos données.# Afficher toutes les descriptions de toutes les variables
describe(df)
Répétez la même étape que dans la Tâche 4, et calculez les statistiques descriptives pour les colonnes 2, 3, 4 et 8.
# Afficher les statistiques descriptives pour les colonnes spécifiées seulement
describe(df[ , c(2:4, 8)])
Dans la section Tâche 1, nous avons décrit les variables incluses dans cet ensemble de données. Dans la section précédente, nous avons montré comment calculer les statistiques descriptives. En pensant à notre ensemble de données et aux caractéristiques de notre échantillon, nous pouvons le décrire en utilisant les moyennes globales, les écarts types, etc. de l’ensemble des données. Cependant, que se passe-t-il si nous voulons extraire des informations plus détaillées sur nos données ? Par exemple, le nombre moyen d’heures passées sur Internet chez les hommes et les femmes ? Quel est le taux de dépression déclaré dans la population blanche par rapport à celui de la population de couleur ? Comment les adultes et les adolescents déclarent-ils le revenu du ménage ? Pour répondre à ces questions, nous pouvons utiliser une fonction describeBy().
describeBy() - cette fonction rapporte des statistiques sommaires de base par une variable de regroupement. Utile si la variable de regroupement est une variable expérimentale et que les données doivent être agrégées pour être tracées.Nous allons calculer les statistiques descriptives par variable Gender, afin d’obtenir des résultats séparés pour les hommes et les femmes.
# Statistiques descriptives pour les hommes et les femmes séparément
describeBy(df, df$Gender)
##
## Descriptive statistics by group
## group: female
## vars n mean sd median trimmed mad min max range
## X 1 94 86.18 50.62 85.00 85.95 70.42 3.00 169.00 166.00
## InternetUseMean 2 92 2.22 4.57 0.73 1.17 1.00 0.00 31.19 31.19
## DepressionBefore 3 94 0.78 0.54 0.72 0.71 0.54 0.00 2.53 2.53
## DepressionAfter 4 91 0.63 0.53 0.50 0.55 0.42 0.07 3.00 2.93
## Gender* 5 94 1.00 0.00 1.00 1.00 0.00 1.00 1.00 0.00
## Race 6 94 0.67 0.47 1.00 0.71 0.00 0.00 1.00 1.00
## Age* 7 94 1.30 0.46 1.00 1.25 0.00 1.00 2.00 1.00
## IncomeHousehold 8 92 51.55 22.98 42.50 51.80 18.53 5.00 85.00 80.00
## Household.size 9 93 3.71 1.22 4.00 3.71 1.48 1.00 6.00 5.00
## skew kurtosis se
## X 0.01 -1.33 5.22
## InternetUseMean 4.18 20.47 0.48
## DepressionBefore 0.95 0.49 0.06
## DepressionAfter 1.96 4.88 0.06
## Gender* NaN NaN 0.00
## Race -0.71 -1.51 0.05
## Age* 0.87 -1.26 0.05
## IncomeHousehold 0.18 -1.04 2.40
## Household.size -0.04 -0.30 0.13
## ------------------------------------------------------------
## group: male
## vars n mean sd median trimmed mad min max range
## X 1 75 83.52 47.03 85.00 83.79 56.34 1.0 165.00 164.00
## InternetUseMean 2 75 2.69 5.37 0.90 1.42 1.23 0.0 35.62 35.62
## DepressionBefore 3 73 0.68 0.41 0.67 0.65 0.40 0.0 1.73 1.73
## DepressionAfter 4 73 0.60 0.37 0.57 0.57 0.32 0.0 1.79 1.79
## Gender* 5 75 1.00 0.00 1.00 1.00 0.00 1.0 1.00 0.00
## Race 6 75 0.85 0.36 1.00 0.93 0.00 0.0 1.00 1.00
## Age* 7 75 1.27 0.45 1.00 1.21 0.00 1.0 2.00 1.00
## IncomeHousehold 8 72 58.05 22.25 62.50 59.26 33.36 17.5 85.00 67.50
## Household.size 9 74 3.88 1.15 4.00 3.92 1.48 1.0 6.00 5.00
## skew kurtosis se
## X -0.02 -1.12 5.43
## InternetUseMean 3.86 17.97 0.62
## DepressionBefore 0.57 -0.10 0.05
## DepressionAfter 1.00 1.33 0.04
## Gender* NaN NaN 0.00
## Race -1.96 1.86 0.04
## Age* 1.03 -0.94 0.05
## IncomeHousehold -0.10 -1.31 2.62
## Household.size -0.25 -0.25 0.13
Ou bien, vous pouvez utiliser ce code (l’utilisation du tilde ~ sera également utile dans les semaines suivantes).
describeBy(df ~ Gender)
Comme vous pouvez le constater, RStudio a calculé les statistiques descriptives séparément pour les hommes et les femmes. Cependant, il a regroupé l’ensemble des données, y compris les autres variables nominales, par exemple la race et l’âge. Spécifions les variables continues à l’aide de la fonction c().
# Calcule des statistiques descriptives par sexe pour des variables spécifiques
# uniquement
describeBy(df[,c(2:4, 8:9)], df$Gender)
##
## Descriptive statistics by group
## group: female
## vars n mean sd median trimmed mad min max range
## InternetUseMean 1 92 2.22 4.57 0.73 1.17 1.00 0.00 31.19 31.19
## DepressionBefore 2 94 0.78 0.54 0.72 0.71 0.54 0.00 2.53 2.53
## DepressionAfter 3 91 0.63 0.53 0.50 0.55 0.42 0.07 3.00 2.93
## IncomeHousehold 4 92 51.55 22.98 42.50 51.80 18.53 5.00 85.00 80.00
## Household.size 5 93 3.71 1.22 4.00 3.71 1.48 1.00 6.00 5.00
## skew kurtosis se
## InternetUseMean 4.18 20.47 0.48
## DepressionBefore 0.95 0.49 0.06
## DepressionAfter 1.96 4.88 0.06
## IncomeHousehold 0.18 -1.04 2.40
## Household.size -0.04 -0.30 0.13
## ------------------------------------------------------------
## group: male
## vars n mean sd median trimmed mad min max range
## InternetUseMean 1 75 2.69 5.37 0.90 1.42 1.23 0.0 35.62 35.62
## DepressionBefore 2 73 0.68 0.41 0.67 0.65 0.40 0.0 1.73 1.73
## DepressionAfter 3 73 0.60 0.37 0.57 0.57 0.32 0.0 1.79 1.79
## IncomeHousehold 4 72 58.05 22.25 62.50 59.26 33.36 17.5 85.00 67.50
## Household.size 5 74 3.88 1.15 4.00 3.92 1.48 1.0 6.00 5.00
## skew kurtosis se
## InternetUseMean 3.86 17.97 0.62
## DepressionBefore 0.57 -0.10 0.05
## DepressionAfter 1.00 1.33 0.04
## IncomeHousehold -0.10 -1.31 2.62
## Household.size -0.25 -0.25 0.13
Prenez quelques minutes pour lire les informations générées dans les Tâches 5 et 6, et comparez-les avec les diagrammes de dispersion que nous avons calculés dans la tâche 4. Ces pratiques nous permettent de mieux connaître nos données, et de sentir les tendances initiales que nous pouvons observer dans notre échantillon. Nous pouvons maintenant commencer à calculer des analyses de base.
Calculez les statistiques descriptives des variables suivantes : la race et l’âge. Pouvez-vous observer des différences ou des tendances initiales ?
Sur Moodle, vous trouverez un ensemble de données Regression_data_set.csv utilisé pendant le cours. Ouvrez l’ensemble de données et enregistrez-le dans un objet différent (par exemple, df1), et essayez d’explorer les données comme vous l’avez fait dans les 6 tâches ci-dessus.
Vous pouvez ouvrir les données d’un dépôt en ligne, en spécifiant le lien. N’hésitez pas à copier et coller la syntaxe suivante, mais veillez à adapter le nom de l’objet. À part quelques détails mineurs, la procédure est la même : vous spécifiez l’emplacement du fichier (en ligne) et l’enregistrez sous un nom d’objet spécifique).
data <- read.csv2(dec='.', sep=',', file=
'https://raw.githubusercontent.com/matthewvowels1/statistics_III_datasets/main/multivariate.csv')
head(data)
# data(“nom des données”)
# par exemple
data(ToothGrowth)
data(USArrests)
head(USArrests)
# Veillez à être cohérent lorsque vous faites référence aux noms des ensembles de
# données. Dans le cas des données qui font partie de R, vous devez vous référer à leur
# nom complet, par exemple, `str(ToothGrowth)`.
# Exercez-vous davantage en utilisant les ensembles de données ci-dessus. Pour obtenir
# plus d'informations sur les variables et la structure des données (en anglais),
# exécutez la fonction help(nom des données), et une fenêtre séparée s'ouvrira avec des
# instructions et des exemples de fonctions.
help(USArrests)