LaTeX & R
Encore un site sur R !

Juste quelques trucs pour vous aider à débuter en R & LaTeX centré sur la production de rapports via knitr ou RMarkdown.

En clair je me suis fait un aide mémoire que je partage avec vous.

Des 0 et des 1
Article mis en ligne le 13 novembre 2021

par Philippe MICHEL

Même en statistiques il y a des traditions difficiles à contourner. Et malgré l’abandon des cartes perforées depuis déjà quelques années les statisticiens (les vrais, pas moi) continuent à tout coder en numérique.

Thèse

Dans tous les cours ou TP de statistiques que j’ai suivi on notait des "oui" ou "succès" par 1 et le "non" ou "échec" par 0. Jusque là, pourquoi pas. Mais quand on note les hommes par "1" et les femmes par "0" ou l’inverse, expliquez-moi la logique et comment je vais m’y retrouver. Bien sûr j’ai toujours sous les yeux le petit résumé de l’étude qui m’indique :

  • Variable "sexe", facteur , 2 niveaux :
    • 0 : Homme
    • 1 : Femme
      Mais ce n’est qu’un exemple parmi les plus simples, on peut aussi trouver les couleurs codées en 1-2-3-4 ! Si si ça se fait. Il y a encore plus vicieux. prenons la question "je t’aime..." et les réponses :
  • pas du tout
  • un peu
  • beaucoup
  • à la folie
  • Notées en 0,1,2,3. On peut faire des calculs dessus, c’est bien pratique (la moyenne de l’amour à Béziers est de 2,45 mais à Perpignan on trouve 2,63 d’où un test de Student qui donne p=... etc.) . Oui mais méfiance, pour pourvoir faire ces calculs il faut postuler a priori que l’écart entre "pas du tout" et "un peu" est le même qu’entre "un peu" et "beaucoup". Pourquoi pas, mais il faut en être sûr ou le prouver. Le plus souvent en restant sur des données discrètes on aura des tableaux moins présentables, qui feront moins savant, mais plus réalistes. Mais ça ne serait pas plus simple de coder directement en oui/non ou H/F ? Tous les logiciels modernes, R ou autre, comprennent très bien les mots. Et même ils les cataloguent tout de suite en facteur alors que les 0/1 seront souvent considérés comme numériques (vous aurez alors une moyenne et un écart-type sur la variable sexe !) et ce sera à vous de corriger. C’est facile à faire, un coup de
  •  sexe<-as.factor(sexe)
  • Et c’est bon. Sauf que vous avez toujours des 0/1 ! On peut aussi faire un ifelse(sexe=="1","H","F") Mais quand il y a plus de deux niveaux ça devient compliqué. Pour ma part je reprends les données qu’on me confie (habituellement sur un tableur) et je fait du Rechercher/Remplacer sur toutes les variables. Et je râle. J’ai souvent posé la question : « Pourquoi ? » La réponse a toujours été « Parce que » ou « Bof, on fait comme ça ». Si quelqu’un a une meilleure réponse...

Antithèse

Il existe tout de même des situations où avoir ses facteurs en 0/1 est bien pratique : Premier exemple les additions. Prenons un sondage « Chez quels commerçants avez-vous été ce matin ? » Avec trois items :

  • le boulanger oui/non
  • le boucher oui/non
  • le charcutier oui/non

Et là on vous demande le nombre de commerçants moyen que les sondés ont été voir. Et vous voilà à compter des oui. Alors qu’avec un codage en 0/1 vous faites simplement une addition boulanger + boucher + charcutier. On peut aussi vouloir faire un tableau de corrélations ce qui n’est possible qu’avec des variables numériques. Attention, les résultats doivent être interprétés avec prudence s’il y a beaucoup de variables à deux niveaux ! Ne pas oublier qu’en réalité R code tout en nombre (sauf les variables character) avec, pour les variables factorielles, une table qui fait correspondre le nombre à une étiquette (label en anglais, c’est ce qu’on affiche avec la fonction levels() donc la conversion d’un facteur en nombre, si besoin, est simple & sans risque : on ne fait qu’effacer le label pour voir le nombre.

Synthèse

Bon, il existe d’autres très bonnes raisons pour coder en pseudo numérique des variables discrètes. Du calcul matriciel par exemple. Mais si vous en êtes là vous n’avez rien à faire sur ce blog ! Pour être franc sur des travaux un peu complexes je travaille sur deux data-frame jumeaux, un avec les variables discrètes codées en clair : Variable "sexe", factorielle, deux niveaux : "homme" / "femme" & son double codé en nombres : Variable "sexe", numérique, homme = 1, femme=2 De toute façon recoder en numérique des variables factorielles est très simple et expliqué ici.


Dans la même rubrique