Archives par étiquette : sommeil

Visualisations des données : exemple avec un questionnaire de bien-être

Dans une publication précédente je vous avais présenté une solution pour recueillir des résultats d’un questionnaire en ligne de bien-être type Hooper, puis d’importer les résultats dans le logiciel RStudio.

Aujourd’hui je vous présente quelques unes de possibilités pour visualiser des résultats afin de faire une interprétation graphique et une analyse. Collecter, traiter et analyser des données est utile que si le destinataire final interprète rapidement le rapport ou le tableau de bord. Si personne ne le lit tout cela ne sert à rien.

Note 1 : je rappelle avant toute chose que l’exemple est avec un questionnaire hooper, mais libre à vous d’utiliser le questionnaire ou les données de votre choix. 

Note 2 : je rappelle enfin que l’analyse et les conclusions sont dépendantes du type de données et du contexte. 

Le système de graphique de base sur RStudio est simple et pratique. Mais le package ggplot2 est généralement plus utilisé car il propose plus d’options. 

Nous allons donc commencer par installer le package et créer une colonne de score total additionnant toutes les valeurs des réponses (sommeil,fatigue,stress et courbatures).

 
#Installation et chargement package ggplot2
install.packages("ggplot2")
library(ggplot2)

# Création colonne score total
data$total<-data$Sommeil+data$Fatigue+data$Stress+data$Courbatures

Le premier graphique que nous allons faire est une courbe du score total sur la durée des données. Comme nous représentons l’évolution du score dans le temps c’est en fait une série temporelle avec geom_line() .

 
ggplot(data, aes(x=Date, y=total,group = 1)) +
  geom_line() + 
  xlab("")

Le graphique de base n’est très lisible. Pour chaque jour il présente les valeurs de toutes l’équipe. Nous allons changer de thème avec theme_classic().

 
ggplot(data, aes(x=as.Date(Date), y=total,group = 1)) +
  geom_line() + 
  xlab("")  +  theme_classic()

Le graphique est plus visible mais toujours peu parlant. Essayons avec une repésentation en boites avec geom_boxplot().

 
ggplot(data, aes(x=as.factor(Date), y=total)) +
  geom_boxplot() + 
  xlab("")+theme_classic()

La représentation est plus intéressante car elle donne des indications de tendance centrale, de dispersion et de valeurs anormales.

Essayons à présent de représenter l’évolution du score total dans le temps, mais cette fois-ci avec un graphique pour chaque athlète avec facet_wrap().

 
ggplot(data, aes(x=Date, y=total, group = 1)) +
  geom_line() + 
  xlab("")+  theme_classic()+facet_wrap(~Athlete)

Cette visualisation est parlante car elle renseigne sur l’évolution dans le temps pour chaque athlète. Il est possible de faire le même chose en diagramme en barres avec geom_bar().

 
ggplot(data, aes(x=Date, y=total, group = 1)) +
  geom_bar(stat = 'identity') + 
  xlab("")+  theme_classic()+facet_wrap(~Athlete)

Cependant, avons-le, l'interprétation n’est pas très instinctive et rapide. Nous allons mettre des couleurs en conditionnant la couleur à la valeur de score total avec “fill=”.

 
ggplot(data, aes(x=Date, y=total, fill=total)) +
  geom_bar(stat = 'identity') + 
  xlab("")+theme_classic()+facet_wrap(~Athlete)

Déjà mieux ! Nous pouvons ensuite choisir les couleurs pour être toujours plus parlant visuellement avec scale_y_continuous() et scale_fill_gradient2().

 
ggplot(data, aes(x=Date, y=total, fill=total)) +
  geom_bar(stat = 'identity') + 
  xlab("")+
  theme_classic()+facet_wrap(~Athlete)+
  scale_y_continuous(breaks=seq(0,28,14))+
  scale_fill_gradient2(low='blue', mid='green', high='red', midpoint = 14, name='Total')

Le graphique est bien plus visuel. Le contraste de couleurs permet de rapidement distinguer les valeurs hautes ou basses. Notez qu’il est également possible de représenter le score total par date.

 
ggplot(data, aes(x=Athlete, y=total, fill=total)) +
  geom_bar(stat = 'identity') + 
  xlab("")+
  theme_classic()+facet_wrap(~Date)+
  scale_y_continuous(breaks=seq(0,28,14))+
  scale_fill_gradient2(low='blue', mid='green', high='red', midpoint = 14, name='Total')

Ou bien encore de le faire une variable en particulier. La fatigue par exemple.

 
ggplot(data, aes(x=Date, y=Fatigue, fill=Fatigue)) +
  geom_bar(stat = 'identity') + 
  xlab("")+
  theme_classic()+facet_wrap(~Athlete)+
  scale_y_continuous(breaks=seq(0,7,1))+
  scale_fill_gradient2(low='blue', mid='green', high='red', midpoint = 3.5, name='Fatigue')

La représentation dépend de la question, des données et du destinataire. Mais vous avez à présent une brève idée des possibilités.

Maintenant la question est que ce passe t-il avec l’athlète A ?