Valid XHTML     Valid CSS2    

 

Module de Biostatistiques,

partie 1

Ecole Doctorale Biologie Santé

gilles.hunault "at" univ-angers.fr

      

 

Solutions pour la séance numéro 5 (énoncés)

  1. Les logiciels suivants ont été présentés, parfois succintement

    Statbox (complément pour Excel)
    Xlstat (complément pour Excel)
    Spss : FR   US
    Statistica : FR   US
    Sas : FR   US

    Les autres logiciels cités dans les articles (dans «Materials and methods») sont

    Statview racheté par SAS puis remplacé par Jmp
    S-plus
    Stata

    Pour être exhaustif, il faudrait citer aussi les logiciels suivants dont seul le premier est «important» :

    Ncss Number Cruncher Statistical Software
    Le Sphinx
    Minitab : FR   EN
    Vista : site 1    site 2

    Mais il y en a encore beaucoup d'autres, souvent spécialisés, parfois gratuits. Une première liste très intéressante de logiciels statistiques est ici et une seconde est en francais (Wiki) et la version anglaise est ; enfin, la très longue liste de Pezzulo se veut exhaustive...

    On peut en déduire que les logiciels SAS et SPSS sont très diffusés dans le monde. A défaut d'être un gage de de qualité ou de fiabilité, cela montre que ces logiciels sont très fortement utilisés, qu'il y a donc des milliers d'utilisateurs, des aides en ligne, des forums. Voici quelques chiffres qui datent de Mai 2009 obtenus via Google en milliers de références :

    spss 11 000
    spss.com 2 700
    spss programs 3,6
    spss macros 1,9
    programmes spss macros 0,6

     

    sas.com 22 700
    the sas system 153
    sas programs 54,9
    sas macros 52,1
    programmes sas 1,1

    Les 22,7 millions de référence pour SAS montrent la suprématie de SAS...Voici un exemple de page officielle d'aide pour Sas en français : SAS Stat (FR), une page des pays où SAS est présent et traduit : SAS offices et enfin une page d'exemples : SAS code samples.

  2. Non il n'y a pas de fonction en Excel pour tracer des boxplots et des stemleafs. Mais on peut en tracer avec des macros. On pourra utiliser par exemple boxplots.txt et stemleaf.txt comme vu en cours.

    Fichiers Excel exemples : elf_age_stemleaf.xls et vins_boxplots.xls.

    Encore faut-il savoir programmer en VBA. Ou savoir comment utiliser ces macros. On pourra utiliser nos fichiers Excel nommés s1e06_binomiale.xls, s2e06_icprop.xls et s3e04_souris.xls présentés en cours comme modèles respectifs pour le calculs de valeurs dans le modèle binomial, les intervalles de confiance et la taille d'échantillon pour une proportion et le test t de Student sous Excel (SxEy signifie l'exercice y de la séance x). En consultant le détail des formules des cellules, on retrouvera le détail des calculs statistiques effectués dans les séances.

    Malheureusement, les macros d'Open Office ne sont pas compatibles avec celles de Microsoft Office. Dommage...

  3. Oui, SPSS est programmable. On peut afficher le texte associé à un commande obtenue par clic de souris via la "fenêtre de syntaxe". Voici par exemple comment analyser la variable AGE avec des commandes :

    
              
         DESCRIPTIVES VARIABLES=age     
           /STATISTICS=MEAN STDDEV MIN MAX.     
              
         NPAR TESTS     
           /K-S(NORMAL)=age     
           /MISSING ANALYSIS.     
              
              
              
    

    Pour des exemples de programmation, regardez le site de Raynald Levesque par exemple...

    SAS est bien sûr programmable. SAS dispose d'un langage de commandes (SAS-L) d'un langage de macros (SAS-ML) et d'un langage spécialisé pour les matrices et les calculs matriciels nommé IML.

    Statistica est programmable en Visual Basic.

  4. Comme ses concurrents SAS et SPSS, Statistica est "assez cher" puisqu'à la version de base, il faut ajouter le prix des "modules complémentaires". Au tarif éducation, il faut compter une centaine d'euros de base par ordinateur et par an et autant par module.

  5. Non, car comme ses concurrents SPSS et Statistica, SAS ne s'achète pas mais se loue à l'année (voir les prix à la question précédente).

  6. SAS, bien sûr, est capable de lire un fichier de 401 975 lignes ; R et Statistica aussi. Mais pas Excel (il est limité à 65 635 lignes). On pourra le vérifier avec notre fichier des données polio.dar qui contient exactement 401 975 lignes... Ce fichier permet de réaliser le tri croisé de l'exercice 8 de la séance 4. Le codage est le suivant : GROUPE=1 : Traitement, GROUPE=2 : Placebo ; POLIO=0 : non, POLIO=1 : oui.

    Voici des indications sur la durée approximative de lecture du fichier cité dont la taille est 6,83 Mo via R :

    
              
         print(date() )     
         nomfic <- "polio.dar"     
         polio <- read.table(nomfic,head=TRUE,row.names=1)     
         cat("on a lu fichier lu ",(1+dim(polio)[1])," lignes dans ",nomfic,".\n")     
         print(date() )     
              
              
    
    
              
         "Thu May  7 16:30:56 2009"     
         on a lu fichier lu  401975  lignes dans  polio.dar.     
         "Thu May  7 16:30:58 2009"     
              
              
    

    Et voici la lecture en SAS :

    
              
         /*  TimeStamp  (dos) : 07 Mai 09 16:34  ;  w:\wstat\eda\edadata\lit_polio.sas */     
              
         data polio ;     
              infile 'polio.dar' firstobs=2 ;     
              input iden $ groupe polio ;     
              
         proc contents  data=polio ;     
              
              
    
    
              
              
         NOTE: Copyright (c) 2002-2003 by SAS Institute Inc., Cary, NC, USA.     
         NOTE: SAS (r) 9.1 (TS1M3)     
               Licensed to UNIV RENNES I LICENCE ENSEIGNEMENT PACK STANDARD, Site 0086442005.     
         NOTE: La session est exécutée sur la plate-forme XP_PRO .     
              
              
              
         NOTE: SAS 9.1.3 Service Pack 4     
              
         NOTE: L'initialisation de SAS a utilisé :     
               temps réel                   0.35 secondes     
               temps processeur   0.34 secondes     
              
         1     
         2          /*  TimeStamp  (dos) : 07 Mai 09 16:34  ;  w:\wstat\eda\edadata\lit_polio.sas */     
         3     
         4          data polio ;     
         5               infile 'polio.dar' firstobs=2 ;     
         6               input iden $ groupe polio ;     
         7     
              
         NOTE: L'infile 'polio.dar' est :     
               Nom de fichier=w:\wstat\eda\edadata\polio.dar,     
               RECFM=V,LRECL=256     
              
         NOTE: 401974 enregistrements lus dans infile 'polio.dar'.     
               La longueur min. de l'enregistrement était 16.     
               La longueur max. de l'enregistrement était 16.     
         NOTE: La table WORK.POLIO a 401974 observations et 3 variables.     
         NOTE: L'étape DATA a utilisé (Durée totale du processus) :     
               temps réel                   1.39 secondes     
               temps processeur   0.51 secondes     
              
              
         8          proc contents  data=polio ;     
         9     
         NOTE: La procédure CONTENTS a imprimé la page 1.     
         NOTE: La procédure CONTENTS a utilisé (Durée totale du processus) :     
               temps réel                   1.07 secondes     
               temps processeur   0.04 secondes     
              
              
         NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414     
         NOTE: Le Système SAS a utilisé :     
               temps réel                   3.25 secondes     
               temps processeur   0.92 secondes     
              
              
    
    
              
         Le Système SAS           16:34 Thursday, May 7, 2009   1     
              
         La procédure CONTENTS     
              
            Nom de la table SAS     WORK.POLIO                    Observations             401974     
            Type d'entrée           DATA                          Variables                3     
            Moteur                  V9                            Index                    0     
            Créé(e)                 jeudi 07 mai 2009 16 h 34     Longueur d'observation   24     
            Dernière modification   jeudi 07 mai 2009 16 h 34     Observations supprimées  0     
            Protection                                            Compressé(e)             NON     
            Type de table                                         Trié(e)                  NON     
            Libellé     
            Représentation données  WINDOWS_32     
            Codage                  wlatin1  Western (Windows)     
              
              
         Informations propres à l'hôte/au moteur     
              
            Taille de page pour la table         4096     
            Nombre de pages pour la table        2394     
            Première page de données             1     
            Nb max. d'obs. par page              168     
            Obs. dans première page de données   114     
            Nombre de corrections dans la table  0     
            Nom de fichier                       F:\Tmp\_TD192\polio.sas7bdat     
            Date de création de la version       9.0101M3     
            Date de création de l'hôte           XP_PRO     
              
              
         Liste alphabétique des variables et attributs     
              
            #    Variable    Type    Long.     
              
            2    groupe      Num         8     
            1    iden        Alph        8     
            3    polio       Num         8     
              
              
    
  7. SAS et R, bien sûr, sont capables de fournir les modalités des QL en français et en anglais. Pour cela, R utilise les fonctions as.factor() et levels() comme dans l'exemple ci-dessous :

    
              
         # simulation de données     
              
         rep <- rbinom(10,1,0.3)     
         print( rep )     
              
         # conversion en QL     
              
         ql <- as.factor(rep)     
         print( ql )     
              
         # modalités en français     
              
         levels(ql)<- c("non","oui")     
         print( ql )     
              
         # affichage pour vérification du tri à plat     
              
         print( table(ql) )     
              
         # modalités en anglais     
              
         levels(ql)<- c("no","yes")     
         print( ql )     
              
         # affichage pour vérification du tri à plat     
              
         print( table(ql) )     
              
              
    
    
              
         > # simulation de données     
              
         > rep <- rbinom(10,1,0.3)     
         > print( rep )     
          [1] 0 1 0 1 0 0 0 0 0 1     
              
         > # conversion en QL     
              
         > ql <- as.factor(rep)     
         > print( ql )     
          [1] 0 1 0 1 0 0 0 0 0 1     
         Levels: 0 1     
              
         > # modalités en français     
              
         > levels(ql)<- c("non","oui")     
         > print( ql )     
          [1] non oui non oui non non non non non oui     
         Levels: non oui     
              
         > # affichage pour vérification du tri à plat     
         > print( table(ql) )     
         ql     
         non oui     
           7   3     
              
         > # modalités en anglais     
              
         > levels(ql)<- c("no","yes")     
         > print( ql )     
          [1] no  yes no  yes no  no  no  no  no  yes     
         Levels: no yes     
              
         > # affichage pour vérification du tri à plat     
              
         > print( table(ql) )     
         ql     
          no yes     
           7   3     
              
    

    SAS, lui, utilise des labels et des formats ; en voici un exemple :

    
              
         proc format ;     
          value   Esexf_FR  1='Homme' 2='Femme' ;     
          value   Esexf_EN  1='Male'  2='Female' ;     
              
         data ages_FR ;     
              set pathologie ;     
              label AGE = "Age (années)" ;     
              format SEXE Esexf_FR. ;     
              
         data ages_EN ;     
              set pathologie ;     
              label AGE = "Age (years)" ;     
              format SEXE Esexf_EN. ;     
              
              
              
    

    A notre connaissance, seul SAS fournit des versions traduites des calculs, c'est-à dire qu'on a alors moyenne au lieu de mean, écart-type au lieu de standard deviation, etc. Par contre, de nombreux logiciels payants offrent juste des menus dans différentes langues.

  8. SAS et R sont capables de lire des fichiers directement sur le Web. En voici la démonstration pour R :

    
              
         # adresse des données     
              
           url <- "http://www.info.univ-angers.fr/~gh/Datasets/her.dar"     
              
         # lecture des données     
              
           her <- read.table(url,head=TRUE,row.names=1)     
              
         # taille du tableau lu     
              
           cat("On a lu  ",dim(her)[1]," lignes et ",     
               dim(her)[2]," colonnes.\n")     
              
         # pour voir le détail de la connexion, il faut changer     
         # la configuration par défaut :     
              
           options(internet.info=0)     
           her <- read.table(url,head=TRUE,row.names=1)     
           print( warnings() )     
           options(internet.info=2) # valeur par défaut     
              
              
              
    

    et le résultat :

    
              
              On a lu   80  lignes et  14  colonnes.     
              
              Messages d'avis :     
              1: In file(file, "rt") : connexion à 'www.info.univ-angers.fr' sur le port 80.     
              2: In file(file, "rt") : -> GET /~gh/Datasets/her.dar HTTP/1.0     
              Host: www.info.univ-angers.fr     
              Pragma: no-cache     
              User-Agent: R (2.10.1 i486-pc-linux-gnu i486 linux-gnu)     
              
              3: In file(file, "rt") : <- HTTP/1.1 200 OK     
              4: In file(file, "rt") : <- Date: Mon, 09 May 2011 08:50:04 GMT     
              5: In file(file, "rt") : <- Server: Apache/2.2.14 (Ubuntu)     
              6: In file(file, "rt") : <- Last-Modified: Wed, 07 Jan 2009 10:18:11 GMT     
              7: In file(file, "rt") : <- ETag: "12196-2972-45fe1d748dec0"     
              8: In file(file, "rt") : <- Accept-Ranges: bytes     
              9: In file(file, "rt") : <- Content-Length: 10610     
              10: In file(file, "rt") : <- Connection: close     
              11: In file(file, "rt") : <- Content-Type: text/plain     
              12: In file(file, "rt") : <- X-Pad: avoid browser bug     
              13: In file(file, "rt") : Code 200, content-type 'text/plain'     
              
              
    

    De même, voici une lecture à distance en SAS :

    
              
         filename herweb     
           url 'http://www.info.univ-angers.fr/pub/gh/Datasets/her.dar' ;     
         run ;     
              
         data her ;     
              infile herweb firstobs=2 ;     
              input IDEN $   SEXE    AGE     TAILLE    POIDS     
                    TTAILLE  POULS   SYS     DIA       CHOL     
                    IMC      JMBG    COUD    POIGN     BRAS  ;     
              
         proc contents data=her ;     
              
              
    

    Nous fournissons ici le fichier "log" de l'éxécution :

    
              
         Le Système SAS                13:14 Tuesday, May 5, 2009     
              
         NOTE: Copyright (c) 2002-2003 by SAS Institute Inc., Cary, NC, USA.     
         NOTE: SAS (r) 9.1 (TS1M3)     
               Licensed to UNIV RENNES I LICENCE ENSEIGNEMENT PACK STANDARD, Site 0086442005.     
         NOTE: La session est exécutée sur la plate-forme XP_PRO .     
              
              
              
         NOTE: SAS 9.1.3 Service Pack 4     
              
         NOTE: L'initialisation de SAS a utilisé :     
               temps réel                   0.25 secondes     
               temps processeur   0.28 secondes     
              
         1          filename herweb     
         2            url 'http://www.info.univ-angers.fr/~gh/Datasets/her.dar' ;     
         3          run ;     
         4     
         5          data her ;     
         6               infile herweb firstobs=2 ;     
         7               input IDEN $   SEXE    AGE     TAILLE    POIDS     
         8                     TTAILLE  POULS   SYS     DIA       CHOL     
         9                     IMC      JMBG    COUD    POIGN     BRAS  ;     
         10     
              
         NOTE: L'infile HERWEB est :     
               Filename=http://www.info.univ-angers.fr/~gh/Datasets/her.dar,     
               Local Host Name=gh-xp,     
               Local Host IP addr=192.168.158.129,     
               Service Hostname Name=pegase.info.univ-angers.fr,     
               Service IP addr=193.49.146.124,     
               Service Name=httpd,Service Portno=80,Lrecl=256,     
               Recfm=Variable     
              
         NOTE: 80 enregistrements lus dans infile HERWEB.     
               La longueur min. de l'enregistrement était 130.     
               La longueur max. de l'enregistrement était 130.     
         NOTE: La table WORK.HER a 80 observations et 15 variables.     
         NOTE: L'étape DATA a utilisé (Durée totale du processus) :     
               temps réel                   0.04 secondes     
               temps processeur   0.04 secondes     
              
              
         11         proc contents data=her ;     
         12     
         NOTE: La procédure CONTENTS a imprimé la page 1.     
         NOTE: La procédure CONTENTS a utilisé (Durée totale du processus) :     
               temps réel                   0.04 secondes     
               temps processeur   0.04 secondes     
              
              
         NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414     
         NOTE: Le Système SAS a utilisé :     
               temps réel                   0.42 secondes     
               temps processeur   0.38 secondes     
              
              
    

    et le fichier des résultats :

    
              
          Le Système SAS            13:14 Tuesday, May 5, 2009   1     
              
          La procédure CONTENTS     
              
          Nom de la table SAS     WORK.HER                      Observations             80     
          Type d'entrée           DATA                          Variables                15     
          Moteur                  V9                            Index                    0     
          Créé(e)                 mardi 05 mai 2009 13 h 14     Longueur d'observation   120     
          Dernière modification   mardi 05 mai 2009 13 h 14     Observations supprimées  0     
          Protection                                            Compressé(e)             NON     
          Type de table                                         Trié(e)                  NON     
          Libellé     
          Représentation données  WINDOWS_32     
          Codage                  wlatin1  Western (Windows)     
              
              
          Informations propres à l'hôte/au moteur     
              
          Taille de page pour la table         12288     
          Nombre de pages pour la table        1     
          Première page de données             1     
          Nb max. d'obs. par page              102     
          Obs. dans première page de données   80     
          Nombre de corrections dans la table  0     
          Nom de fichier                       F:\Tmp\_TD1048\her.sas7bdat     
          Date de création de la version       9.0101M3     
          Date de création de l'hôte           XP_PRO     
              
              
          Liste alphabétique des variables et attributs     
              
             #    Variable    Type    Long.     
              
             3    AGE         Num         8     
            15    BRAS        Num         8     
            10    CHOL        Num         8     
            13    COUD        Num         8     
             9    DIA         Num         8     
             1    IDEN        Alph        8     
            11    IMC         Num         8     
            12    JMBG        Num         8     
             5    POIDS       Num         8     
            14    POIGN       Num         8     
             7    POULS       Num         8     
             2    SEXE        Num         8     
             8    SYS         Num         8     
             4    TAILLE      Num         8     
             6    TTAILLE     Num         8     
              
              
    
  9. Statistica est assez avancé en matière de rapport, avec une extension nommée STR du format RTF (Rich Text Format, fichiers .rtf) de Microsoft. Spss sait aussi exporter les résultats en RTF, HTML et PPT. Le logiciel R peut interfacer Word via et LaTeX via MarkDown. R sait exporter vers LaTeX.

    Le logiciel le plus avancé en la matière est SAS qui, via son "système" ODS, permet la production totalement automatique de tous types de documents (y compris LaTeX) et de rapports sophistiqués. Voici un exemple de FAQ française sur ODS.

    SAS a depuis longtemps intégré l'export de chaque résultat sous forme de tabelau exploitable (souvent via le paramètre out=) mais avec ODS précédemment cité, tous les résultats sont accessibles, en tout ou partie, directement exploitables en SAS. Statistica, quant à lui, permet d'exporter chaque tableau de résultats comme fichier de données. Enfin, R a des formats d'exportation pour les résultats qui sont en fait des objets, ce qui est à la fois plus général que SAS (qui n'utilise que des tableaux de résultats) mais aussi plus contraignant (car les formats de sortie ne sont pas uniformes).

    A notre connaissance et à ce jour (mai 2010), seul R sait tracer les figures de Chernhoff, massues, haricots et autres violons. La preuve ici et pour les visages de Chernoff, utiliser les fonctions faces et faces2 du package TeachingDemos.

  10. R n'est pas vraiment un concurrent pour les autres logiciels statistiques, mais plutôt un complément lorsque le logiciel de base ne convient pas. Les logiciels classiques, qui ont pignon sur rue ont des procédures d'installation détaillées, des offres de formation, des standards téléphoniques de dépannage, alors que pour R il faut tout faire seul(e) en lisant les documentations trouvées sur le Web.

    R est suffisamment complet ET gratuit pour que les autres grands logiciels statistiques aient décider de proposer en 2009 une interface de dialogue avec R intégrée dans leurs logiciels. Ainsi Statistica fournit une «solution» pour utiliser R. Pages principales d'explications ici (en français) et (en anglais). De même, Sas sait utiliser les fonctions de R. Voir par exemple la page Rinterface ou la page 2 du fichier statr.pdf. Pour mémoire, il est possible d'utiliser R dans Excel via Rexcel. Une vidéo de démonstration est et il y a même un livre consacré à cela : R through Excel. Enfin, SPSS 17 «supporte» le langage Python et R.

    Il existe plusieurs interfaces avec des menus pour R dont voici une sélection :

    rattle rattle
    rkward rkward
    R commander R commander

    Si ces interfaces sont simples à installer et à utiliser pour une utilisation ponctuelle, elles ne permettent pas de profiter de toute la puissance et de toute la finesse de R. En particulier pour des articles de recherche ou pour un mémoire de thèse, il est souvent nécessaire de « peaufiner » les graphiques et seule l'utilisation de la ligne de commande permet de bien spécifier les options graphiques.

    De même, si l'on doit effectuer plusieurs séries de calculs, la ligne de commande est beaucoup plus économique et dispense de cliquer sans arrêt. Il suffit d'écrire une fonction et de passer en paramètre le nom des variables ou des fichiers de données pour automatiser la répétition des calculs...

    C'est pourquoi l'un des meilleures interfaces selon nous est celle de Rstudio, téléchargeable à l'adresse

    http://www.rstudio.org/

    Rstudio propose en particulier une instruction View(data) qui permet de visualiser les données, Rstudio a divers onglets pour voir et revoir les pages d'aides consultées, les graphiques tracés, les variables présentes en mémoire... Les diverses copies d'écran donnent une idée générale de tout le bien qu'on peut en attendre. Enfin, le site http://support.rstudio.org/ fournit un forum de discussion et une base de connaissances sur Rstudio et R.

  11. Dans nos cours d'initiation R et/ou d'introduction à R.

    Une bonne documentation avec des copies d'écran détaillées dans une page Web est à l'adresse introRcmdr.html et un "bon" fichier PDF pour Rcmdr est à l'adresse Gaudron-GuideRcmdr.pdf( copie locale ici).

  12. Ici, bien sûr, à l'adresse edaData.zip. On retrouvera pour Statbox les calculs, les graphiques, pour SPSS les fichiers de données convertis (fichiers .SAV) et les fichiers de résultats (fichiers .SPV), de même que les fichiers de données convertis pour Statistica (fichiers .STA) et les fichiers de résultats des analyses (fichiers .STW). Enfin, pour SAS, on y trouvera les programmes (fichiers .SAS), leur "log" (fichiers .LOG) et leurs résultats (fichiers .LST). Bonne lecture !

    Voici un tableau des exercices traités avec un lien cliquable pour retrouver l'énoncé. Le fichier _a_lire.txt présent également dans l'archive, détaille le type de calcul effectué et liste les extensions de fichiers liés aux logiciels.

    Séance 1 Séance 2 Séance 3 Séance 4 Séance 5
    s1e04 (variance)
    s1e05 (pathologie)
    s1e06 (binomiale)
    s2e06 (ic prop)
     
     
    s3e04 (souris)
     
     
    s4e05 (filles)
    s4e06 (antibio)
    s4e08 (polio)
    s5e06 (400 000 lignes)
    s5e07 (en/fr)
    s5e08 (fichiers web)

 

 

retour gH    Retour à la page principale de   (gH)