Contributeurs: Pgclaret, Vincent Bonhomme

 français   Dernière modification le: 25/04/17 - Crée le: 18/12/15


Biostatistiques : la bête noire des blouses blanches

par Pgclaret

Vous êtes sur la version de travail d'un article en brouillon. Quand vous serez prêt.e.s, vous pouvez la proposer à la révision en apposant {{Révision?}} dans l'article.
Contributeurs : Pgclaret, Vincent Bonhomme · Éditeur : Vincent Bonhomme (d · c · b)
Date création : 18 décembre 2015 · Date révision : ?date_rev · Version révision : ?id_rev
Lien court : http://shakepeers.org?curid=843


Qu’est-ce que R et pour quoi faire ?

L’analyse statistique est souvent considérée par les médecins comme un frein à la recherche clinique.

[À revoir, en cours].

Dans cet article, les commandes saisies sous R sont indiquées avec une police à chasse fixe et précédée de l’invite de commande >:

Sys.time()

Le résultat tel qu’affiché par R, l’heure est la date du système, est également indiqué avec une police à chasse fixe :

 [1] « 2015-12-18 09:20:00 CET »

Nous illustrerons cet article grâce à l’exemple fictif d’une cohorte de 14 patients hospitalisés pour pneumopathies bactériennes. Les caractéristiques relevées seront le sexe et l’âge des patients. Ces patients seront soit traités avec un antibiotique, soit avec un placebo. Le taux de CRP et le retour à domicile à 48 h seront les critères de jugement du traitement. Cinq variables seront donc analysées : la variable age pour l’âge, sexe pour le sexe, groupe pour le traitement, crp pour le taux de CRP, et rad pour le retour à domicile. Le fichier est montré dans le tableau ci-dessous :

sexe age groupe crp rad
M 48 ATB 26 TRUE
F 56 ATB 31 FALSE
M 76 ATB 54 TRUE
F 89 ATB 27 TRUE
F 45 ATB 82 TRUE
M 23 ATB 83 TRUE
F 87 ATB 47 TRUE
F 72 PCB 209 FALSE
M 91 PCB 127 FALSE
F 71 PCB 142 FALSE
M 58 PCB 249 FALSE
F 20 PCB 120 FALSE
F 69 PCB 91 FALSE
F 93 PCB 102 TRUE

Comment entrer les données ?

Une première méthode, fastidieuse mais didactique, permet d’entrer pour chaque variable les données qui la composent. Pour la variable « age », les quatorze âges des patients sont entrés ainsi :

> age = c(48, 56, 76, 89, 45, 23, 87, 72, 91, 71, 58, 20, 69, 93)

La lettre « c » qui précédent la parenthèse ouverte signifie concaténer. Après la ligne de commande, la validation est faite en appuyant sur entrée. Les autres variables sont ensuite entrées :

> sexe <- c("M", "F", "M", "F", "F", "M", "F", "F", "M", "F", "M", "F", "F", "F")
> groupe <- c("ATB", "ATB", "ATB", "ATB", "ATB", "ATB", "ATB", "PCB", "PCB", "PCB", "PCB", "PCB", "PCB", "PCB")
> crp <- c(26, 31, 54, 27, 82, 83, 47, 209, 127, 142, 249, 120, 91, 102)
> rad <- c(TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE)

Ces trois dernières lignes permettent d’illustrer la différence d’écriture entre les variables catégorielles (entre guillemets), numériques (telles qu’elles) et logiques (TRUE ou FALSE). Une dernière commande permet de reconstruire le tableau et d’accoler les colonnes les unes à côté des autres :

> data <- data.frame(sexe, age, groupe, crp, rad)

Une deuxième méthode, plus pragmatique, permet de lire un fichier CSV obtenu à partir d’un fichier Excel. Pour les utilisateurs d’un tableur bureautique :

> data <- read.table("fichier.csv", header = TRUE, sep = ",", dec = ",")

Pour les utilisateurs d’une version anglo-saxonne :

> data <- read.table("fichier.csv", header = TRUE, sep = ";", dec = ".")

En effet, les séparateurs et les décimales ne sont pas codés de la même façon selon que le tableur soit en version française ou anglo-saxonne.

Comment vérifier les données ?

Il est nécessaire de vérifier ses données pour corriger les éventuelles erreurs ou incohérences de saisie. Par exemple, une décimale définit par une virgule à la place d’un point ou un format de date différent entre deux cases. La vérification des données, avant traitement, est donc primordiale et un data management de qualité n’exclut pas cette étape. Pour visualiser les données d’une variable, il faut taper son nom dans la console est valider :

age
[1] 48 56 76 89 45 23 87 72 91 71 58 20 69 93

La variable « age » est bien composée des 14 valeurs de la colonne « age » de notre tableau. La commande « class » permet d’afficher les caractéristiques d’une variable :

> class(sexe)
[1] "character"
> class(age)
[1] "numeric"
> class(rad)
[1] "logical"

Ces trois dernières lignes nous montrent que R considère la variable « sexe » comme alphabétique, la variable « age » comme numérique et la variable « rad » comme logique. Dans l’exemple de la variable « sexe », il est possible de la transformer secondairement en variable catégorielle avec la fonction « as.factor ».

Comme pour afficher les données d’une variable, taper directement le nom d’un tableau permet de l’afficher :

> data

Les dimensions de ce tableau (lignes, colonnes) peuvent être obtenues avec la commande « dim » :

> dim(data)
[1] 14  5

Le tableau est bien composé 14 lignes qui correspondent aux 14 patients et 5 colonnes qui correspondent aux 5 variables étudiées.

Comment tester des hypothèses

Il convient de différencier les variables qualitatives et des quantitatives. Les variables qualitatives (nominale ou ordinale) sont des variables représentées par des qualités et correspondent à des modalités, comme les variables « sexe » ou « groupe ». Les variables quantitatives (discrète ou continue) sont des variables représentées par des quantités et correspondent à des valeurs, comme les variables « age » ou « crp ».

[À développer.]

Variables qualitatives

La commande « table » permet d’obtenir un tableau de contingence à un ou plusieurs niveaux :

> table(sexe)
sexe
F M 
9 5
> table(groupe, rad)
     rad
groupe FALSE TRUE
   ATB     1    6
   PCB     6    1


Ce tableau peut être lui-même un objet :

 > tableau <- table(groupe, rad)

La commande « prop.table » permet d’obtenir les proportions de chaque cellule :

 > prop.table(tableau)
     rad
groupe      FALSE       TRUE
  ATB 0.07142857 0.42857143
  PCB 0.42857143 0.07142857


Pour analyser ce dernier tableau de contingence, la commande « fisher.test » permet de réaliser un test exact de Fisher :

> fisher.test(groupe, rad)

Cette commande est équivalente à la commande :

> fisher.test(tableau)

Variables quantitatives

À compléter.

Quelles sont les limites ?

La recherche biomédicale est critiquée quant à sa qualité discutable [1]. Lorsque le clinicien fait lui-même ses statistiques, il se place au centre de la recherche, augmente ses connaissances et contribue à améliorer par son expérience sa recherche future. Par contre, il est nécessaire de savoir rester dans le champ de ses compétences. Si les statistiques "de base" sont accessibles à l’ensemble des cliniciens, comprendre et réaliser des analyses statistiques avancées nécessite une formation tout aussi avancée.

[À revoir : exemple de l'échographie peu pertinent pour une vulgarisation]

[Par analogie, lorsque les cliniciens on comprit l’utilité de l’échographie clinique, ils se sont progressivement formés pour qu’aujourd’hui cette pratique fasse partie des recommandations. Ces cliniciens ne remplacent pas pour autant les radiologues qui font maintenant moins d’échographies, mais plus d’examens avancés comme la TDM ou l’IRM. La collaboration entre cliniciens et radiologues s’en est trouvée renforcée ainsi que la prise en charge du patient.]

De même, loin de déposséder les biostatisticiens de leurs compétences, l’appropriation par le clinicien d’outils statistiques simples doit permettre un rapprochement entre les deux disciplines, une meilleure compréhension de la recherche clinique et une amélioration de celle-ci [2].


Références

  1. Macleod MR, Michie S, Roberts I, et al (2014) Biomedical research: increasing value, reducing waste. Lancet 383:101-4
  2. Arnold LD, Braganza M, Salih R, et al (2013) Statistical trends in the Journal of the American Medical Association and implications for training across the continuum of medical education. PLoS One 8:e77301