« Introduction à la modélisation des données avec R » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 75 : Ligne 75 :
* <code>x</code> et <code>z</code> sont par conséquent les valeurs qui expliquent ou prédisent <code>y</code> et, encore une fois selon l'approche adoptée, sont souvent identifiées comme variable indépendante (VI), ''prédicteurs'' ou ''explanans''
* <code>x</code> et <code>z</code> sont par conséquent les valeurs qui expliquent ou prédisent <code>y</code> et, encore une fois selon l'approche adoptée, sont souvent identifiées comme variable indépendante (VI), ''prédicteurs'' ou ''explanans''


<code>y</code>, <code>x</code> et <code>z</code> font références à des valeurs contenus dans la structure de données qui est passée en argument à la ligne '''5''', avec le code <code>data = my_data</code>. Par conséquent, my_data doit être une structure de données qui peut identifier des valeurs <code>y</code>, <code>x</code> et <code>z</code>. Dans la plupart de cas, il s'agit des noms des colonnes d'une structure de données de type rectangulaire (e.g. un ''data.frame'' dans [[R]] de base ou un ''tibble'' dans l'écosystème [[Introduction à Tidyverse|tidyverse]]) :
<code>y</code>, <code>x</code> et <code>z</code> font références à des valeurs contenus dans la structure de données qui est passée en argument à la ligne '''5''', avec le code <code>data = my_data</code>. Par conséquent, <code>my_data</code> doit être une structure de données qui peut identifier des valeurs <code>y</code>, <code>x</code> et <code>z</code> (pas forcément dans cet ordre). Dans la plupart de cas, il s'agit des noms des colonnes d'une structure de données de type rectangulaire (e.g. un ''data.frame'' dans [[R]] de base ou un ''tibble'' dans l'écosystème [[Introduction à Tidyverse|tidyverse]]) :


{| class="wikitable"
{| class="wikitable"

Version du 27 février 2020 à 15:00

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.



Introduction

Étant R un logiciel utilisé très souvent dans le contexte du Data Science, il existe des nombreuses possibilités pour modéliser des données, notamment à travers une grande variété de paquets externes. La modélisation des données est un sujet très vaste et qui incorpore différents approches philosophiques, théoriques et pratiques. Certaines sont déjà utilisées depuis longtemps en sciences sociales, comme les statistiques inférentielles de type fréquentiste, tandis que d'autres commencent à apparaître (e.g. statistiques Bayésiennes, machine learning), en dépit du fait qu'elles existent déjà depuis plusieurs années (voir siècles pour les statistiques Bayésiennes). Le point de contact parmi ses différentes approches est souvent identifié comme la séparation entre le signal et le bruit. Même si cette définition est probablement trop abstraite pour qu'elle puisse être utile sans une expérience préalable dans le domaine, elle permet d'éviter de tomber dans un champ plutôt qu'un autre. D'autres définitions qu'on peut parfois lire dans des livres de textes en sciences sociales (e.g. la réduction des données à un indicateur statistique ou encore la quantification de l'incertitude) ne sont souvent valable que dans une approche spécifique.

Dans cette page, nous proposons d'abord une description du fonctionnement technique de la modélisation en R, notamment en référence aux caractéristiques de Input et Output des fonctions qui s'occupent de modéliser des données. Ensuite, nous proposons quelques exemples d'application se référant à différentes approches que nous n'aurons sûrement pas la possibilité d'approfondir, mais dont il est peut-être utile de connaître l'existence.

Prérequis

Cet article présuppose deux types de connaissances préalables :

  • Techniques, relatives à l'utilisation de R
  • Théoriques, relatives à des connaissances en modélisation des données

Connaissances techniques

Cette page fait partie du parcours guide Pensée computationnelle avec R et nécessitent pourtant au moins une première exposition à l'environnement de R et à la programmation. Si vous n'avez pas suivi le parcours guidé et vous avez une expérience limité avec R ou la programmation en général, la lecture de ces pages peut être utile :

De plus, même si les exemples proposés dans la page peuvent être reproduit dans tout environnement qui supporte R, l'utilisation de RStudio est conseillée, voir à ce propos :

Connaissances théoriques

Cet article aborde des concepts statistiques qui nécessitent au moins une expérience de base au préalable avec l'analyse de données quantitatives. Si vous avez suivi un cours en méthodologie de recherche en général ou en statistiques en particulier et mené une analyse statistique (e.g. régression linéaire, t-test, ANOVA, ...), vous pouvez suivre le contenu, même si très probablement certains informations seront nouvelles.

Si vous n'avez pas d'expérience au préalable ou vous préférez revoir certains principes avant d'aborder le contenu de cette page, vous pouvez vous référez au Manuel de recherche en technologie éducative, notamment aux sections consacrées aux données et analyses quantitatives :

Les informations du manuel sont largement généralisables à tout contexte en sciences sociales, même en dehors de la technologie éducative.

Principes techniques de la modélisation des données

La modélisation des données en R, sauf quelques exceptions, suit toujours le même schéma de base dans lequel les données représentent l'Input et le modèle représente l'Output. Entre les deux, une fonction compute le modèle selon une formule (avec éventuellement d'autres paramètres) et le met à disposition, normalement avec des informations corollaires qui permettent, par exemple, d'évaluer sa pertinence ou de le visualiser graphiquement.

DONNÉES -> FONCTION(FORMULE, ....) -> MODÈLE

Modéliser à travers une formule

La plupart des paquets qui s'occupent de la modélisation des données en R utilise une syntaxe pareille, ou parfois très similaire, pour expliciter les caractéristiques du modèle à utiliser, c'est-à-dire la relation entre les données/variables qui font partie du jeu des données.

Voyons toute de suite un schéma essentiel qui sera ensuite adapté à des fonctions existantes :

1 # Exemple de la structure d'une fonction de modélisation (CODE NON EXECUTABLE)
2 
3 my_model <- my_modeling_function(
4   formula = "y ~ x + z", 
5   data = my_data, 
6   [other_parameters, ...]
7 )

Analysons ce code en détail. La ligne 3 consiste dans une simple association entre une référence symbolique, my_model, avec le résultat de l'exécution d'une fonction de modélisation, my_modeling_function. Bien entendu, il existe une différence substantielle entre ces deux composantes :

  • La référence symbolique my_model peut avoir tout nom arbitraire que vous souhaitez utiliser, du moment qu'il respecte les règles syntaxique du langage
  • La fonction de modélisation, nommée ici my_modeling_function(...), doit en revanche être une fonction existante, c'est-à-dire qu'elle est disponible dans l'environnement de la session de travail. Elle peut être à disposition de l'environnement de deux manières différentes :
    • Une fonction de modélisation déjà disponibles dans les paquets de R de base, comme par exemple lm() ou t.test()
    • Une fonction chargée à travers un paquet externe qui la met à disposition dans l'environnement, comme par exemple les paquets car ou afex

La ligne 4 introduit le concept fondamental de formule. La formule s'occupe de formaliser, avec une syntaxe concise, la relation entre les données/variables du modèle. Dans le cas de notre exemple, la formule se lit de la manière suivante :

y ~ x + z
  • y représente la valeur que le modèle veut expliquer ou prédire, donc selon l'approche utilisée à la modélisation, elle est souvent appelée variable dépendante (VD), variable expliquée, outcome ou explandandum
  • Le symbole ~ (à lire tilde) peut se traduire avec la locution est expliqué par, et sert donc à séparer la formule entre ce que nous souhaitons expliquer ou prédire, et les éléments utilisés pour effectuer l'explication ou la prédiction. Nous pouvons donc lire notre formule de la manière suivante y est expliquée par x et z.
  • x et z sont par conséquent les valeurs qui expliquent ou prédisent y et, encore une fois selon l'approche adoptée, sont souvent identifiées comme variable indépendante (VI), prédicteurs ou explanans

y, x et z font références à des valeurs contenus dans la structure de données qui est passée en argument à la ligne 5, avec le code data = my_data. Par conséquent, my_data doit être une structure de données qui peut identifier des valeurs y, x et z (pas forcément dans cet ordre). Dans la plupart de cas, il s'agit des noms des colonnes d'une structure de données de type rectangulaire (e.g. un data.frame dans R de base ou un tibble dans l'écosystème tidyverse) :

x y z ...
x1 y1 z1 ...
x2 y2 z2 ...
... ... ... ...
xn yn zn ...

À la ligne 6, la notation conventionnelle [other_parameters, ...] signale que certains fonctions de modélisation acceptent des paramètres supplémentaires qui permettent de mieux adapter la modélisation aux besoins particulier de l'analyse. Ces paramètres dépendent évidemment de la fonction spécifique utilisées et il est souvent nécessaire de consulter la documentation ou des tutoriels pour connaître les différentes possibilités. Si vous utilisez RStudio, il est également possible de se servir de la touche TAB à l'intérieur des parenthèses de la fonction pour avoir un aperçu des paramètres acceptés, souvent avec une explication qui peut déjà aider un peu :

Liste des paramètres d'une fonction de modélisation, lm() dans l'exemple

Différentes combinaisons dans la formule

La notation de la formule passée à la fonction peut évidemment s'adapter en fonction de la modélisation à effectuer. On peut en effet combiner les éléments de différentes manières, en utilisant également d'autres symboles pour dénoter des rapports entre les éléments de la formule. Voici quelques exemples de notations qui sont valables dans plusieurs fonctions de modélisation, même dans des paquets externes. Pour brévité, nous utiliserons les termesde variable(s) dépendante(s) ~ variable(s) indépendante(s), abrégées en VD ~ VI, mais bien évidemment ces termes peuvent être substitués avec des combinaisons alternatives (e.g., outcome(s) ~ prédicteur(s), explenandum ~ explenans, ...). Pour l'instant nous nous limitons à afficher la syntaxe avec une référence au nom de tests classiques, souvent utilisés en sciences sociales, qui peuvent être rapportés à la formule. Des exemples concrets plus bas illustrerons les conséquences sur le modèle.

  • y ~ x
    La VD est expliquée par une seule VI (e.g. t-test, One-way ANOVA, régression linéaire simple)
  • y ~ x + z + c + d
    La VD est expliquée par les 4 VIs (e.g., régression linéaire multiple)
  • y + a + b ~ x + z
    Les trois VDs y, a et b sont expliquées par les 2 VIs (e.g., MANOVA)
  • y ~ x + z + x:z
    La VD est expliquée par les 2 VIs, plus un effet d'interaction/modération, dénoté par x:z (e.g. ANOVA factorielle)
  • y ~ x * z
    Même résultat du point précédent, mais en format raccourcis. L'utilisation de * implique automatiquement l'effet d'interaction/modération.
  • y ~ .
    Raccourcis pour dénoter que la VD est expliquée par toutes les VIs de la structure de données (i.e. toutes les autres colonnes)
  • y ~ . - w
    Raccourcis pour dénoter que la VD est expliquée par toutes les VIs de la structure de données (i.e. toutes les autres colonnes) sauf la VI w.