Aperçu des sections

  • Généralités

    L’objectif de ce cours est de présenter comment réaliser des analyses statistiques et diverses opérations courantes (comme la manipulation des données, la production des graphiques et la programmation) avec le logiciel R. Il ne s’agit pas d’un cours de statistiques: les différentes parties du cours présupposent donc que vous avez déjà une connaissance des différentes techniques présentées (les étudiants doivent avoir des connaissances théoriques et méthodologiques en statistiques).

  • R Langage de programmation

    Description

    R est un langage de programmation destiné aux statistiques et à la science des données soutenu par la R Foundation for Statistical Computing. R fait partie de la liste des paquets GNU (GNU's not Unix - GNU n'est pas Unix, crée le 27 septembre 1983 par Richard Stallman).

    Date de première version : 1993

    Dernière version : R version 4.0.0 (2020-03-24)

    Développeurs : R Core Team

    Conçu Par : Ross Ihaka, Robert Gentleman    https://www.r-project.org

     

    Avantage de l’utilisation de R:

     

    •  Logiciel multiplateforme (fonctionne sur différent sytèmes : Linux, Mac OSX  et Windows).
    • Logiciel libre, développé par des utilisateurs pour les utilisateurs.
    • Logiciel gratuit.
    • Logiciel très puissant (avec des fonctionnalités de base peuvent être étendues à l’aide de plusieurs milliers d’extensions).
    • Logiciel dont le développement est très actif et dont la communauté d’utilisateurs ne cesse de s’élargir.
    • les possibilités de manipulation de données sous R sont en général largement supérieures à celles des autres logiciels usuels d’analyse statistique.
    • Logiciel avec d’excellentes capacités graphiques et de nombreuses possibilités d’export.
    • R est de plus utilisé dans tous les secteurs scientifiques.

     

    Inconvénients :

     

    • le logiciel, la documentation de référence et les principales ressources sont en anglais
    • R s’apparente davantage à un langage de programmation qu’à un logiciel proprement dit.

     

    • Partie 1. Notions de base sur R

      Dans cette partie du cours nous allons aborder les principes de bases à connaitre (installer le logiciel R, installer et utiliser des packages, charger des données)

       1.1 Installation du logiciel R

      Pour une installation sous Windows, on se rendra sur cette page :

      http://cran.r-project.org/bin/windows/base  (Figure 01) et l’on suivra le premier lien pour télécharger le programme d’installation. Une fois le programme d’installation lancé, il suffira d’installer R avec les options par défaut.

      Figure 01: Lien pour télécharger le programme d’installation R

       1.2 Mise à jour de R sous Windows

      Pour mettre à jour R sous Windows, il suffit de télécharger et d’installer la dernière version du programme d’installation. Petite particularité, la nouvelle version sera installée à côté de l’ancienne version. Si vous souhaitez faire de la place sur votre disque dur, vous pouvez désinstaller l’ancienne version en utilisant l’utilitaire Désinstaller un programme de Windows.

       1.3 L’invite de commandes

      Au démarrage, la console contient un petit texte de bienvenue ressemblant à peu près à ce qui suit :

      suivi d’une ligne commençant par le caractère (>) et sur laquelle devrait se trouver votre curseur. Cette ligne est appelée l’invite de commande (ou prompt en anglais). Elle signifie que R est disponible et en attente de votre prochaine commande.

       1.4 Les packages R

       Les packages sont des collections de fonctions R. Le répertoire où les packages sont stockés est appelée library. R est livré avec un ensemble standard de packages. D'autres sont disponibles pour le téléchargement et l'installation. Une fois installés, ils doivent être chargés dans la session pour être utilisés.

       1.4.1 Installer un Package :

       install.packages("Ade4") # Pour installer un package (exemple du package « Ade4 »)

      .libPaths() # Pour obtenir la location de la library contenant les packages installées

      library()   # Pour voir tous les packages installés

      search()    # Pour voir les packages couramment chargés

       1.4.2. Charger un package:

      library("Ade4") # pour charger le package «Ade4 »


      1.4.3. Pour mettre à jour les packages:

      update.packages("Ade4")    # pour mettre à jour le package «Ade4 »

      update.packages(ask = FALSE)   # pour mettre à jour tous les packages  
       

      1.5. Changer le répertoire de travail

       setwd("C:/Users/b/Desktop/Stat-R/data ")  #cette commande permet de changer le répertoire de travail par défaut ("C:\Program Files\R\R-3.6.1" à "C:/Users/b/Desktop/Stat-R/data ")

       1.6. Vérification du répertoire de travail

       getwd()  # Vérification du répertoire de travail (Get Working Directory)

      1.7 Aide en ligne
      R dispose d’une aide en ligne très complète, mais dont l’usage n’est pas forcément très simple. D’une part car elle est intégralement en anglais, d’autre part car son organisation prend un certain temps à être maîtrisée.

      1.7.1 Aide sur une fonction
      La fonction la plus utile est sans doute help (ou son équivalent ? ) qui permet d’afficher la page d’aide

      liée à une ou plusieurs fonctions. Pour accéder à l’aide de la fonction mean , par exemple, il vous suffit de saisir directement :
      ?mean
      ou bien
      help("mean")

      1.7.2 Naviguer dans l’aide
      help.start()     #permet d’afficher le sommaire de l’aide en ligne

      help.search("mean")  # renvoie une liste des pages d’aide contenant les termes «mean »
      ou
      ?? mean   #renvoie une liste des pages d’aide contenant les termes

       

      • Partie 2: Importation des données

        2.1Types élémentaires de R

         • Numeric qui peut être entier (integer) ou double (double). Les opérateurs applicables
        sont : + , - , * , / , ^ , %% (modulo) , %/% (division entière)


        Exemple: 7 / 2 → 3.5 (division entre valeurs réelles) ; en revanche 7 %/% 2 → 3 (division
        entière)


        Logical correspond au type booléen, il prend deux valeurs possibles TRUE et FALSE
        (en majuscule) que l’on peut abréger avec T et F.

        Les opérateurs sont :

         !   (signifie négation),
        &&   (signifie ET logique),

        ||   (signifie OU logique),

        xor()   (signifie OU exclusif)

        Exemple: !T  résultat = F  

                       xor(T,F) résultat = T

                      T && F résultat = F ….etc.


        Character désigne les chaînes de caractères. Une constante chaîne de caractère
        doit être délimitée par des guillemets (")

        • Remarque : pour connaître la classe d’un objet (le type associé à un objet, on
        utilise la fonction class(nom de l’objet)

        Exemple : class(2020)    résultat="numeric"

                         class("Bioinformatique ") résultat= "character"

         

        2.2 Sous forme de vecteurs

         L’unité de base en R est le vecteur.

        vecteurA <-c(13,27,21,22,31,11,14,18,13,9,19,16)  # “c” = fonction qui combine les arguments pour former un vecteur.

         vecteurB <-c(11,12,11,13,9,17,15,22,24,13,13,15)

         Notez :   les données sont séparées par des virgules;  les notations décimales se font “à l’anglaise”, par des points.

         

        append (vecteurA, vecteurB)  # Concatène les vecteurs = [1] 13 27 21 22 31 11 14 18 13  9 19 16 11 12 11 13  9 17 15 22 24 13 13 15

        vecteurtotal <-c(append(vecteurA, vecteurB))  # Utilise append pour former un nouveau vecteur 

        vecteurtotal # le résultat=  [1] 13 27 21 22 31 11 14 18 13  9 19 16 11 12 11 13  9 17 15 22 24 13 13 15

        vecteursomme <-c(vecteurA + vecteurB) # Additionne les vecteurs terme à terme

        vecteursomme   # le résultat= [1] 24 39 32 35 40 28 29 40 37 22 32 31

        La notation vectorielle peut aussi s’appliquer à des données catégorielles

         lapins <-c("gris", "noires", "sauvages") # Mettre les noms entre guillemets dactylos et la commande  names peut servir à utiliser ces données comme ”ètiquettes”

         testlapins <-c (33, 40, 15)

        names (lapins) <- testlapins

        lapins

                33         40         15 

              "gris"   "noires" "sauvages"

         Manipulation de vecteurs

        #Génération de suites de nombres :
        seq(1, 9, by = 2)   # le résultat =   [1] 1 3 5 7 9

        #Pour générer la suite des nombres de 1 à la valeur de l’argument :
        seq_len(10)        # le résultat =      [1] 1 2 3 4 5 6 7 8 9 10

        #Répétition de valeurs ou de vecteurs :
        rep(2, 10)                  # le résultat =   [1] 2 2 2 2 2 2 2 2 2 2

        #Tri en ordre croissant ou décroissant :
        sort(c(4, -1, 2, 6))     # le résultat =      [1] -1 2 4 6

        #Rang des éléments d’un vecteur dans l’ordre croissant ou décroissant :

        rank(c(4, -1, 2, 6))    # le résultat  =      [1] 3 1 2 4

        #Ordre d’extraction des éléments d’un vecteur pour les placer en ordre croissant ou décroissant :

        order(c(4, -1, 2, 6))  # le résultat  =   [1] 2 3 1 4

        #Renverser un vecteur :
        rev(1:10)               # le résultat  =      [1] 10 9 8 7 6 5 4 3 2 1

        #Premiers éléments d’un vecteur (n > 0) ou suppression des n derniers (n < 0) :
        head(1:10, 3)         # le résultat  =      [1] 1 2 3

        head(1:10, -3)        # le résultat  =      [1] 1 2 3 4 5 6 7

        #Tail extraction des n derniers éléments d’un vecteur (n > 0) ou suppression des n premiers (n < 0) :
         tail(1:10, 3)            # le résultat  =     [1] 8 9 10

         tail(1:10, -3)          # le résultat  =      [1] 4 5 6 7 8 9 10

        #Unique extraction des éléments différents d’un vecteur :
        unique(c(2, 4, 2, 5, 9, 5, 0))   # le résultat  =      [1] 2 4 5 9 0

        2.3 Sous forme de matrice 1:

        matrice1 <-matrix (vecteurtotal, ncol = 2, byrow = F)  # deux colonnes ; par ligne = FAUX

        matrice1

        #notez les virgules dans les crochets ; [, n°colonne] ; [n°ligne ,] 

        matrice2 <-matrix (vecteurtotal,ncol = 2, byrow = T)  # deux colonnes ; par ligne = VRAI

        matrice2

         matricesomme <-matrix ((matrice1 + matrice2), ncol=2) ;  matricesomme  # le point virgule sépare deux commandes

                            [,1]        [,2]

                [1,]       26           38         (13 + 13)       (11 + 27)

                [2,]       48           34          (27 + 21)      (12 + 22)

                [3,]       52           22

                       ….etc

        Matricesommeligne1 <-matrix ((matrice1 + matrice2), nrow=2) ;  Matricesommeligne1

          [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10]  [,11]  [,12]

        [1,]   26  52  44  25   22   43   38   22   18   27   41  26

        [2,]   48  36  30  29   24   29   34  31  33  35  35  30

         matricesommeligne2 <-matrix ((matrice1 + matrice2), nrow=2, byrow=T) ;  matricesommeligne2

                 [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]   [,9]  [,10]  [,11]  [,12]

        [1,]    26   48   52   36    44   30  25    29    22    24    43     29

        [2,]    38   34   22   31    18   33   27   35    41    35    26     30

         matricetotal <-matrix (append (matrice1, matrice2), ncol=4) # Utilise  “append” pour former une nouvelle matrice

        matricetotal

                [,1] [,2] [,3]  [,4]

          [1,]  13  11  13  27

          [2,]  27  12  21  22

          [3,]  21  ……etc

         

        #Opérations sur les matrices

        #nombre de lignes et de colonnes d’une matrice :

        nrow(matricetotal); ncol(matricetotal)
        [1] 12

        [1] 4

        # sommes par ligne et par colonne, respectivement :
        rowSums(matricetotal)

         [1] 64 82 74 67 62 63 52 64 63 59 69 59

        colSums(matricetotal)

        [1] 214 175 194 195

        #moyennes par ligne et par colonne, respectivement :
        rowMeans(matricetotal)

         [1] 16.00 20.50 18.50 16.75 15.50 15.75 13.00 16.00 15.75 14.75 17.25 14.75

         colMeans(matricetotal)

        [1] 17.83333 14.58333 16.16667 16.25000

         #Transposée :
        t(matricetotal)
                [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10] [,11] [,12]

        [1,]   13   27   21   22   31   11   14   18   13     9    19    16

        [2,]   11   12   11   13    9   17   15   22   24    13    13    15

        [3,]   13   21   31   14   13   19   11   11    9    15    24    13

        [4,]   27   22   11   18    9   16   12   13   17    22    13    15

         2.4 A partir d’un fichier texte (les fichiers sont disponibles pour le téléchargement en bas de la partie 2) 

        Datamatricetxt<-read.table ("C:/Users/b/Desktop/Stat-R/data/matrice.txt",header = F) # Attention au chemin et au nom de fichier, le tout entre guillemets anglais. Header = F signifie qu’il n’y a pas de noms de colonnes !

        #Remarque: Par défaut “header" est supposé “False”.

        Datamatricetxt

        1      13  11    13    27

        2      27  12    21   22

        3      21  11    31   11

        4      22  13    14   18

        5      31    9    13     9

         Datamatrice1txt <-read.table ("C:/Users/b/Desktop/Stat-R/data/matrice1.txt",header = T)

        Datamatrice1txt

                 Var1   Var2   Var3   Var4

        1       13       11       13      27

        2       27       12       21      22

        3       21       11       31      11

        4       22       13       14      18

        5       31         9       13        9

         

        # S’ils n’existent pas, les titres des colonnes peuvent être créés avec l’option col.names

        Datamatricenc<-read.table ("C:/Users/b/Desktop/Stat-R/data/matrice.txt", col.names = c("Variable1","Variable2","Variable3","Variable4"))

        Datamatricenc

            Variable1  Variable2  Variable3  Variable4

        1       13               11           13            27

        2       27       …..etc

         2.5 A partir d’un fichier Excel :

         #Enregistrer le fichier “Excel” au format .csv (séparateur = point-virgule).

        #Par défaut, “header" est supposé “True”. Le préciser si ce n’est pas le cas !

         DataExcel<-read.csv2("dataexcel.csv")

        DataExcel

        Variable1   Variable2   Variable3   Variable4

        1    13      11      13       27

        2    27      12      21      22

        3    21      11      31      11

        4    22      13      14      18

        5    31    …..etc

        install.packages("readxl")
        library(readxl)
        dataExcel <- read_excel("Flamants.xlsx", 1)            # Ouvrir la feuille n°1 du fichier Excel (.xlsx)

        dataExcel

        # A tibble: 52 x 4
            Aile Tarse Masse Sexe
           <dbl> <dbl> <dbl> <chr>
         1   290   233  2270 F    
         2   254   206  1850 F    
         3   263   222  2200 F    
        # ... with 42 more rows

        dataExcel1 <- read_excel("Flamants.xlsx", sheet = 3)    # Ouvrir la feuille n°2 du fichier Excel (.xlsx)

        dataExcel1
        # A tibble: 6 x 3
           Year Breeding Pairs
          <dbl> <chr>    <dbl>
        1  2006 yes       4700
        2  2007 no           0
        3  2008 no           0

        dataExcel2 <- read_excel("Flamants.xlsx", sheet = "Flamants")  # Ouvrir la feuille n°2 du fichier Excel (.xlsx)

        dataExcel2

        # A tibble: 52 x 4
            Aile Tarse Masse Sexe
           <dbl> <dbl> <dbl> <chr>
         1   290   233  2270 F    
         2   254   206  1850 F    
         3   263   222  2200 F    
         # ... with 42 more rows

      • Partie3. Vérification des données

        ls()  # liste les noms des objets créés dans l’environnement de travail

         3.1- Cas d’un vecteur:

         str(vecteurtotal)  # structure de l’objet et une partie des données.

         num [1:24] 13 27 21 22 31 11 14 18 13 9 ...

         sort(vecteurtotal)  # les données ordonnées

         [1]  9  9 11 11 11 12 13 13 13 13 13 14 15 15 16 17 18 19 21 22 22 24 27 31

         length(vecteurtotal)   # nombre d’éléments (équivalent de “n”)

        [1] 24

         min(vecteurtotal)      # minimum

        [1] 9

         max(vecteurtotal)      # maximum

        [1] 31

         median(vecteurtotal)     # médiane

        [1] 14.5

         mean(vecteurtotal)       # moyenne

        [1] 16.20833

         var(vecteurtotal)      # variance

        [1] 33.04167

         sd(vecteurtotal)       # écart-type

        [1] 5.748188

         sqrt(var(vecteurtotal))     # autre façon d’obtenir la valeur de l’écart-type (« sqrt » racine carrée)

        [1] 5.748188

         sd(vecteurtotal)/sqrt(length(vecteurtotal))   # erreur-type (écart-type sur racine carrée de n)

        [1] 1.173344

         sum(vecteurtotal)    # somme de l’ensemble des valeurs

        [1] 389

         summary (vecteurtotal) # une seule commande (minimum, 1er quartile, médiane, moyenne , 3ème quartile,  maximum)

           Min. 1st Qu.  Median    Mean 3rd Qu.    Max.

           9.00   12.75   14.50   16.21   19.50   31.00

         3.2 Cas d’une matrice:

         str (matricetotal) # sans précision, c’est toute la matrice qui est concernée

        num [1:12, 1:4] 13 27 21 22 31 11 14 18 13 9 ...= [données numériques, 12 lignes, 4 colonnes]

         max (matricetotal)

        [1] 31

         str (matricetotal [, 3])  # nous considérons seulement la colonne 3

        num [1:12] 13 21 31 14 13 19 11 11 9 15 ...

        max (matricetotal [,3])

        [1] 31

         str (matricetotal [9,])  # nous considérons seulement la ligne 9

        num [1:4] 13 24 9 17

         max (matricetotal [9,]) # la valeur maximale de la ligne 9

        [1] 24

         3.3 Cas d’une table:

         str(dataExcel2)

        Classes ‘tbl_df’, ‘tbl’ and 'data.frame':       52 obs. of  4 variables:

         $ Aile : num  290 254 263 302 245 202 291 269 259 288 ...

         $ Tarse: num  233 206 222 234 208 202 234 216 208 228 ...

         $ Masse: num  2270 1850 2200 2270 2300 1900 2050 2300 2250 2250 ...

         $ Sexe : chr  "F" "F" "F" "F" ...

         min (dataExcel2$Aile)  

        [1] 187

         min (dataExcel2$Tarse)

        [1] 202

        min (dataExcel2$Masse)

        [1] 1850

        #On peut simplifier la nomenclature par l’intermédiaire de la fonction attach

        attach(dataExcel2)

        summary(Tarse)    #  le nom de colonne suffit pour l’appel. ATTENTION à ne pas avoir les

        mêmes noms dans plusieurs table “attachées”…

         Min. 1st Qu.  Median    Mean 3rd Qu.    Max.

          202.0   228.0   238.0   238.5   251.5   276.0

        detach(dataExcel2)

         

        • Partie 4: Les Graphiques sous R

          4.1 Les Boites à Moustache (Boxplot) 

          data(OrchardSprays)     # jeu de données « OrchardSprays »

          str(OrchardSprays)

          boxplot(decrease ~ treatment, data = OrchardSprays,log = "y", col="light gray")      # Figure 01

          boxplot(decrease ~ treatment, data = OrchardSprays,log = "y", col="light gray",boxwex=0.5)  # Figure 02

           

          4.2 Les diagrammes en bâton (Barplot)

          data(VADeaths)   # jeu de donnée « VADeaths »

          str(VADeaths)

          barplot(VADeaths[1:2,], angle = c(45, 135),density = 20, col = "gray",names=c("RM", "RF", "UM", "UF"))     #Figure 03

           barplot(VADeaths[1:2,], angle = c(45, 135),density = 20, col = "gray",names=c("RM", "RF", "UM", "UF"),horiz=TRUE)   # Figure 04


           

          4.3 Les Histogrammes

          data(iris)   #Jeu de donnée «iris »

          str(iris)

          attach(iris)

          hist(Petal.Width[Species=="setosa"])                     #Figure 05

          hist(Petal.Width[Species=="setosa"],xlab="Largeur des pétales",ylab="Nombre",main="Histogramme de la largeur des pétales")                        #Figure 06

          hist(Petal.Width[Species=="setosa"],xlab="Largeur des pétales",ylab="Nombre",main="Histogramme de la largeur des pétales", col = "lightblue", lty = 2, lwd = 2, border = "purple") #Figure  07

          4.4 Les diagrammes de corrélation (plot)

          plot(Petal.Width[Species=="setosa"],Petal.Length[Species=="setosa"])    #Figure  08

          reg <- lm(Petal.Length[Species=="setosa"] ~  Petal.Width[Species=="setosa"], data = iris)# Formule de la régression linéaire

          summary(reg)  #Résultat de la régression linéaire

          Call:

          lm(formula = Petal.Length[Species == "setosa"] ~ Petal.Width[Species ==

              "setosa"], data = iris)

           Residuals:

               Min       1Q   Median       3Q      Max

          -0.43686 -0.09151 -0.03686  0.09018  0.46314

           Coefficients:

                                           Estimate Std. Error t value Pr(>|t|)   

          (Intercept)                       1.32756    0.05996  22.141   <2e-16 ***

          Petal.Width[Species == "setosa"]  0.54649    0.22439   2.435   0.0186 * 

          ---

          Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

           Residual standard error: 0.1655 on 48 degrees of freedom

          Multiple R-squared:   0.11,     Adjusted R-squared:  0.09144

          F-statistic: 5.931 on 1 and 48 DF,  p-value: 0.01864

          plot(Petal.Width[Species=="setosa"],Petal.Length[Species=="setosa"],xlab="Largeur des pétales",

          ylab="Longueur des pétales")       #Figure  09

          abline(reg, col = "red")    # Ajoute la droite de régression au plot

          detach(iris)

          4.5 Diagramme circulaire ou en camembert (pie)

           DiagCirc=c(123,110,17,113,216,161,41,121)
          pie(DiagCirc) #  Figure 10

          pie(DiagCirc,clockwise=T)  #  Figure 11
          names(DiagCirc)=LETTERS[1:8] 
          pie(DiagCirc)   #  Figure 12

          pie(DiagCirc,col=rgb(0,0,seq(0,1,l=8)))  #  Figure 13

          pie(DiagCirc,col=rainbow(8))  #  Figure 14

           

          • Partie 5: Les testes statistiques sous R

            5.1 Teste de Student (pour deux moyennes indépendantes)

            Echantillon1=c(19,20,23,15,21,18,17,19,15,25)

            Echantillon2=c(8,9,10,11,11,12,12,13,14,16)

            t.test (Echantillon1, Echantillon2, var.equal = T)

            Two Sample t-test

            data:  Echantillon1 and Echantillon2

            t = 6.0083, df = 18, p-value = 1.108e-05

            alternative hypothesis: true difference in means is not equal to 0

            95 percent confidence interval:

              4.94252 10.25748

            sample estimates:

            mean of x mean of y

                 19.2      11.6

             5.2 Teste de U de Mann-Whitney (Ce test est l’équivalent non-paramétrique du test t)

            wilcox.test (Echantillon1, Echantillon2)

            Wilcoxon rank sum test with continuity correction

            data:  Echantillon1 and Echantillon2

            W = 98, p-value = 0.0003231

            5.3Tests de relation (régression corrélation)

            dataTravail<-read.table("Travail.txt")

            names(dataTravail)<-c('TLots','TTravail')

            TravailReg <- lm (TTravail ~ TLots, dataTravail, dataTravail )

            plot (TravailReg) # # Va produire quatre graphiques successifs (Cf. infra) :

              summary (TravailReg)

             Call:

            lm(formula = TTravail ~ TLots, data = dataTravail)

             Residuals:

                Min      1Q  Median      3Q     Max

            -83.876 -34.088  -5.982  38.826 103.528

             Coefficients:

                        Estimate Std. Error t value Pr(>|t|)   

            (Intercept)   62.366     26.177   2.382   0.0259 * 

            TLots          3.570      0.347  10.290 4.45e-10 ***

            ---

            Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

             Residual standard error: 48.82 on 23 degrees of freedom

            Multiple R-squared:  0.8215,    Adjusted R-squared:  0.8138

            F-statistic: 105.9 on 1 and 23 DF,  p-value: 4.449e-10

             sqrt (0.8215)  #

            [1] 0.9063664

             anova (TravailReg)  #

            Analysis of Variance Table

             Response: TTravail

                      Df Sum Sq Mean Sq F value    Pr(>F)   

            TLots      1 252378  252378  105.88 4.449e-10 ***

            Residuals 23  54825    2384                     

            ---

            Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

            coefficients(TravailReg)  # Coefficients de régression

            (Intercept)       TLots

              62.365859    3.570202

            residuals (TravailReg) # Résidu = écart entre la valeur prédite par le modèle et la valeur réellement observée. On a donc pour chaque observation :

                                                # yi = ŷi + résidu (ŷi = a + bxi)

                       1                            2                          3                          4                       5                        6

             51.0179798 -     48.4719192       -19.8759596     -7.6840404  48.7200000     -52.5779798

                      7                          8                       9                   

            55.2098990   4.0179798       -66.3860606   ....etc

             fitted.values (TravailReg) #   

                   1              2             3             4              5               6      

            347.9820 169.4719 240.8760 383.6840 312.2800 276.5780 …..etc      

            Vous noterez 347.9820 (valeur ajustée [80 * 3,57 + 62,37]) + 51,01 (Résidu) = 399 (Data Tab.)

            df.residual (TravailReg)  #

            [1] 23