R pour les sociologues : une introduction au fameux logiciel libre d’analyse des données
Pendant longtemps, les sociologues désireux de mettre en oeuvre des outils quantitatifs d’analyse des données avaient le choix entre des outils simples et conviviaux (comme Sphinx ou Modalisa), mais peu puissants, et des outils puissants (comme SAS, SPSS, etc.), mais complexes à mettre en oeuvre, et… payants. Et puis est arrivé… R ! Son nom est bizarre, il appartient plutôt à la seconde catégorie, mais… il est gratuit ! R est en effet issu du monde des logiciels libres, et c’est une très bonne raison de l’adopter. L’autre très bonne raison, c’est sa puissance impressionnante, et son évolutivité : vous verrez, à l’usage, que R n’a rien à envier à SAS ou SPSS. QUANTI a donc choisi d’en faciliter l’accès à toutes celles et tous ceux qui veulent utiliser des méthodes quantitatives en sciences sociales, en publiant ici le “mode d’emploi” de R écrit par Julien Barnier à destination des sociologues.
Présentation de R
Remarque préliminaire
Cet article est une introduction au logiciel R, à la manière de ce qui a déjà été fait dans QUANTI pour Excel ou Trideux, dont le contenu est pour une large part tiré du début du document R pour les sociologues, disponible au format PDF à l’adresse suivante :
R est un langage orienté vers le traitement de données et l’analyse statistique dérivé du langage S. Il est développé depuis plus de 10 ans par une communauté d’utilisateurs de différents pays. C’est un logiciel libre, publié sous licence GNU GPL.
L’utilisation de R présente plusieurs avantages :
- c’est un logiciel multiplateforme, qui fonctionne aussi bien sur des systèmes Linux, Mac OS X ou Windows ;
- c’est un logiciel libre, développé par ses utilisateurs et modifiable par tout un chacun ;
- c’est un logiciel gratuit ;
- c’est un logiciel très puissant, dont les fonctionnalités de base peuvent être étendues à l’aide d’extensions ;
- c’est un logiciel dont le développement est très actif et dont la communauté d’utilisateurs ne cesse de s’agrandir ;
- c’est un logiciel avec d’excellentes capacités graphiques.
Comme rien n’est parfait, on peut également trouver quelques inconvénients :
- le logiciel, la documentation de référence et les principales ressources sont en anglais. Il est toutefois parfaitement possible d’utiliser R sans spécialement maîtriser cette langue ;
- il n’existe pas encore d’interface graphique pour R équivalente à celle d’autres logiciels comme SPSS ou Modalisa. R fonctionne à l’aide de scripts (des petits programmes) édités et exécutés au fur et à mesure de l’analyse, et se rapprocherait davantage de SAS dans son utilisation (mais avec une syntaxe et une philosophie très différentes).
Nous présenterons ici l’installation et la prise en main de R, ainsi qu’un petit travail sur des données issues de l’enquête Histoire de vie. De nombreux détails ont cependant été omis, pour plus d’informations et pour aller plus loin on pourra donc se reporter au document R pour les sociologues.
On installe…
R étant un logiciel libre et gratuit, il est librement téléchargeable et installable sur tout ordinateur.
Si vous êtes sous Windows, il vous suffit de diriger votre navigateur sur la page suivante :
http://cran.rstudio.com/bin/windows/base/release.htm
Et vous vous verrez proposer le téléchargement d’un fichier nommé R-3.x.y-win32.exe
(ou quelque chose d’approchant en fonction du numéro de la dernière version disponible). Enregistrez ce fichier quelque part sur votre disque dur et exécutez-le. L’installation se fait de manière tout à fait classique, et vous pouvez accepter les options par défaut sans problème.
L’installation est tout aussi facile sous Mac OS X, il vous suffit de télécharger et d’installer le fichier dmg
correspondant à la version la plus récente que vous trouverez sur la page suivante :
http://cran.rstudio.com/bin/macosx/
Enfin, sous Linux, il y a de bonnes chances que R soit déjà intégré à votre distribution favorite.
On découvre…
Lancement
Une fois R installé, vous devriez avoir une (relativement) jolie icône sur votre bureau vous permettant d’exécuter l’application. Que ce soit sous Mac OS X ou sous Windows, vous devriez alors voir apparaître une sorte d’interface graphique plus ou moins rudimentaire (celle sous Mac l’est un peu moins), et en particulier une fenêtre affichant le message de bienvenue suivant :
R version 2.8.0 (2008-10-20) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R est un logiciel libre livré sans AUCUNE GARANTIE. Vous pouvez le redistribuer sous certaines conditions. Tapez 'license()' ou 'licence()' pour plus de détails. R est un projet collaboratif avec de nombreux contributeurs. Tapez 'contributors()' pour plus d'information et 'citation()' pour la façon de le citer dans les publications. Tapez 'demo()' pour des démonstrations, 'help()' pour l'aide en ligne ou 'help.start()' pour obtenir l'aide au format HTML. Tapez 'q()' pour quitter R. >
Et vous devriez voir clignoter votre curseur juste après le symbole >
de la dernière ligne, vous indiquant par là même que R est en attente d’instructions de votre part. On appelle cette ligne l’invite de commandes de R, et la fenêtre qui la contient la console.
Essayons tout de suite de saisir une commande :
> 2 + 3
Et le résultat ne devrait pas se faire attendre :
[1] 5
Magnifique ! Nous avons désormais la preuve que R sait faire les additions à un chiffre. Il peut évidemment faire un peu plus…
Base du langage
Dans ce qui suit, nous indiquerons les commandes saisies dans une police à chasse fixe précédée du symbole >
, et les résultats éventuels juste après, dans la même police.
Le langage R se base sur deux éléments principaux : les objets, qui servent à stocker des données plus ou moins complexes, et les fonctions, qui permettent d’effectuer des actions sur ces objets.
Créons tout de suite notre premier objet en saisissant la commande suivante :
> x <- 2
En langage courant, nous avons dit à R la chose suivante : “crée un objet nommé x, et place à l’intérieur le nombre 2”. On peut désormais effectuer des opérations sur cet objet :
> x - 4 [1] -2
On peut aussi afficher son contenu en saisissant uniquement son nom :
> x [1] 2
Imaginons désormais que nous avons demandé à 10 personnes leur taille en centimètres. Ces 10 mesures peuvent être regroupées pour être traitées ensemble : dans le langage courant on dira qu’on a construit une “variable taille”. Sous R, cette variable prend la forme d’un vecteur que l’on peut construire de la manière suivante :
> tailles <- c(167, 192, 173, 174, 172, 167, 171, 185, 163, 170)
Ici, c
est appelée une fonction. Elle prend en arguments, entre parenthèses, une série de valeurs, et retourne sous forme de résultat un vecteur combinant ces valeurs. Nous avons stocké ce vecteur dans un objet nommé tailles
que nous pouvons afficher comme tout autre objet :
> tailles [1] 167 192 173 174 172 167 171 185 163 170
Tout le travail dans R consistera donc à créer, manipuler des objets et leur appliquer des fonctions. Par exemple, si on souhaite calculer la taille moyenne de notre échantillon, on peut appliquer la fonction mean
à notre vecteur tailles
de la manière suivante :
> mean(tailles) [1] 173.4
On se prépare…
Installation des extensions
Munis de ces principes de base, nous allons essayer d’analyser de vraies données pour avoir un aperçu de l’utilisation de R dans des conditions réelles.
R est un langage très puissant, mais conçu par des statisticiens et informaticiens pour des statisticiens et informaticiens. On est donc parfois surpris, au premier abord, de la même manière dont certaines choses qui devraient être très simples à effectuer paraissent en définitive très compliquées.
Heureusement, la grande force de R, tirée de son caractère libre et ouvert et de son développement communautaire, est qu’il est très facile de créer ses propres fonctions. Celles-ci sont regroupées sous forme d’extensions et diffusées via l’Internet sur un réseau baptise Comprehensive R Archive Network. Il existe à la date de ce billet près de 8000 extensions permettant d’ajouter au cœur de R (ce que vous venez d’installer) tout un tas de fonctionnalités supplémentaires dans un grand nombre de domaines et de disciplines.
Pour faciliter un peu notre travail, nous allons donc installer une extension baptisée questionr
et qui fournit quelques fonctions permettant de simplifier certaines tâches courantes.
Pour installer cette extension, nous avons besoin d’une connexion active à l’Internet. Il suffit alors d’utiliser la fonction install.packages
, directement dans la ligne de commande :
> install.packages("questionr")
Cette commande va avoir pour conséquence d’installer questionr
ainsi que les 4autres extensions nécessaires à son fonctionnement. Une fenêtre devrait normalement s’afficher vous demandant de sélectionner un site miroir pour le téléchargement des fichiers. Choisissez un site proche géographiquement.
À noter que cette opération n’a besoin d’être exécutée qu’une seule fois : les extensions sont désormais installées sur votre disque dur et prêtes à être utilisées par R.
Création du script
Jusqu’à présent nous avons saisies nos commandes R directement dans la console. Cette manière de faire convient pour des opérations ponctuelles, mais lorsqu’on veut travailler sur de vraies données on regroupe les commandes dans un fichier dénommé script.
Nous allons donc commencer par créer un répertoire sur notre disque dur dans lequel nous allons enregistrer notre script ainsi que nos fichiers de données. Une fois ce répertoire créé, choisissez dans R le menu Fichier puis Nouveau script (sous Windows, sous Mac OS X l’intitulé du menu peut être différent).
Une nouvelle fenêtre devrait apparaître. Pour comprendre comment cela fonctionne, saisissez simplement 2+3
sur la première ligne du fichier, puis appuyez sur les touches Control
et R
(sous Mac OS X, on utilise Pomme
et Entrée
). Dans la fenêtre de la console, vous devriez alors voir un joli 5
apparaître.
Nous allons donc procéder de cette manière : les commandes seront saisies dans notre script et envoyées à R au fur et à mesure (on peut exécuter plusieurs lignes d’un coup en les sélectionnant). Ceci permet de revenir facilement en arrière pour corriger des commandes ou en rajouter, et d’enregistrer le script pour pouvoir retrouver nos commandes ultérieurement.
Enfin, dernière précision, nous avons la possibilité de rajouter des commentaires dans notre script (des lignes qui seront ignorées par R et qui ne seront pas exécutées) en les faisant débuter par un ou plusieurs caractères #
. Ceci permet de documenter son travail au fur et à mesure et de ne pas être perdu lorsqu’on ouvre à nouveau son script quelques semaines plus tard.
En-tête du script
Nous allons tout de suite saisir les premières lignes de notre script. En général on commence par charger en mémoire les extensions, préalablement installées, dont nous allons avoir besoin par la suite. Ceci se fait avec la fonction library
.
Pour être tout à fait clair, install.packages
installe une extension depuis l’Internet sur le disque dur de votre ordinateur. library
, elle, charge une extension présente sur le disque en mémoire et rend son contenu disponible pour R. Il est donc nécessaire de l’utiliser à chaque début de session.
Dans note cas, nous allons avoir besoin de l’extension questionr
, préalablement installée, et de l’extension foreign
, installée en même temps que R, et qui permet d’importer et d’exporter des données de différents formats. Les premières lignes de notre script seront donc :
library(foreign) library(questionr)
Vous pouvez tout de suite exécuter ces lignes à l’aide des raccourcis clavier indiqués précédemment et vérifier qu’elles ne génèrent pas d’erreurs. Dans le cas contraire, c’est qu’elles n’ont pas été correctement installées.
Enfin, dernière étape avant de commencer, nous devons indiquer à R dans quel répertoire il doit travailler. Ceci nous permettra d’accéder plus facilement aux fichiers de données que nous placerons au même endroit que notre script.
Pour cela, exécutez la commande suivante :
> selectwd()
Vous devriez alors voir apparaître une boîte de dialogue de sélection de répertoire. Sélectionnez celui où se trouve votre script et cliquez sur Ok. Des lignes ressemblant au texte suivant devraient s’afficher dans la console :
Nouveau repertoire de travail: /home/julien/r Pour automatiser ce changement dans un script, utilisez : setwd("/home/julien/r")
Sous Windows, le répertoire ressemblera plutôt à quelque chose comme C:/Documents and Settings/Administrateur/Mes Documents/...
). Copiez alors la ligne commençant par setwd
à la fin de votre script.
Récapitulons
Dans ce qui précède, nous avons :
- installé R
- installé des extensions
- créé un script
- saisi l’en-tête du script qui charge les extensions nécessaires et
fixe le répertoire de travail.
Avec quelques commentaires en plus, votre script R devrait ressembler à quelque chose du genre :
## Chargement des extensions library(foreign) library(questionr) ## Répertoire de travail setwd("C:/Documents and Settings/Administrateur/Mes Documents/")
La mise en place a été longue, mais elle est désormais terminée. Et rappelez-vous que vous n’aurez pas à effectuer à nouveau toutes ces manipulations la prochaine fois que vous voudrez travailler sur votre script…
On se lance…
Cette fois, nous avons (enfin) tous les éléments à notre disposition pour vraiment commencer à travailler.
Dans ce qui suit nous allons, dans un fulgurant élan d’originalité, travailler sur un extrait des données de l’enquête Histoire de vie réalisé par l’INSEE en 2003.
Chargement des données
Les données sont disponibles sous la forme d’un fichier zip
téléchargeable depuis le site de l’INSEE à l’adresse suivante :
http://telechargement.insee.fr/fichiersdetail/HDV03/dbase/HDV03_hdv_dbase.zip
La possibilité la plus simple pour importer les données est de télécharger le fichier zip, de l’extraire quelque part sur votre disque dur, et de copier le fichier nommé hdv4.dbf
dans le même répertoire que votre script R.
L’import des données se fait alors très simplement à l’aide de la fonction read.dbf
, qui permet de lire des fichiers au format dBase de la manière suivante :
> d <- read.dbf("hdv4.dbf")
Qu’avons nous fait là ? Nous avons chargé l’intégralité des données contenues dans le fichier dBase et l’avons placé dans un objet nommé d
et qui contient donc à lui seul tout notre tableau de données !
Description des données
Nous pouvons afficher les dimensions de notre tableau de données à l’aide la fonction dim
:
> dim(d) [1] 8403 203
Ceci nous indique que notre tableau a 8403 lignes (individus) et 203 colonnes (variables). Nous pouvons afficher la liste des variables à l’aide des fonctions names
(qui indique juste les noms) ou str
(qui donne des informations supplémentaires) :
> names(d) [1] "IDENT" "POIDSF" "POIDLOG" "LPRATQ1" "LPRATQ2" [6] "LPRATQ3" "LPRATQ4" "LPRATQ5" "LPRATQ6" "LQTRAN" [11] "LRASP" "LSPOR1" "LSPOR2" "LSPOR3" "LSPOR4" [16] "LSPOR5" "LSPOR6" "LSPOR7" "LSPOR8" "LT1AMI1" (...)
> str(d) 'data.frame': 8403 obs. of 203 variables: $ IDENT : Factor w/ 8403 levels "11000210","11000410",..: 1 2 3 4 5 6 7 8 9 10 ... $ POIDSF : num 4767 12382 14685 9516 3926 ... $ POIDLOG : num 0.889 2.31 2.74 1.776 0.733 ... $ LPRATQ1 : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 2 2 ... $ LPRATQ2 : Factor w/ 2 levels "0","1": 1 1 1 2 1 1 1 1 1 1 ... $ LPRATQ3 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ... (...)
Accès aux variables
Pour accéder à une variable en particulier, on utilise le symbole $
de la manière suivante :
> d$NBPERS [1] 3 5 3 2 6 4 5 1 1 1 2 1 2 1 1 2 2 5 2 1 4 1 1 [24] 5 1 1 1 3 1 3 2 4 1 4 2 2 4 2 1 4 1 2 1 1 1 2 [47] 1 1 4 3 2 3 1 1 1 2 1 2 4 1 1 2 1 2 2 2 2 1 2 (...)
Par défaut, lorsqu’on lui fournit le nom d’un objet, R affiche son contenu d’une manière plus ou moins lisible. Le résultat de la commande d$NBPERS
est donc la liste des valeurs de la variable NBPERS
de notre tableau de données, c’est-à-dire le nombre de personnes du ménage. On peut appliquer les fonctions habituelles à cette variable, par exemple pour calculer sa moyenne ou sa variance :
> mean(d$NBPERS) [1] 2.715578
> var(d$NBPERS) [1] 2.049063
Tris à plat
Nous allons nous intéresser à deux variables en particulier :
QUALIFE
qui indique la position professionnelle de l’emploi (ou du dernier emploi) de l’enquêtéVCLSO
qui indique le sentiment d’appartenir à une classe sociale
Nous pouvons immédiatement faire le tri à plat d’une de ces deux variables en utilisant la fonction FREQ
:
> freq(d$VCLSO)
n %
1 4014 47.8
2 4257 50.7
9 132 1.6
NA 0 0.0
Et nous nous rendons immédiatement compte que l’INSEE ne fournit pas ses fichiers de données avec des étiquettes de modalités en clair, mais avec les codes numériques des réponses. En utilisant la documentation associée au fichier et la fonction levels
, nous allons pouvoir remédier à ce problème :
> levels(d$QUALIFE) <- c("Ouvrier spécialisé", "Ouvrier qualifié", "Technicien", "Professions intermédiaires", "Cadre", "Employé", "Autre") > levels(d$VCLSO) <- c("Oui", "Non", "Ne sait pas")
Ce qui permet d’obtenir des tris à plat plus lisibles :
> freq(d$QUALIFE)
n %
Ouvrier spécialisé 792 9.4
Ouvrier qualifié 1161 13.8
Technicien 401 4.8
Professions intermédiaires 735 8.7
Cadre 1052 12.5
Employé 2552 30.4
Autre 212 2.5
NA 1498 17.8
> freq(d$VCLSO)
n %
Oui 4014 47.8
Non 4257 50.7
Ne sait pas 132 1.6
NA 0 0.0
On notera que le code NA
correspond aux valeurs manquantes.
On peut donc dire que le sentiment d’appartenance ou non à une classe sociale est relativement partagé au sein de la population.
Tableau croisé
Ce sentiment varie-t-il en fonction de la catégorie socio-professionnelle ? Pour le savoir, nous allons calculer le tableau croisé des deux variables à l’aide de la fonction table
, à laquelle on fournit les noms des deux variables qui nous intéressent :
> table(d$QUALIFE, d$VCLSO) Oui Non Ne sait pas Ouvrier spécialisé 301 469 22 Ouvrier qualifié 577 560 24 Technicien 215 182 4 Professions intermédiaires 384 345 6 Cadre 603 441 8 Employé 1224 1295 33 Autre 90 118 4
Nous obtenons le tableau des effectifs, qui est certes intéressant mais difficilement lisible. Nous allons donc stocker ce tableau dans un objet et appliquer à celui-ci la fonction lprop
, qui va nous renvoyer les pourcentages-lignes du tableau croisé :
> tab <- table(d$QUALIFE, d$VCLSO)
> lprop(tab)
Oui Non Ne sait pas Total
Ouvrier spécialisé 38.0 59.2 2.8 100.0
Ouvrier qualifié 49.7 48.2 2.1 100.0
Technicien 53.6 45.4 1.0 100.0
Professions intermédiaires 52.2 46.9 0.8 100.0
Cadre 57.3 41.9 0.8 100.0
Employé 48.0 50.7 1.3 100.0
Autre 42.5 55.7 1.9 100.0
Ensemble 49.2 49.4 1.5 100.0
À première vue, on note que les ouvriers spécialisés ont tendance à avoir moins souvent le sentiment d’appartenir à une classe sociale, contrairement aux cadres notamment. Mais ce résultat est-il valable statistiquement ?
Test du χ² et résidus
Pour savoir si la répartition des effectifs dans notre tableau est suffisante pour rejeter l’hypothèse d’indépendance des lignes et des colonnes, nous pouvons effectuer un classique test du χ² à l’aide de la fonction chisq.test
appliquée à notre tableau croisé d’effectifs :
> chisq.test(tab) Pearson's Chi-squared test data: tab X-squared = 91.8815, df = 12, p-value = 2.132e-14 Warning message: In chisq.test(tab) : l'approximation du Chi-2 est peut-être incorrecte
Le message indiquant que l’approximation du Chi-2 est peut-être incorrecte peut être ignoré ici, car il est seulement généré par le fait que les effectifs théoriques sont inférieurs à 5 pour une seule des cases de notre tableau.
Le χ² de notre tableau vaut donc 91.8815 pour un nombre de degrés de liberté s’élevant à 12, soit un p extrêmement faible qui permet de rejeter l’hypothèse d’indépendance sans aucune hésitation.
Pour aller un peu plus loin dans l’analyse de notre tableau croisé, nous pouvons utiliser les résidus du test du χ². On les calcule à l’aide de la fonctions residus
:
> residus(tab) Oui Non Ne sait pas Ouvrier spécialisé -4.47 3.94 3.06 Ouvrier qualifié 0.27 -0.56 1.70 Technicien 1.27 -1.14 -0.77 Professions intermédiaires 1.20 -0.94 -1.45 Cadre 3.78 -3.45 -1.88 Employé -0.86 0.98 -0.71 Autre -1.39 1.30 0.51
L’interprétation des résidus est la suivante : si la valeur du résidu dans une case du tableau est positive, alors il y’a sur représentation dans cette case par rapport à l’hypothèse d’indépendance. Si elle est négative, alors il y a sous-représentation. De plus, on considère en général que seule les valeurs supérieures à 2 ou inférieures à -2 sont statistiquement significatives.
Que peut-on en conclure ? Qu’il y a une sur-représentation des cadres ayant le sentiment d’appartenir à une classe sociale, et au contraire une sur-représentation des ouvriers spécialisés qui n’ont pas ce sentiment ou qui ne savent pas. Pour les autres catégories, les résidus ne nous permettent pas de conclure à un effet statistiquement significatif. Mais les pourcentages-lignes permettent quand même de faire l’hypothèse suivante : plus on “monte” dans la hiérarchie des catégories socio-professionnelles, plus le sentiment d’appartenance à une classe sociale est fort.
Petits graphiques
Nous terminerons quand même cette petite présentation par deux graphiques, sans entrer dans le détail des commandes utilisées mais juste pour donner un (petit) aperçu des (vastes) possibilités de R dans ce domaine.
Si vous souhaitez représenter graphiquement le tri à plat d’une de vos variables, vous pouvez utiliser la fonction dotchart
de la manière suivante :
> dotchart(sort(table(d$QUALIFE)), main="Tri à plat de la catégorie socio-professionnelle")
Ce qui devrait vous donner le résultat suivant :
Un autre graphique très utile est la représentation en mosaïque d’un tableau croisé. On peut ainsi avoir une vue synthétique du tableau étudié précédemment avec la commande suivante :
> mosaicplot(tab, dir=c("h","v"), shade=TRUE, las=2, main="Sentiment d'appartenance à une classe sociale selon la PCS")
Dans ce graphique, la surface de chaque case est proportionnelle aux effectifs, la largeur dépend du pourcentage ligne, et la couleur du résidu.
Export des résultats
La présentation des tableaux sous R permet de visualiser rapidement les résultats, mais n’est pas forcément l’idéal pour un rapport ou une publication… La fonction copie
permet d’exporter un tableau pour l’importer dans un traitement de texte. Supposons que nous souhaitons exporter le tableau des pourcentages lignes de notre tri croisé, préalablement stocké dans un objet nommé tab.export
:
> tab <- table(d$QUALIFE, d$VCLSO) > tab.export <- lprop(tab)
Si vous disposez de Microsoft Office, vous pouvez appliquer directement la fonction copie
à votre objet tab.export
:
> copie(tab.export)
Rendez-vous ensuite dans Excel et faites un Coller. Vous devriez voir apparaître le contenu de votre tableau, que vous pouvez ensuite copier-coller dans Word.
Une autre méthode, qui fonctionne à la fois pour Word et pour OpenOffice, est d’indiquer l’argument file=TRUE
à la fonction copie
:
> copie(tab.export, file=TRUE)
Ensuite, dans votre traitement de texte favori, sélectionnez le menu Insertion, puis Fichier, et choisissez le fichier nommé temp.html
qui devrait se trouver dans le même répertoire que votre script R.
En ce qui concerne l’export des graphiques, c’est encore plus simple. Sous windows par exemple, il vous suffit de faire un clic droit sur le graphique pour faire apparaître un menu contextuel vous permettant de placer l’image dans le presse-papier, dans un format vectoriel ou bitmap. Vous n’avez plus ensuite qu’à coller l’image dans votre traitement de texte…
Ouf !
Vous êtes arrivés au bout de cette introduction, félicitations ! Nous espérons qu’elle ne vous a pas totalement découragé de vous pencher sur R, voire même qu’elle vous aura donné envie d’aller plus loin. R n’est pas un logiciel facile d’accès, il nécessite un temps d’apprentissage certain, mais nous pensons que le jeu en vaut réellement la chandelle compte tenu des possibilités offertes ensuite, autant en termes de traitement de données que d’analyses statistiques.
Tout ceci fera sans doute l’objet de prochains billets ici-même, en attendant vous pourrez trouver des détails et des explications complémentaires, de la pondération des données à la cartographie, dans le document R pour les sociologues déjà cité en introduction :
http://alea.fr.eu.org/pages/intro-R
Vous y trouverez également une liste de ressources et de moyens d’obtenir de l’aide. Il ne faut surtout pas hésiter à solliciter ces derniers !
Julien Barnier
OpenEdition vous propose de citer ce billet de la manière suivante :
Julien Barnier (26 janvier 2009). R pour les sociologues : une introduction au fameux logiciel libre d’analyse des données. QUANTI / Sciences sociales. Consulté le 11 décembre 2024 à l’adresse https://doi.org/10.58079/t49w
Merci beaucoup pour ce travail. Je connaissais R sous Linux, mais je n’avais jamais osé m’y aventurer. Avec cette introduction, ça devient (presque) facile. Pour les linuxiens, voici un petit complément utile.
La page 15 de l’introduction donne des indications sur l’engistrement et l’exécution des scripts sous Windows. Sous Linux, une bonne solution est d’associer R et l’éditeur Emacs. J”utilise la version GTK de emacs. Sous debian :
#apt-get install emacs22-GTK
Il faut veiller à ce que l’extension ESS (Emacs Speaks Statistics) d’emacs soit installée. Sous debian :
# apt-get install ess
(à adapter pour ubuntu et consorts).
Créer un répertoire qui contiendra les scripts.
$ mkdir MonRepertoireR
Dans une console, démarrer emacs
$ emacs &
Charger l’extension ESS
M-x R
Là, emacs demande de lui indiquer le répertoire de travail R
ESS [S(R): R] starting data directory? ~/
On complète avec le nom du répertoire
ESS [S(R): R] starting data directory? ~/MonRepertoireR
C’est fait, on est sous R dans emacs :
R version 2.7.1 (2008-06-23)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
R est un logiciel libre livré sans AUCUNE GARANTIE.
Vous pouvez le redistribuer sous certaines conditions.
Tapez ‘license()’ ou ‘licence()’ pour plus de détails.
R est un projet collaboratif avec de nombreux contributeurs.
Tapez ‘contributors()’ pour plus d’information et
‘citation()’ pour la façon de le citer dans les publications.
Tapez ‘demo()’ pour des démonstrations, ‘help()’ pour l’aide
en ligne ou ‘help.start()’ pour obtenir l’aide au format HTML.
Tapez ‘q()’ pour quitter R.
> options(STERM=’iESS’, editor=’emacsclient’)
>
Créer ensuite un fichier avec C-x C-f, fichier qui contiendra le script, et que l’on appelle par exemple script1.R
(le répertoire par défaut pour ce nouveau fichier est ~/MonRepertoireR précédemment indiqué).
Un bouton en haut à droite permet de basculer vers le buffet ESS (en fait la fenêtre d’emacs se divise en deux : en haut, on a le fichier qui contient le script que l’on peut éditer, en bas, on a R).
Pour charger le fichier script dans R on utilise la commande
>source (“script1.R”)
Voilà. On peut poursuivre l’apprentissage.
Depuis la version 0.2-8, l’extension
rgrs
est diffusée directement via le CRAN (Comprehensive R Archive Network), ce qui rend son installation plus facile en ne nécessitant qu’une seule commande. Je viens donc de mettre à jour le texte du billet.Bonjour et merci pour cette introduction à R,
Je découvre ce logiciel et j’en apprécie la souplesse. Le blog n’a pas vocation à devenir une liste de discussion R mais peut-être pourriez-vous me renseigner sur le poinbt suivant.
J’ai chargé des données provenant de 3603 Q mais R me dit que j’atteinds le nombre max de lignes et ne rentre que 2702 Q. Il est écrit : [getOption(“max.print”) est atteint — 901 lignes omises ]]. Une âme charitable pouorrat-elle m’indiquer où trouver ces “options” ?
Bien à vous, merci encore,
Pascal Vallet
Bonjour et merci d’avoir posé cette question.
Nous découvrons également le logiciel R et nous n’en apprécions guère les fonctionnalités (comparé à MODALISA). Le blog n’a pas vocation à devenir un lieu de controverse sur le logiciel R, mais peut-être pourriez-vous nous aider sur l’utilisation d’un tel logiciel?
Nous espérons également que vous pourrez venir en aide à vos anciennes élèves…
Bien à vous, merci encore,
Anciennes étudiantes de Licence à Jean Monnet actuellement étudiantes en Master à Lyon.
Moi je n’ai pas la réponse comme ça, mais ça vaut certainement le coup de poser la question sur la toute nouvelle liste de discussion francophone “R pour sociologues”… Voir l’article à ce sujet ici :
http://quanti.hypotheses.org/34
C’est formidable cette introduction. Je suis heureux de savoir que des sociologues s’intéressent à cet outil qui semble être l’apanage des biologistes staticiens ou écologistes. Je suis un débutant en R. Je le trouve robuste!
Bonjour,
Merci pour cette magnifique introduction aux statistiques sociales avec R. Très souvent, les exemples montrent plutôt une utilisation très orientée statistique-mathématique. J’ai plusieurs fois installé R et je l’ai plusieurs fois désintallé :-) pour la simple et unique raison que je n’arrivais pas à mettre les labels des variables et je ne savais pas comment gérer les fichiers hiérarchiques (enquêtes ménages pour lesquels on a des données sur les ménages et les membres du ménage à la fois). SPSS non plus ne gère pas les fichiers hiérarchiques (CSPro le fait, EpiInfo aussi je crois). Il utilise des fichiers rectangulaires. Un autre reproche que je fais à R est que ces tableaux sont affreux : pas de bordure pour les tableaux. Pour la suite de cette introduction, je serai vraiment ravi qu’on parle des fichiers hiérarchiques et des beaux tableaux publiables dans un rapport d’enquête.
Merci.
Beau travail et à bientôt.
Bonjour,
Et merci pour votre commentaire !
Concernant la gestion de fichiers hiérarchiques, vous trouverez un début de réponse dans le document \R pour les sociologues\ dont le lien est donné à plusieurs reprises dans ce billet. Il y a en effet une section sur les fusions de table qui peut vous aider à démarrer (mais il faudrait aussi parler de la fonction aggregate et ses dérivés.
Pour les tableaux, de même, vous pouvez vous reporter à la partie sur l’export des résultats qui indique plusieurs manières d’exporter des tableaux sous OpenOffice ou Word.
Et si vous avez des questions, n’hésitez pas à rejoindre la liste r-soc…
Cordialement,
Julien
Bonjour,
A la page 127 du document “R pour les Sociologues”, il me semble que les commandes install.packages{“ade4”, dep=TRUE} et install.packages(c(“rgrs”),dep=TRUE) ne fonctionnent pas. J’ai dû utiliser les commandes install.packages (“ade4”, dep=TRUE) et install.packages (“rgrs”,dep=TRUE) pour télécharger les packages cités.
Par ailleurs j’ai constaté que la commande edit() ne fonctionne pas normalement sous linux. Quelle commande faut-il passer sous linux pour afficher la table d’édition? Comment afficher l’interface graphique Rcmdr sous windows?
Cordialement,
Wahabou
Bonjour,
Pour l’installation des extensions, vous avez raison, il y avait des coquilles dans le document : pour l’installation d’ade4 il fallait effectivement remplacer les accolades par des parenthèses, et pour rgrs le c() n’était plus nécessaire. Je vous remercie de me l’avoir signalé et je viens de corriger dans la dernière version du document.
Pour la commande edit(), il se peut qu’elle n’ait pas le comportement attendu sur certaines plateformes. En particulier, il arrive qu’elle ouvre un data frame en édition non pas avec une interface de type tableur, mais sous forme de fichier texte. Vous pouvez éventuellement remplacer edit() par data.entry() et voir si cela change quelque chose.
Pour Rcmdr sous Windows, normalement il vous suffit d’installer l’extension et de la charger. Voir par exemple le tutoriel suivant :
http://www.quanti.ihmc.ens.fr/document.php?id=78#tocto4
Enfin, si vous avez d’autres questions sur R, n’hésitez pas à rejoindre la liste de discussion R-soc :
http://quanti.hypotheses.org/344/
Cordialement,
Julien
Pour la documentation, je recommande aussi le wikibook R programming (http://en.wikibooks.org/wiki/R_Programming), projet d’un manuel libre (contenu ouvert) pour le logiciel R.
Bonjour et merci pour toutes ces infos sur R. Pour les linuxiens je conseille également Rkward pour la création et l’édition des scripts.
Impressionnant ! Formidable travail.
Sur Ubuntu Linux, entrer les commandes suivantes pour utiliser R :
$ sudo aptitude install r-base
$ R
Vous êtes dans le “logiciel R”.
Voilà c’est installé. Et après on ose dire que Linux est plus compliqué que Windows ou Mac OS…
Avec Debian, le paquet a le même nom, mais utilisez Debian Sid, la stable a 2,5 ans actuellement.
Bonjour,
Pas besoin de passer en debian unstable, on peut avoir les dernières versions de R pour les distributions stable ou testing en ajoutant le dépôt correspondant dans son /etc/apt/sources.list, par exemple :
deb http://cran.cict.fr/bin/linux/debian lenny-cran/
Pour plus d’informations :
http://cran.r-project.org/bin/linux/debian/
Julien
Bonjour,
Je suis une étudiante en magister, et je prépare un mémoire sur l’impact des réseaux sociaux dans la recherche d’information. Dans mon travail, j’ai à analyser les données de mon réseau social pondéré avec trois métriques, qui sont betweenness, closeness et pagerank.
Pouvez vous m’aider et m’orienter pour avoir les scripts de ces mesures ainsi que la façon d’importer un fichier de liens avec des poids.
Merci.
Bonjour,
Pour les formulation mathématiques des mesures de centralité, regardez du côté des travaux de Linton Freeman sur ces questions à la fin des années 1970, ou dans le livre d’Alain Degenne et Michel Forsé (“Les réseaux sociaux”, chez Armand Colin), ou dans la “bible” en anglais de Wasserman et Faust.
Pour les liens valués, cela consiste en général assez simplement à rajouter une troisième colonne dans votre fichier. Les deux premières contiennent les identifiants des deux sommets reliés, et la troisième sa “valence”…
Bonjour,
Merci pour cet excellent travail. Une petite mise à jour il faut faire install questionr et non rgrs : “Rgrs devient questionr” : http://www.r-bloggers.com/lang/uncategorized/1329
Bien cordialement,
Bonjour,
Merci ! Effectivement, le billet a un peu vieilli depuis sa publication en 2009…
Je viens de corriger quelques erreurs (dont effectivement le nom de l’extension), j’espère ne pas en avoir trop oublié.
Julien
Dédidément ! Vous avez raison, toutes les coquilles n’avaient pas été corrigées… Il faut lire : 1/0,81 = 1,22 fois plus de chances… Je corrige toute de suite, merci !
Il en reste une : tu appeles “library(rgrs)” dans la partie “En-tête du script”.
Grrr.
C’est corrigé, j’espère que cette fois c’est bon…
Merci en tous cas pour la relecture attentive.
Bonjour,
je vous remercie pour ce billet et tous vos documents qui m’ont permis de mieux comprendre les résidus (et R quand j’étais complètement novice).
Je voudrais faire un graphique en mosaïque (mosaicplot) pour expliquer mon khi2, mais je n’arrive pas à m’y retrouver dans les réglages de mises en forme, je ne trouve que des exemples avec les réglages par défaut.
Celui qui vous proposez (en p. 29 de “Tout ce que vous n’avez jamais voulu savoir sur le χ2…”) me semble parfait : pourcentage dans les cadres, échelle et son titre plus propre, et indication de la p.value dessous). Pourriez-vous m’orienter sur les arguments à utiliser pour arriver à ce rendu s’il-vous-plait ? Ou m’orienter vers un blog ou forum que j’aurais loupé où la question est débattue.
Cordialement,
Bonjour,
Le code pour générer cette figure date un peu, mais a priori il utilise le package “vcd” et sa fonction “mosaic”. En gros il ressemble à quelque chose comme ça :
tab <- structable(~ csego6 + freqfam, data = hdv)
tab_labels <- round(tab/apply(tab,1,sum)*100,1)
mosaic(tab, split_vertical=TRUE, shade=TRUE, gp_labels=gpar(fontsize=8), gp_varnames=gpar(fontsize=10,fontface="bold"), set_varnames=list(freqfam="Variable 1",csego6="Variable 2"), legend_args=list(fontsize=9), margins=c(4,3,0,8), rot_labels=c(90,90,0,0), just_labels=c("left","right"), offset_varnames=c(5,0,0,4), pop = FALSE)
labeling_cells(text = as.character(tab_labels), gp_text = gpar(fontsize = 7))(tab)
Par contre je n'arrive malheureusement pas à faire refonctionner la fonction labeling_cells, qui ajoutait les pourcentages à l'intérieur des cellules…
Bonne journée,
Julien
Merci beaucoup pour votre réponse et votre réactivité,
si je trouve comment faire fonctionner labeling_cells je viendrais noter l’information ici (si ça peut servir à d’autres).
En attendant, la solution pour moi a été d’exporter mon graphique en .pdf et de le retravailler avec un logiciel de retouches vectorielles. Ça peut dépanner si l’on a seulement quelques graphiques…
Bonne journée,
Elsa
Bonjour,
Merci pour votre introduction, claire, facile d’accès et directe. Elle a l’énorme avantage de faire très vite un premier tour de ce qu’on aimerait faire avec un tableau de données X quand on est chercheur en SHS. Je suis linguiste et travaille donc avec des données et des annotations plus linguistique, mais ayant suivi un cours d’introduction aux statistiques en SHS, j’ai pu suivre la totalité de votre introduction.
Bonne continuation à vous
Evelyne
Merci beaucoup, Julien.
Votre article m’a beaucoup aidé à commencer efficacement avec R.
Il faut juste préciser dans la partie graphique que, à l’installation de R, il faut aussi télécharger le package R2HTML (une unique fois lors de l’installation de R, au même titre que l’installation du package questionr ), sans quoi R n’exécute pas la commande copie(tab.export).
Grand merci de la Suisse.
merci bcp pour cette intro limpide! peut-on avoir la suite svp? SVP!!!
Bonjour,
Pour la suite, ça se passe ici : https://juba.github.io/tidyverse/