Automatiser le traitement des données

Un article de IMSP - Formation continue.

(en construction)

Sommaire

Aspects généraux

Pratiquement tous les logiciels de statistiques avancés offrent la possibilité d'opérer des scripts ou programmes plutôt que de façon interactive. De nombreux arguments militent pour cette façon de procéder dans le traitement des données, notamment:

  • Un processus reproductible et transparent: les exigences à cet égard sont de plus en plus présentes, en particulier dans les domaines où les contentieux abondent <ref>Pocernich M (2006) R's role in the climate change R News 6(4) http://cran.r-project.org/doc/Rnews/Rnews_2006-4.pdf </ref>. La publication des scripts et programmes permet la reproduction à l'identique de l'analyse par des tiers, et facilite ainsi la vérification et la critique des résultats présentés.
  • La réduction des aspects les plus répétitifs et rebarbatifs du travail: de nombreuses analyses repètent certains aspects, le code peut être partiellement ou totalement réutilisé.
  • La mise à jour de statistiques en temps réel par rapport à la récolte des données, importante en particulier dans la surveillance épidémiologique.


Dans ce chapitre nous allons recapituler le code employé dans les chapitres précédents et l'optimiser pour la génération d'un rapport.

Il est très important dans tous les cas de documenter votre code de façon appropriée, cela facilitera les reprises ultérieures.

Pour des raisons de lisibilité du code nous préférons détailler les procédures pas à pas plutôt que de les condenser en des expressions plus compactes et élégantes.

Un éditeur simple, mais capable de reconnaître et de colorer la syntaxe des commandes sera d'une grande utilité. Les utilisateurs de l'éditeur emacs (qui existe pour pratiquement toutes les plate-formes) peuvent bénéficier de l'extension ESS (Emacs Speacs Statistics) qui offre de nombreux avantages: coloration de la syntaxe, pilotage du logiciel de statistique depuis l'éditeur lui-même, etc. ESS peut interagir avec les logiciels R, S-plus, SAS, BUGS, Stata et XLisp-Stat.

Les utilisateurs de Windows peu familiarisés avec les particularités d'emacs trouveront un intérêt certain à l'éditeur Tinn-R (GPL) qui offre des fonctions similaires.

R

Il existe des extensions de R qui permetent de générer une sortie html ou TeX pour le texte et les tableaux graphiques, et PostScript, DJVU, PNG, BMP et JPEG pour les graphiques. On peut en pratique construire un document contenant à la fois du code R, du HTML, du TeX, et obtenir à l'exécution du code un rapport complet prêt pour l'impression.

Nous allons d'abord recapituler les commandes utilisées dans les chapitres précédents:

récapitulation du code

 ###### préparation ######
 #  install.packages(c("foreign","pastecs","class","e1071","BSDA","sma","Hmisc"), dependencies=TRUE) ;
   library('foreign') ;
   library('pastecs') ;
   library('BSDA') ;
   library('sma') ;
   library('Hmisc') ;
   
 ##### options #####
   
   options(scipen=1000) ;
   options(digits=3) ;

 ##### fonctions #####

gsr <- function(Source, Search, Replace) {
  if (length(Search) != length(Replace)) 
         stop("Search and Replace Must Have Equal Number of Items\n")
  Changed <- as.character(Source)
  for (i in 1:length(Search))
  {
    cat("Replacing: ", Search[i], " With: ", Replace[i], "\n") 
    Changed <- replace(Changed, Changed == Search[i], Replace[i])   }
    cat("\n")
 Changed
}

 ##### importer les données #####

   test001 <- read.csv('test001.csv', header = TRUE) ;

 ##### préparation des données #####
 #
 # corriger les fautes de frappe pour les quartiers 
 #
   quart <- test001$X.QUARTIER ;
   quart <- gsr(quart,"OONAH","FONAH") ;
   quart <- gsr(quart,"OONDE","ZONDE") ;
   quart <- gsr(quart,"LIANH","ZIANH") ;
   quart <- gsr(quart,"OOUNYAHOUN","GOUNYAHOUN") ;
   quart <- gsr(quart,"ZONDE Kodeniko","ZONDE kodeniko") ;
   quart <- as.factor(quart) ;
   test001$X.QUARTIER <- quart ; 
 #
 # corriger les noms des variables
 #
 nouveaux.noms <- c("quartier","ddn","sexe","p1ph1","p1ph2","p1ptemp","p1prate",
"p1pge","p1pdenpf","p1pgam") ;
 names(test001) <- nouveaux.noms ;
 #
 # traiter les données manquantes
 #
   thegam <- test001$p1pgam ;
   thegam <- as.character(thegam) ; 
   thegam <- gsr(thegam,"",NA) ;
   thegam <- as.factor(thegam) ; 
   test001$p1pgam <- thegam ;
  #
   thege <- test001$p1pge ;
   thege <- as.character(thege) ; 
   thege <- gsr(thege,"",NA) ;
   thege <- as.factor(thege) ; 
   test001$p1pge <- thege ;
  #
  # traiter les dates de naissance
  #
   myddn <- test001$ddn ;
   myddn <- as.character(myddn) ;
   myddn <- strptime(myddn,"%d.%m.%Y") ;
   myddn.frame <- as.data.frame(myddn) ;
   test001$ddn <- myddn.frame$myddn ;
   #
   # ajouter une colonne avec les âges
   #
   passage1 <- "03.05.2001" ;
   passage1 <- strptime(passage1,"%d.%m.%Y") ;
   p1age <- difftime(passage1,test001$ddn,tz="",units="days") ; 
   p1age <- as.numeric(p1age) ;
   p1age <- p1age / 365.25 ;
   test002 <- data.frame (test001$quartier,test001$ddn,test001$sexe,
p1age,test001$p1ph1,test001$p1ph2,test001$p1ptemp,test001$p1pge,
test001$p1pdenpf,test001$p1pgam) ;
names(test002) <- c("quartier","ddn","sexe","p1age","p1ph1","p1ph2","p1ptemp",
"p1pge","p1pdenpf","p1pgam") ;
   test001 <- test002 ;
   #
 ##### enregistrer les données #####
 #
   save(test001,file = "test001.Rdata") ;
 #
 ##### enregistrer les données #####
 #
   save(test001,file = "test001.Rdata") ;
 #
 #
 ##### tableau de stat. descriptives #####
 # Nous allons utiliser la fonction "describe" du module Hmisc.
 # 
   describe(test001) ;
 #


en construction

Stata

en construction

Lectures recommandées

Pour continuer

Notions de base

  • Introduction
  1. Pourquoi R?
  2. Prise en main de R
  • Statistiques descriptives en pratique
  1. Analyse préliminaire avec R et STATA
  2. Analyse graphique avec R et STATA
  3. Préparation des données
  4. Automatiser le traitement des données
  5. Tabulations
  • Caractérisation des observations
  1. Les mesures de tendance centrale
  2. Les mesures de dispersion
  3. Tests de normalité
  4. Loi normale
  5. Les scores
  1. Intervalles de confiance
  2. La distribution de Khi-deux
  3. La distribution de Student
  4. Hypothèses et types d'erreur
  5. Valeurs de p
  6. Comparer deux moyennes
  7. Mesures appariées
  • Épidémiologie
  1. Les mesures de fréquence en épidémiologie
  2. Risque Relatif et Odds Ratio avec intervalles de confiance
  3. Test de khi-carré pour une table 2 x 2
  4. Test exact de Fisher
  5. Examens de dépistage, sensibilité, spécificité, valeur prédictive
  6. Mesures d'impact pour une exposition
  7. Épidémiologie des maladies transmissibles
  8. Confusion et modification d'effet
  9. Les types d'études
  10. Courbes de survie