Créer des séquences et des grilles avec R

 

Savoir créer des séquences de chiffres ou de chaînes de caractères sous R, ainsi que des grilles, peut être très utile.

 

J’ai régulièrement besoin de créer des séquences, pour :

  • construire un jeu de données,
  • créer les breaks sur les axes d’un plot avec ggplot2,
  • produire un clé primaires en combinant deux variables pour une jointure de deux tables.

Et j’utilise fréquemment les grilles pour réaliser des simulations de puissance :

Pour créer ces séquences et ces grilles, j’utilise les fonctions :

  •  seq()
  • rep()
  • interaction()
  • gl()
  •  expand.grid()

J’ai toujours eu du mal, à retenir comment fonctionnent certaines de ces fonctions. Cet article m’est donc utile, à moi aussi, il me servira d’aide-mémoire !

Des séquences de nombres

Pour cela, nous pouvons utiliser la fonction seq() qui comporte plusieurs arguments :

  • from : le point de départ
  • to : le point d’arrivée
  • by : la valeur du pas
  • length.out : la longueur souhaitée de la séquence
  • along.width : permet de récupérer une longueur souhaitée à partir d’un objet.

Les arguments from et to sont toujours nécessaires, alors que les arguments by, length.out, along.width dépendent des situations.

Voici quelques exemples :

 

 

Des séquences répétées

Pour créer des séquences contenant des répétitions d’éléments, nous pouvons employer la fonction rep(). Ces fonctions comportent également plusieurs arguments :

  • x, l’élément ou le vecteur d’éléments à répéter
  • times le nombre de fois que l’élément x doit être répété
  • length.out : la taille souhaitée de la séquence à créer
  • each : le nombre de fois que doit être répété un élément du vecteur x, avant de passer au suivant

Là encore, l’argument x est toujours nécessaires, et les arguments times, length.out , each sont interchangeables, et à utiliser selon ce que nous souhaitons réaliser.
Voici quelques exemples :

 

 

Des séquences de facteurs

La fonction gl() est assez similaire à la fonction rep, mais elle permet en plus de transformer la séquence en facteur (factor class), et même de donner un ordre dans les modalités (levels).

Cette fonction comporte plusieurs arguments :

+ n : le nombre de modalités ( ou levels) que le facteur va comporter
+ k : le nombre de répolication souhaitée
+ length : la longueur souhaitée de la séquence créée
+ labels : les étiquettres des catégories
+ ordered : permet de donner un ordre aux modalités (levels)

Voici quelques exemples :

Lorsque l’argument ordered=TRUE est ajouté, nous pouvons voir dans la sortie précédente que l’ordre des modalités est TrtA < TrtB. Si nous faisons ensuite un test statistique par exemple, la modalité TrtA servira de référence.

Voici encore quelques correspondances entre les fonctions gl et rep :

 

 

Combinaison de deux variables

Je peux avoir besoin de combiner deux variables en une seule dans deux situations principales :

  • pour créer une clé primaire combinée (par exemple avec le nom et le prénom) avant de réaliser une jointure de tables.

     👉 Cliquez ici pour accéder à l’article sur les jointures de table

 

  • lorsque j’ai fait une ANOVA à deux facteurs, que l’interaction est significative, et que je souhaite repasser à une ANOVA à un facteur,  en combinant les niveaux des deux variables explicatives.

        👉 Cliquez ici pour accéder à l’article sur les ANOVA à deux facteurs

 

Voici un exemple :

 

 

Création de grilles

Pour réaliser des simulations, il peut être très utile de savoir réaliser des grilles afin de créer toutes les situations possibles. Pour cela, on utilise la fonction expand.grid().

Voici un exemple :

On peut alors, très facilement rajouter de nouvelles variables dans les grilles construites :

La réalisation de ces grilles est particulièrement utile lorsqu’on souhaite calculer la puissance qu’un test statistique peut atteindre, en fonction de différents paramètres. (https://statistique-et-logiciel-r.com/puissance-nombre-de-sujets/)

    👉 Cliquez ici pour accéder à l’article sur la puissance statistique

 

Par exemple, dans le cadre d’un test de Student de comparaisons de deux moyennes, la puissance de ce test, calculé par la fonction power.t.test() dépend de :

  •  delta : la vraie différence entre les deux moyennes
  • sd l’écart type des données
  • n : le nombre de sujets par groupe.

Très généralement, nous ne connaissons pas précisément ces trois paramètres. Alors, nous pouvons faire des simulations en les faisant varier, et en les combinant

Imaginons, par exemple que :

  •  delta peut varier entre 3 et 7
  • sd peut varier entre 9 et 11
  • que le nombre de sujets peut varier entre 50 et 350

 

Nous pouvons alors réaliser une grille avec l’ensemble des combinaisons des modalités de ces trois paramètres :

 

La fonction crossing du package tidyr (qui appartient au super package tidyverse) permet également de construire des grilles :

 

Dans un second temps, à l’aide d’une boucle for() par exemple, nous pouvons compléter cette grille, en ajoutant une variable qui contient le résultat du calcul de la puissance théorique selon la fonction power.t.test() , pour chacune des situations (représentée sur une ligne) :

Enfin, une fois les calculs réalisés, nous pouvons utiliser cette grille pour représenter les résultats , à l’aide du package ggplot2.

👉 Cliquez ici pour accéder à un article d’introduction au package ggplot2

 

 

grille et calcul de puissance

Remarque : Les breaks sur l’axe des x sont construits grâce à la fonction seq().

 

Les grilles peuvent aussi être employées pour réaliser des prédictions, à partir d’un modèle linéaire, par exemple. Pour plus d’informations, cliquez ici !

 

Et vous, est-ce-que vous connaissez d’autres fonctions pour créer des séquences ? Si oui, partagez les en commentaire !

Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee 🙏

👉 Cliquez ici pour soutenir le blog Statistiques et Logiciel R

 

Image par Gerd Altmann de Pixabay 

Partager l'article
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

4 commentaires

  1. Dany OTRON Répondre

    Merci Claire, pour cet article encore très très utile et pratique. C’est vraiment très intéressant.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *