Introduction

Ce devoir évalué par les pairs consiste en l’analyse d’un dataframe d’enquête de satisfaction en hopital. Le format du présent fichier est le markdown pour R qui permet de mixer du code et du texte afin de produire un rapport de qualité. Ce format diffère légérement du format script R mais permet d’aboutir au même résultat.

Question1

“Pour les trois variables catégorielles du fichier (à vous de déterminer de quelles variables il s’agit), présentez les pourcentages de sujets relevant de chacune des modalités.”

1 variable catégorielle = variable qualitative = 1 facteur = 1 variable dont les valeurs ne mesurent rien de particulier mais permettent de définir des niveaux, des catégories, des modalités. Contrairement à des variables quantitatives qui mesurent des propriétés quantifiables

Les 3 variables catégorielles du fichier sont: service / profession / sexe

Pour effectuer des calculs quels qu’ils soient, il faut tout d’abord charger le fichier de données pour obtenir un dataframe utilisable par R

read.csv2("satisfaction_hopital.csv")->satpatient

Une fois le dataframe disponible, on utilise la fonction table qui permet de compter les occurences d’une modalité d’un dataframe. Par exemple pour la modalité sexe

table(satpatient$sexe)
## 
##   0   1 
## 268 266

prop.table permet de calculer les fréquences relatives pour une variable donnée

prop.table(table(satpatient$sexe))
## 
##         0         1 
## 0.5018727 0.4981273

Enfin, pour avoir un pourcentage plutot qu’une fréquence, il suffit de multiplier par 100. On peux également contrôler la précision avec la fonction round: ici 2 chiffres après la virgule

round(prop.table(table(satpatient$sexe))*100,2)
## 
##     0     1 
## 50.19 49.81

Finalement, la combinaison de table, prop.table et round permet de répondre à la question

round(prop.table(table(satpatient$sexe))*100,2)
## 
##     0     1 
## 50.19 49.81
round(prop.table(table(satpatient$service))*100,2)
## 
##     1     2     3     4     5     6     7     8 
## 12.17 11.05 13.11 12.92 13.30 11.99 12.55 12.92
round(prop.table(table(satpatient$profession))*100,2)
## 
##     1     2     3     4     5     6     7     8 
##  0.23  8.90 29.04 20.61 16.16 10.30  5.15  9.60

Question2

“Pour les autres variables, donnez de façon synthétique : moyenne, médiane, écart-type, minimum, maximum, nombre de données disponibles (non manquantes).”

Plusieurs fonctions R permettent de connaître en synthèse le contenu d’un dataframe parmi ces commandes, on trouve names, summary, describe La plus complet reste la fonction describle disponible après avoir chargé la library prettyR. Cette fonction affiche en ligne les modalités et en colonne moyenne, médiane, variance (var), écart-type (sd), le nb de valeurs non manquantes (valid.n)

library(prettyR)
describe(satpatient)
## Description of satpatient
## 
##  Numeric 
##                     mean median    var    sd valid.n
## service             4.55      5   5.19  2.28     534
## sexe                0.50      0   0.25  0.50     534
## age                58.21     60 317.17 17.81     528
## profession          4.43      4   3.06  1.75     427
## amelioration.sante  2.23      2   0.59  0.77     376
## amelioration.moral  1.68      1   0.90  0.95     383
## recommander         1.62      2   0.31  0.56     405
## score.relation     35.22     36  21.38  4.62     349
## score.information  31.91     33  46.15  6.79     358

Pour ajouter la valeur min et max, il faut spécifier l’argument num.desc qui décrit l’ensemble des fonctions à excuter pour chaque modalité

describe(satpatient, num.desc=c("mean","median","max","var","sd","valid.n", "min", "max"))
## Description of satpatient
## 
##  Numeric 
##                     mean median max    var    sd valid.n min max
## service             4.55      5   8   5.19  2.28     534   1   8
## sexe                0.50      0   1   0.25  0.50     534   0   1
## age                58.21     60  97 317.17 17.81     528  18  97
## profession          4.43      4   8   3.06  1.75     427   1   8
## amelioration.sante  2.23      2   3   0.59  0.77     376   0   3
## amelioration.moral  1.68      1   3   0.90  0.95     383   0   3
## recommander         1.62      2   2   0.31  0.56     405   0   2
## score.relation     35.22     36  40  21.38  4.62     349  13  40
## score.information  31.91     33  40  46.15  6.79     358  13  40

Question3

“Faites un histogramme du score de relation (score.relation).”

L’historgramme du score des relations est une représentaton graphique de la distribution de la modalité score.relation sur le nombre total de patients sondés

hist(satpatient$score.relation,xlab = "Qualité de la relation patient",ylab = "Nb. patient", main="Distribution du score des relations",col="grey")

Question4

"A l’aide de deux « boxplots », représentez côte à côte la distribution du score de relation chez les hommes et les femmes.

La représentation boite à moustache permet d’observer la distribution de variable quantitative score.relation * la boite contient 50% des données * il y a 25% des données entre la boite et la moustache supérieure * il y a 25% des données entre la boîte et la moustache inférieure La formule est plus complexe que cela c’est la raison pour laquelle on voit des valeurs en dessous de la moustache inférieure/supérieure. Ce sont des valeurs extremes

boxplot(satpatient$score.relation)

Si l’on souhaite connaître la distribution de cette variable quantitative en fonction du sexe du patient, alors il suffit d’utiliser la notation “~” NOTE: On remarque que cette distribution ne présente pas de différence notable: les hommes et les femmes ont noté de façon homogène la qualité de la relation

boxplot(satpatient$score.relation~satpatient$sexe, xlab="Sexe",ylab="Nb. patients", main="Distribution du score des relations par sexe", col="grey")

Bonus: compléments de réponse

barplot(round(prop.table(table(satpatient$sexe))*100,1),main = "Pourcentages de sujets par sexe")

Si on souhaite avoir des libellés plus parlants, alors on créé 1 modalité avec des levels associés correspondant à des libellés parlants. On utilise la fonction factor. Ici pour la modalité sexe, on rajoute la modalité sexe.cat

satpatient$sexe.cat<- factor(satpatient$sexe,level=c(0,1), labels=c("homme", "femme"))

Il suffit ensuite d’appliquer barplot à cette nouvelle modalité

barplot(round(prop.table(table(satpatient$sexe.cat))*100,1),main = "Pourcentages de sujets par sexe")

Le partage de document est très convivial avec la fonction publish de Rstudio. Il faut créer un fichier R MarkDown au lieu d’un fichier R script et s’approprier la syntaxe markdown: voir R Markdown: The Definitive Guide. A titre d’exemple, le présent rapport a été publié sur bookdown.org à l’adresse : https://bookdown.org/connect/#/apps/1811/access/301. Pour cela, il a fallu installer 1 library et lancer 2 fois 1 commande.

install.packages("bookdown")
bookdown::publish_book()
bookdown::publish_book()