Valid XHTML     Valid CSS2    

Mathématiques Finances Economie : Logiciels statistiques

Cours 1

 

Table des matières cliquable

  1. Qu'est-ce qu'une analyse statistique ?

  2. Les divers types de données

  3. Les formats de fichiers

  4. Utilisation élémentaire de R

  5. Lecture de données en R

1. Qu'est-ce qu'une analyse statistique ?

Une étude statistique, c'est d'abord l'étude de données en vue de la résolution d'un problème, qu'il s'agisse de synthétiser de nombreux chiffres, de modéliser en vue d'expliquer ou de prédire des phénomènes. Le point de départ est bien sûr des données, qu'il s'agisse de l'ensemble de la population ou seulement d'un échantillon. Après une vérification élémentaire des données (ce qui oblige à connaitre et comprendre, au moins globalement, les codes et les unités utilisées) à l'aide d'indicateurs comme le minimum et le maximum ou la liste des valeurs distinctes, il faut souvent suivre un plan d'étude statistique défini à l'avance.

Si on ne s'intéresse qu'à la description des données, des tableaux résumés et des graphiques bien choisis doivent être accompagnés d'une rédaction soignée, précise, qui sépare les résultats objectifs («5 % de chomeurs en plus») des commentaires subjectifs («ce qui est très peu») et des hypothèses d'interprétation («sans doute à cause du fort taux de renouvellement des contrats de maintenance»). Par contre, dans le cas de statistiques inférentielles, un test ne devra être utilisé qu'après avoir montré que ses conditions d'applications sont vérifiées, il faudra préciser la probabilité critique (p-value) utilisée, etc. En cas de modélisation, il faudra justifier le choix des variables, détailler les coefficients du modèle, donner leur p-value...

La rédaction pour un article de vulgarisation ou de recherche est en général tout aussi exigeante que la rédaction d'un simple rapport d'étude statistique. Par contre elle est plus subtile par ce que plus concise et plus orientée vers un public ciblé. Le choix des adjectifs, des qualificatifs y est très important.

La réalisation et la rédaction d'une analyse statistique mettent en jeux deux domaines de compétence :

  • le calcul statistique avec ses méthodes, ses modèles, ses termes techniques et ses formules, leurs conditions d'applications, l'utilisation des logiciels ad hoc, les conclusions mathématiques licites auxquelles elles aboutissent ;

  • l'écriture du rapport d'analyse via la présentation du protocole et des données (voire des hypothèses sous-jacentes), la mise en forme de tout ou partie des résultats et la rédaction des conclusions, interprétations et commentaires pour les spécialistes du domaine, pour l'équipe de recherche ou pour le grand public.

Une analyse statistique ne se réduit donc pas à une suite de calculs, même justes et justifiés. La rédaction est un art difficile. Elle est souvent bâclée par les [pseudo]scientifiques qui confondent phrases, littérature, verbiage et production littéraire. Or, la qualité d'un article de recherche, d'un rapport d'expérimentation transparait au fil des paragraphes. Le choix des termes employés renforce chez le lecteur ou le correcteur la conviction que le travail fait a été bien fait, que les méthodes statistiques sont maitrisées, que le passage des chiffres (comme m = 12.3 jours) aux lettres ("une durée moyenne aussi faible qu'à l'habitude") est le fruit d'un mûre réflexion...

2. Les divers types de données

On distingue traditionnellement les variables à codes (ou QL) des variables à unités (ou QT). Pour les premières, seuls les comptages simples ou croisés sont autorisés. Pour les secondes, en fonction de la sommabilité des unités, on effectue soit des calculs simples de médiane, quartile, quantile ou des calculs plus compliqués de moyennes, écart-types, coefficient de variation... Enfin, des variables textuelles (ou QX) comme des listes de mots ou de phrases sont également envisageables mais demandent en général des pré-traitements linguistiques.

L'usage veut qu'on nomme QUANTITATIVE une variable à unités et QUALITATIVE une variable à code, avec des qualificatifs comme semi-quantitative, quantitative continue, quantitative discrète, quantitative-intervalle, quantitative rapport, qualitative nominale, qualitative ordinale... Pour plus de détails, consulter ma page sur les variables statistiques.

Attention aux données : un pays comme RDA, une unité comme le franc indiquent que les données datent. Il n'est peut-être pas conseillé de les utiliser pour une description actuelle...

Certains logiciels détectent les QT et les QL par le type des données lues : une variable numérique est alors forcément QT et une variable caractère est QL. Si ce n'est pas le bon type, il faut utiliser des ordres comme LABEL, des fonctions comme as.factor()... Par contre à notre connaissance aucun logiciel ne demande de spécifier les unités, sans doute parce que souvent les gens ne les connaissent pas et parce que certains calculs utilisent d'autres unités : la moyenne d'un poids exprimé en kg est aussi en kg alors que sa variance est en kg au carré (!) et son coefficient de variation en %. Ce serait pourtant bien utile, pour éviter d'additionner des moyennes et des variances, pour ne pas calculer des moyennes de codes numériques, etc. Excel, qui n'est pas un logiciel de statistiques, ne connait rien : ni QT, ni QL et ne teste rien !

3. Les formats de fichiers

On peut utiliser de simples fichiers textes, bien cadrés ou seulement délimités par des virgules ou des points virgules mais rien n'interdit d'avoir saisi et géré les données avec un tableur ou un autre logiciel. Il faut en général avoir visualisé (c'est-à-dire parcouru sans avoir édité) le fichier des données avant de lancer une commande de lecture ou d'import, car la première ligne de données est parfois une ligne de données et d'autres fois la liste des variables. De même la première colonne de données est parfois un identifiant et d'autres fois non. On a alors intérêt à créer un identifiant basé sur le numéro des lignes si on doit trier les données...

Les logiciels statistiques ont en général une extension dédiée, parfois propriétaire, comme les extensions .sav pour SPSS, .sasb7dat pour SAS, .sta pour STATISTICA, .Rdata pour R. Une conséquence pratique est qu'il est parfois impossible d'ouvrir un jeu de données sans avoir le logiciel, ce qui pose souci en cas de logiciel payant...

Par contre, pratiquement tous les logiciels statistiques savent lire des fichiers textes, des fichiers Excel, des fichier Dbase et savoir importer et exporter vers ces formats en plus des formats propriétaires est très utile, voire quasi obligatoire.

Dans le cas de fichier-textes, nous conseillons de mettre comme extension .dat tout fichier de données dont la première ligne n'est pas la liste des variables, et de mettre comme extension .dar tout fichier de données dont la première ligne donne le nom des variables et dont la première colonne est un identifiant de ligne. Voici ce que cela donne en pratique :

Un exemple de fichier .dat


        7069      3786   12578    8037   13556    9664   10386    206
        2436       586    2006      30    1217     471     997     51
        3066       290   10439    1413    7214     112    3788    330
        2422      1999   17183      57    1127     600     408    241
       22986     22183   21023      56   30025    6544   13114   3447
       17465     19840   72977    2364   39919   17327   17487   2346
     ...
     

Un exemple de fichier .dar


     VIN  BELGIQUE NEDERLAND     RFA  ITALIE      UK  SUISSE     USA CANADA
     CHMP     7069      3786   12578    8037   13556    9664   10386    206
     MOS1     2436       586    2006      30    1217     471     997     51
     MOS2     3066       290   10439    1413    7214     112    3788    330
     ALSA     2422      1999   17183      57    1127     600     408    241
     GIRO    22986     22183   21023      56   30025    6544   13114   3447
     BOJO    17465     19840   72977    2364   39919   17327   17487   2346
     ...
     

Un exemple de fichier avec identifiant explicite


     IDEN  VIN  BELGIQUE NEDERLAND     RFA  ITALIE      UK  SUISSE     USA CANADA
     V0001 CHMP     7069      3786   12578    8037   13556    9664   10386    206
     V0002 MOS1     2436       586    2006      30    1217     471     997     51
     V0003 MOS2     3066       290   10439    1413    7214     112    3788    330
     V0004 ALSA     2422      1999   17183      57    1127     600     408    241
     V0005 GIRO    22986     22183   21023      56   30025    6544   13114   3447
     V0006 BOJO    17465     19840   72977    2364   39919   17327   17487   2346
     ...
     

Un exemple de fichier .csv (le séparateur est le point-virgule)


     IDEN ; VIN ; BELGIQUE ; NEDERLAND ; RFA ; ITALIE ; UK ; SUISSE ; USA ; CANADA
     V0001 ; CHMP ; 7069 ; 3786 ; 12578 ; 8037 ; 13556 ; 9664 ; 10386 ; 206
     V0002 ; MOS1 ; 2436 ; 586 ; 2006 ; 30 ; 1217 ; 471 ; 997 ; 51
     V0003 ; MOS2 ; 3066 ; 290 ; 10439 ; 1413 ; 7214 ; 112 ; 3788 ; 330
     V0004 ; ALSA ; 2422 ; 1999 ; 17183 ; 57 ; 1127 ; 600 ; 408 ; 241
     V0005 ; GIRO ; 22986 ; 22183 ; 21023 ; 56 ; 30025 ; 6544 ; 13114 ; 3447
     V0006 ; BOJO ; 17465 ; 19840 ; 72977 ; 2364 ; 39919 ; 17327 ; 17487 ; 2346
     ...
     

4. Utilisation élémentaire de R

R s'utilise principalement en ligne de commande (au clavier ou par redirection) mais il existe aussi des interfaces avec des menus et des boutons. Nous utiliserons la ligne de commande afin de ne pas dépendre du système d'exploitation. Ecrire x <- calcul effectue le calcul et stocke le résultat dans la variable x. Les variables peuvent être des scalaires (une seule valeur), un vecteur (plusieurs valeurs de même type), une matrice (plusieurs vecteurs de même dimension et de même type ), une liste (ensemble de diverses variables nommées), un cadre de données ou data frame (plusieurs vecteurs de même dimension et mais pouvant être de type différent).

Tout ce qui suit le symbole dièse (#) est un commentaire et est ignoré par R, ce qui est bien pratique pour expliquer et se relire.

De nombreuses fonctions s'appliquent tout autant à un scalaire qu'à un vecteur qu'à une matrice (via apply) et même à une liste (via lapply). On peut construire des vecteurs avec l'opérateur de séquence : (le symbole deux points) et la fonction collect qui s'écrit c(). Voici quelques exemples à copier/coller :


          x <- 5.8
          y <- 1:10
          z <- y**1/2
          print(x)
          round(x)
          round(z)
          c( mean(z), sd(z) )
          troisval  <- c(1,12,24)
          attention <- c(1,2,"a")
          plot( y, z)
          plot( y, z, pch=19, col="red", main="un essai" )
     
          fausseQT <- c(0,0,1,0,1,0)
          mean(fausseQT)                     # stupide !
          vraieQL <- as.factor( fausseQT )
          levels(vraieQL) <- c("oui","non")
          mean( vraieQL )                    # ah, quand même !
          table( vraieQL )                   # cela se nomme <<tri à plat>>
     
     

Pour apprendre R, il suffit donc de s'entrainer à utiiser les différentes commandes, comprendre comment fonctionne le système d'aide, lire les programmes des autres... Les liens fournis à la fin de notre page tuteur R devraient constituer un bon point de départ. Sous R, l'aide s'obtient avec la fonction help() qui affiche en ligne des explications, avec example() qui montre l'utilisation standard de la fonction, ainsi que help.start() et help.search() qui utilisent le navigateur web par défaut pour afficher l'aide :


     >help(mean)
     
     mean                   package:base                    R Documentation
     
     Arithmetic Mean
     
     Description:
     
          Generic function for the (trimmed) arithmetic mean.
     
     Usage:
     
          mean(x, ...)
     
          ## Default S3 method:
          mean(x, trim = 0, na.rm = FALSE, ...)
     
     Arguments:
     
            x: An R object.  Currently there are methods for numeric/logical
               vectors and date, date-time and time interval objects, and
               for data frames all of whose columns have a method.  Complex
               vectors are allowed for 'trim = 0', only.
     
         trim: the fraction (0 to 0.5) of observations to be trimmed from
               each end of 'x' before the mean is computed.  Values of trim
               outside that range are taken as the nearest endpoint.
     
        na.rm: a logical value indicating whether 'NA' values should be
               stripped before the computation proceeds.
     
          ...: further arguments passed to or from other methods.
     
     Value:
     
          For a data frame, a named vector with the appropriate method being
          applied column by column.
     
          If 'trim' is zero (the default), the arithmetic mean of the values
          in 'x' is computed, as a numeric or complex vector of length one.
          If 'x' is not logical (coerced to numeric), numeric (including
          integer) or complex, 'NA' is returned, with a warning.
     
          If 'trim' is non-zero, a symmetrically trimmed mean is computed
          with a fraction of 'trim' observations deleted from each end
          before the mean is computed.
     
     References:
     
          Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
          Language_.  Wadsworth & Brooks/Cole.
     
     See Also:
     
          'weighted.mean', 'mean.POSIXct', 'colMeans' for row and column
          means.
     
     Examples:
        x <- c(0:10, 50)
        xm <- mean(x)
        c(xm, mean(x, trim = 0.10))
        mean(USArrests, trim = 0.2)
     
     > example(mean)
     
        mean> x <- c(0:10, 50)
        mean> xm <- mean(x)
        mean> c(xm, mean(x, trim = 0.10))
        [1] 8.75 5.50
        mean> mean(USArrests, trim = 0.2)
          Murder  Assault UrbanPop     Rape
            7.42   167.60    66.20    20.16
     
     

Si on tape le début d'une fonction, la touche TABulation complète soit avec les noms de fonctions possibles, soit avec les paramètres si on a mis la parenthèse, comme ci-dessous :


     
     >plotTOUCHE_TABULATION (sans parenthèse)
      plot                 plot.design          plot.mlm             plot.spec.coherency  plot.ts              plot.xy
      plot.default         plot.ecdf            plot.new             plot.spec.phase      plot.TukeyHSD
      plot.density         plot.lm              plot.spec            plot.stepfun         plot.window
     
     
     > plot(TOUCHE-TABULATION (juste après la parenthèse ouvrante qui suit le "t de plot)
      ...=               cex.points=        cook.levels=       label.pos=         mar.multi=         range.bars=        xval=
      absVal=            ci=                data=              labels=            max.mfrow=         separator=         xy.labels=
      add=               ci.col=            density=           labels.id=         mgp=               set.pars=          xy.lines=
      add.smooth=        ci.lty=            dLeaf=             leaflab=           nc=                sub=               y=
      angle=             ci.type=           do.points=         legend.text=       nodePar=           sub.caption=       yax.flip=
      ann=               col=               edgePar=           levels=            oma=               subset=            yaxt=
      ask=               col.01line=        edge.root=         log=               oma.multi=         type=              ylab=
      asp=               col.hor=           formula=           lty=               panel=             verbose=           ylim=
      axes=              col.intervals=     frame.plot=        lty.intervals=     panel.first=       verticals=         zero.line=
      border=            col.points=        freq=              lty.predicted=     panel.last=        which=
      caption=           col.predicted=     grid=              lty.separator=     par.fit=           x=
      center=            col.range=         hang=              lwd=               pch=               xaxt=
      cex.caption=       col.separator=     horiz=             main=              plot.type=         xlab=
      cex.id=            col.vert=          id.n=              main2=             predicted.values=  xlim=
      cex.main=          conf=              intervals=         mar=               qqline=            xpd=
     
     

5. Lecture de données en R

R dispose de nombreuses fonctions pour lire les fichiers :


     read.csv        read.dcf        read.delim2     read.fortran    read.fwf        read.table
     read.csv2       read.delim      read.DIF        read.ftable     read.socket     read.table.url
     
     read.xls # dans le package gdata
     

Nous conseillons surtout d'utiliser read.table et read.xls dans un premier temps ; pour nos fichiers avec l'extension .dar, nous avons créé la fonction lit.dar() dans statgh.r.

Si vous avez un accès à Internet, R peut lire les fichiers à distance, comme sur ces exemples avec notre dossier VINS :


       urldata  <- "http://forge.info.univ-angers.fr/~gh/Datasets/vins.dar"
       vinsdata <- read.table(urldata,head=TRUE,row.names=1)
     
     
       source("http://www.info.univ-angers.fr/~gh/statgh.r")
       vins <- lit.dar("http://www.info.univ-angers.fr/~gh/Datasets/vins.dar")
     
     

 

          retour au plan de cours

 

 

retour gH    Retour à la page principale de   (gH)