You are on page 1of 1817

R

statistical software, one software to Rule them all

Cookbook (niveau M2)


La Bible R en images (et en couleurs...)
Vincent ISOZ, Daname KOLANI
V0.24 Rvision 197 (2017-10-23), {oUUID 1.851}

R you ready?
Vincent ISOZ, Daname KOLANI Sciences.ch

Table des matires


Table des matires ............................................................................................... 1
1. Introduction ................................................................................................... 16
propos des rdacteurs............................................................................................. 19
ISOZ Vincent .................................................................................................................... 19
KOLANI Daname ............................................................................................................. 20
Avertissements .......................................................................................................... 21
Comment utiliser ce livre .......................................................................................... 23
Votre avis nous intresse! .......................................................................................... 24
Remerciements .......................................................................................................... 25
Dons ........................................................................................................................... 26
Histoire de R .............................................................................................................. 27
Liens Internet ............................................................................................................. 28
Fichiers de donnes ................................................................................................... 30
Dons ........................................................................................................................... 31
Mdiagraphie ............................................................................................................. 32
2. Normes et validation ..................................................................................... 38
3. Installer R ...................................................................................................... 41
Microsoft Windows ................................................................................................... 41
Mac OS ...................................................................................................................... 43
Scientific Linux 6.5 ................................................................................................... 44
RAD IDE Divers ....................................................................................................... 48
4. Divers R (configuration, packages,) ......................................................... 51
Changer la langue de l'interface ................................................................................ 51
Changer le dossier de travail par dfaut chaque session ........................................ 52
Changer dfinitivement le dossier de travail par dfaut ............................................ 54
Vider la fentre de session ......................................................................................... 56
Version de R et autres informations .......................................................................... 57
Dfinir le nombre de dcimales................................................................................. 59
Ajouter des commentaires ......................................................................................... 62
Obtenir de l'aide sur une commande ou sur un package ........................................... 63
Plusieurs commandes sur une ligne........................................................................... 65
Installer et charger/dcharger des packages .............................................................. 67
Changer le dossier d'installation par dfaut des packages ................................................ 70
Dinstaller un package ...................................................................................................... 71
Obtenir les versions des packages et dpendances ........................................................... 72
Vrifier si les packages sont jour ................................................................................... 74
Liste des packages utiliss dans ce support ............................................................................... 76
Dplacer les packages vers une autre ordinateur .............................................................. 79
Consulter la popularit des packages ................................................................................ 79
Quelques data sets ..................................................................................................... 81
Contrler la mmoire ................................................................................................. 86
Mettre jour R........................................................................................................... 88
Fermer R .................................................................................................................... 93

R Statistical Software 1/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Envoyer un courriel (email) via R ............................................................................. 94


5. Fichiers R ...................................................................................................... 95
Historique et Fichiers *.Rhistory............................................................................... 95
Fichiers *.Rdata ......................................................................................................... 99
6. Calculs arithmtiques lmentaires ............................................................ 102
Exercice 1.: Oprations sur scalaires ....................................................................... 102
Exercice 2.: Oprateurs boolens et relations d'ordre ............................................. 105
Exercice 3.: Manipulations de variables scalaires ................................................... 107
Exercice 4.: Arrondir des calculs............................................................................. 108
Exercice 5.: Options de formatage des nombres ..................................................... 109
Exercice 6.: Nombres et variables complexes ......................................................... 111
Exercice 7.: Manipulation d'ensembles (un peu de thorie des ensembles)............ 113
Exercice 8.: Oprations avec des data frame ........................................................... 115
Exercice 9.: Statistiques lmentaires univaries de data frame ............................. 120
Exercice 10.: Kurtosis et Skewness ......................................................................... 132
Exercice 11.: Statistiques lmentaires multivaries de data frame ........................ 134
7. Manipulation de variables de type algbriques, vectorielles matricielles,
textes, dates temps ............................................................................................. 138
Exercice 12.: Manipulations de variables vectorielles ............................................ 138
Exercice 13.: M-estimateurs .................................................................................... 142
Exercice 14.: Manipulations de textes ..................................................................... 144
Exercice 15.: Manipulations de dates ...................................................................... 150
Exercice 16.: Manipulations de dates avec du temps .............................................. 158
Exercice 17.: Manipulations de variables ordinales ................................................ 162
Exercice 18.: Manipulations de variables matricielles (matrices) ........................... 165
Oprations de base .......................................................................................................... 165
Matrice de variances-covariances ................................................................................... 170
Dterminant et valeurs propres ....................................................................................... 171
Matrice d'adjacence......................................................................................................... 172
Matrices stochastiques .................................................................................................... 175
Dcomposition en valeurs singulires ............................................................................ 177
Exercice 19.: Utiliser des listes ............................................................................... 185
Exercice 20.: Cration/dition de donnes en ligne de commande ........................ 189
Exercice 21.: Grer les variables dans la mmoire ................................................. 193
Exercice 22.: Identifier le typage............................................................................. 196
8. Algbre scolaire .......................................................................................... 197
Exercice 23.: Plotter (tracer) des fonctions algbriques .......................................... 197
Exercice 24.: Animer (tracer) des fonctions algbriques ........................................ 203
Exercice 25.: Racine(s) d'quations univaries ....................................................... 205
Exercice 26.: Drivation algbrique/Drivation numrique.................................... 207
Exercice 27.: Intgration numrique ....................................................................... 213
Intgrale simple ............................................................................................................... 213
Double Intgrale.............................................................................................................. 213
Intgrale avec somme ..................................................................................................... 214
Exercice 28.: Rsoudre un systme linaire ............................................................ 216
Exercice 29.: Gnrer une variable (pseudo-)alatoire uniforme et reproductible . 217
Exercice 30.: Optimisation unidimensionnelle ....................................................... 219

R Statistical Software 2/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 31.: Optimisation multidimensionnelle (sans contrainte et local) ............ 220


Exercice 32.: Optimisation multidimensionnelle (sans contrainte et global).......... 223
Exercice 33.: Optimisation multidimensionnelle (avec contraintes) ...................... 224
Exercice 34.: Optimisation (programmation) linaire par la mthode du simplexe 226
9. Importer/Exporter des donnes ................................................................... 228
Exercice 35.: Importer/Exporter des *.csv en local................................................. 228
Exercice 36.: Importer interactivement des donnes............................................... 231
Exercice 37.: Importer/Exporter des *.csv en local pour les listes ......................... 232
Exercice 38.: Importer des *.csv du web................................................................. 234
Exercice 39.: Exporter pour les forums ................................................................... 235
Exercice 40.: Fusionner des fichiers *.csv .............................................................. 237
Exercice 41.: R et LaTeX ........................................................................................ 240
Exporter un dataframe en LaTeX ............................................................................ 240
Exporter une analyse statistique en LaTeX ............................................................. 241
Importer une sortie R dans LaTeX .......................................................................... 242
Exercices 42.: Importer/Exporter au format Microsoft Excel*.xlsx (2007-2010) .. 246
Utiliser le presse-papiers ................................................................................................. 250
Exercice 43.: Importer/Exporter des donnes au format SPSS ............................... 251
Exercice 44.: Importer des donnes au format MATLAB ...................................... 252
Exercice 45.: Importer des donnes de fichiers MS Access (*.mdb/*.accdb) ........ 253
Exercice 46.: Importer des donnes JSON .............................................................. 260
Exercice 47.: Importer des donnes XML ou HTML du web ................................ 262
Exercice 48.: Importer des donnes XES (*.xes) .................................................... 266
Exercice 49.: Exporter/Lire des fichiers SAS (*.dat) .............................................. 268
Exercice 50.: Importer des donnes de Quandl ....................................................... 270
Exercice 51.: Parser du HTML................................................................................ 272
Exercice 52.: Importer des donnes *.csv d'un fichier zip ...................................... 275
Exercice 53.: Importer des donnes d'un serveur MySQL ...................................... 277
Exercice 54.: Importer des donnes d'un serveur Oracle Express........................... 285
Exercice 55.: Utiliser le SQL................................................................................... 289
Exercice 56.: Importer des donnes de Twitter ....................................................... 292
10. Manipuler, filtrer/trier des donnes de data frame .................................. 298
Exercice 57.: Rsum structurel d'un date frame .................................................... 299
Exercice 58.: Renommer des intituls de colonnes ................................................. 300
Exercice 59.: Renommer des intituls de lignes...................................................... 301
Exercice 60.: Prendre un sous-ensemble (subset) ................................................... 302
Exercice 61.: Appliquer un filtre ............................................................................. 303
Exercice 62.: Prendre un sous ensemble filtr ........................................................ 307
Exercice 63.: Utiliser les techniques de filtrage pour trouver la valeur proche ...... 308
Exercice 64.: chantillonnages ............................................................................... 309
chantillonnage alatoire simple .................................................................................... 310
chantillonnage stratifi (probabilits proportionnelles)................................................ 312
Exercice 65.: liminer des colonnes ....................................................................... 315
Exercice 66.: Tri simple et multiple ........................................................................ 318
Exercice 67.: Chercher et supprimer des doublons ................................................. 321
Exercice 68.: Acclrer l'accs aux colonnes .......................................................... 323

R Statistical Software 3/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 69.: Empiler/Dsempiler des donnes de data frame ............................... 324


Exercice 70.: Synthtiser/Aggrger des donnes (tables de contingences) ............ 336
Exercice 71.: Transformer des donnes longitudinales en transervales (et l'inverse)
................................................................................................................................. 345
Exercice 72.: Traiter un vecteur de texte ................................................................. 347
Exercice 73.: Travailler avec des valeurs absentes (NA) ........................................ 348
Analyser les donnes manquantes .................................................................................. 351
Exercice 74.: Fusionner des donnes par cl de mappage (RECHERCHEV) ........ 355
Exercice 75.: Afficher un data frame en tant que table ........................................... 357
Exercice 76.: Diffrence apply, lapply, sapply, ...................................................... 359
Data Wrangling ....................................................................................................... 360
Package dplyr .................................................................................................................. 360
Package data.table ........................................................................................................... 390
11. Crer des diagrammes gnriques divers ................................................ 407
Exercice 77.: Diagrammes textes ......................................................................... 409
Exercice 78.: Contrler la fentre graphique........................................................... 415
Exercice 79.: Arbre phylogntique (phylogrammes, cladogrammes) ................... 421
Exercice 80.: Diagrammes vectoriels (dessiner des flches et mettre du texte) ..... 427
Exercice 81.: Mettre une image de fond.................................................................. 432
Exercice 82.: Dessiner des rectangles ..................................................................... 435
Exercice 83.: Dessiner des cercles........................................................................... 436
Diagrammes de Venn ...................................................................................................... 438
Exercice 84.: Dessiner des ellipses.......................................................................... 443
Exercice 85.: Dessiner des polygones ..................................................................... 444
Exercice 86.: Diagrammes "stem-and-leaf" ............................................................ 451
Exercice 87.: Diagrammes "strips".......................................................................... 452
Exercices 88.: Diagrammes X-Y et lignes............................................................ 453
Ajouter des marques mineures aux axes ......................................................................... 469
Positions des axes/Inversion des axes et Dates sur les Axes .......................................... 470
Ajouter des lgendes aux points ..................................................................................... 472
Zoomer sur un sous-ensemble ........................................................................................ 473
Points avec courbes d'iso-densit .................................................................................... 475
Points avec variation de couleurs et zone gographique ................................................ 478
Points avec histogrammes et lissage ............................................................................... 480
Ajout de barres d'erreurs ................................................................................................. 482
Graphiques pentes (interactions) .................................................................................. 483
Exercice 89.: Diagrammes points catgoriels (diagramme de Cleveland) ........... 485
Exercice 90.: Diagrammes points (dot plots) ....................................................... 487
Exercice 91.: Diagramme tournesols (analyses de densit 2D) .............................. 490
Exercice 92.: Co-diagramme ................................................................................... 495
Exercice 93.: Symboles disponibles pour les graphiques points .......................... 497
Exercice 94.: Diagramme d'associations ................................................................. 499
Exercice 95.: Diagramme mosaiques ................................................................... 501
Exercice 96.: Diagramme barres (frquences et autres) ....................................... 504
Exercice 97.: Diagrammes bullets ........................................................................... 518
Exercice 98.: Diagrammes mosaque densit pour tables .................................... 521
Exercice 99.: Histogramme (densit) avec des dates .............................................. 523

R Statistical Software 4/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 100.: Histogrammes superposs (frquences) .......................................... 525


Exercice 101.: Diagrammes aires ......................................................................... 529
Exercice 102.: Hexabins .......................................................................................... 534
Exercice 103.: Histogramme (frquences) 3D ........................................................ 537
Exercice 104.: Courbe de Lorenz et indice de Gini ................................................ 541
Exercice 105.: Combinaisons de graphiques (subplots) .......................................... 543
Exercice 106.: Joy Plots .......................................................................................... 552
Exercice 107.: Sparklines ........................................................................................ 556
Exercice 108.: Fonction de rpartition empirique (FRE) ........................................ 558
Exercice 109.: Camemberts 2D et 3D ..................................................................... 562
Exercice 110.: Diagramme en anneaux ................................................................... 565
Exercice 111.: Diagramme radar ............................................................................. 572
Exercice 112.: Diagramme d'Ishikawa (cause/effets) ............................................. 575
Exercice 113.: Diagramme radial (rose des vents) .................................................. 577
Exercice 114.: Diagramme de Pareto et analyse ABC ............................................ 579
Exercice 115.: Diagrammes Box Plots .................................................................... 584
Diagrammes en violons................................................................................................... 589
Diagramme pirate............................................................................................................ 592
Exercice 116.: Pyramide des ges ........................................................................... 593
Exercice 117.: Chronologie et Diagramme de Gantt .............................................. 594
Exercice 118.: Organigramme ................................................................................. 596
Exercice 119.: Gaufres ............................................................................................ 598
Exercices 120.: Surface 3D ..................................................................................... 600
Surface 3D par densit de noyaux 2D............................................................................. 608
Surface 3D anime .......................................................................................................... 609
Surface 3D avec points ................................................................................................... 610
Graphiques 4D ......................................................................................................... 612
Exercices 121.: Diagramme points 3D ................................................................. 614
Plot 3D de points simple ................................................................................................. 614
Plot 3D de points mesurs dans le temps (splines 3D) ................................................... 619
Exercice 122.: Diagramme bulles 2D ................................................................... 622
Exercice 123.: Diagramme bulles 3D ................................................................... 626
Exercice 124.: Diagramme de Rosling (bulles animes) ........................................ 627
Exercice 125.: Intervalles de distributions .............................................................. 630
Probabilit cumule d'un intervalle d'une distribution estime par noyaux.................... 633
Exercice 126.: Diagrammes combins lattes (facettes) ........................................ 634
Thorie des graphes ................................................................................................. 637
Exercice 1.: Graphe de matrice d'adjacence ................................................................... 637
Exercice 2.: Graphe de matrice d'adjacence et poids des sommets selon algorithme du
Google Page Rank........................................................................................................... 640
Exercice 3.: Graphe de migration ................................................................................... 644
Exercice 4.: Flux parallles (diagrammes de Sankey) .................................................... 648
Exercice 5.: Rseaux de relations ................................................................................... 651
Exercice 127.: Carte de chaleur (heatmap) ............................................................. 658
Exercice 128.: Diagramme ternaire (plans de mlange) ......................................... 666
Exercice 129.: Fractale de Mandelbrot.................................................................... 668
Exercice 130.: Exporter un graphique en tant qu'image ou pdf .............................. 671

R Statistical Software 5/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 131.: Gostatistiques & Topographie (sciences de l'information


gographique) .......................................................................................................... 674
Topographie .................................................................................................................... 674
Statistiques au niveau mondial (package rworldmap) .................................................... 679
Statistiques au niveau mondial (package plot3D) ........................................................... 686
Gostatistiques ponctuelles (package maps) ................................................................... 690
Gostatistiques avec gradients (packages aqfig et maps) ............................................... 698
Utilisation du format NetCDF ........................................................................................ 701
Google maps/Open maps (package ggmap) ................................................................... 706
Pavage de sphere et statistiques ...................................................................................... 731
Cartogramme................................................................................................................... 735
Topographie Marine........................................................................................................ 736
Chemins (analyse qualitative de flux)............................................................................. 738
Trajet optimal (des moindres distances) ......................................................................... 743
Exercice 132.: Calendriers de densit ..................................................................... 745
Exercice 133.: Export de graphiques ggplot en format web interactif .................... 748
12. Fonctions de distributions de probabilits ............................................... 752
Exercice 134.: Loi discrte personnalise ............................................................... 754
Exercice 135.: Loi Normale .................................................................................... 756
Loi Normale avec frquences ......................................................................................... 759
Loi Normale avec double axe ......................................................................................... 764
Loi Normale avec distribution et rpartition des frquences .......................................... 765
Loi Normale bivarie ...................................................................................................... 766
Ellipse de confiance (Youden Plot) ......................................................................................... 768
Loi Normale trivarie...................................................................................................... 773
Exercice 136.: Loi Uniforme (continue) ................................................................. 775
Exercice 137.: Loi Gomtrique.............................................................................. 777
Exercice 138.: Loi Binomiale .................................................................................. 780
Exercice 139.: Loi Binomiale ngative ................................................................... 782
Exercice 140.: Loi de Poisson ................................................................................. 784
Exercice 141.: Loi Hypergomtrique .................................................................... 786
Exercice 142.: Loi Exponentielle ............................................................................ 788
Exercice 143.: Loi du khi-2 ..................................................................................... 790
Exercice 144.: Loi de Student ................................................................................. 792
Exercice 145.: Loi de Fisher .................................................................................... 793
Exercice 146.: Loi Log-Normale............................................................................. 794
Exercice 147.: Loi de Weibull ................................................................................. 795
Exercice 148.: Loi Gamma ...................................................................................... 796
Exercice 149.: Loi Beta ........................................................................................... 797
Exercice 150.: Petite compilation pour comparaisons ............................................ 798
Exercice 151.: Diagramme quantile-quantile Normal (q-q plot) ............................ 799
13. Statistiques paramtriques ....................................................................... 802
Exercice 152.: Puissance d'un test Z 1 chantillon en bilatral ............................ 802
Exercice 153.: Taille d'chantillon (effectif) d'un test Z en bilatral ...................... 804
Exercice 154.: Puissance d'un test t 1 chantillon en bilatral ............................. 806
Exercice 155.: Rsolution du test t 1 chantillon en bilatral .............................. 807
Exercice 156.: Taille d'chantillon (effectif) d'un test t 1 chantillon en bilatral809
Exercice 157.: Test d'adquation d'Anderson-Darling (ie Agostino-Stephens) ...... 810

R Statistical Software 6/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 158.: Test de normalit de Shapiro-Wilk ................................................. 812


Exercice 159.: Intervalle de confiance de la moyenne (test Z un 1 chantillon).. 813
Exercice 160.: Test Z de diffrence de la moyenne (test Z un 1 chantillon) en
unilatral gauche ...................................................................................................... 814
Exercice 161.: Test Z de diffrence la moyenne deux chantillons en bilatral .. 815
Exercice 162.: Test Z par MonteCarlo .................................................................... 817
Exercice 163.: Intervalle de confiance de la moyenne (test t un 1 chantillon) ... 818
Exercice 164.: Test t-Student bilatral d'un chantillon .......................................... 819
Exercice 165.: Test t-Student pour donnes apparies ............................................ 820
Exercice 166.: Test t-Student homoscdastique bilatral d'galit de la moyenne . 821
Exercice 167.: Test du ratio des moyennes de Fieller ............................................. 822
Exercice 168.: Test t-Student htroscdastique bilatral d'galit de la moyenne
(test de Welch) ......................................................................................................... 823
Exercice 169.: Taille d'chantillon (effectif) d'un test p (proportion) 1 chantillon
en bilatral ............................................................................................................... 824
Exercice 170.: Taille d'chantillon (effectif) d'un test p (proportion) 2 chantillons
en bilatral ............................................................................................................... 825
Exercice 171.: Test de Poisson un chantillon unilatral/bilatral ....................... 826
Exercice 172.: Test de Poisson de la diffrence de deux moyenne......................... 828
Exercice 173.: Intervalle de confiance de l'cart-type (test du khi-2 de la variance)
................................................................................................................................. 830
Exercice 174.: Comparaison de proportions sur une mme population (test binomial
exact) ....................................................................................................................... 831
Exercice 175.: Intervalle de confiance de la proportion .......................................... 832
Exercice 176.: Comparaison de proportions sur 2 chantillons indpendants ........ 833
Exercice 177.: Test de Fisher d'galit des variances ............................................. 835
Exercice 178.: Test de Levene d'galit de deux variances .................................... 836
Exercice 179.: Robustesse de tests statistiques ....................................................... 838
Exercice 180.: Transformation de Box-Cox............................................................ 840
Exercice 181.: Transformations de Johnson............................................................ 842
Exercice 182.: ANOVA (Analyse de la Variance).................................................. 844
Exercice 1.: ANOVA un facteur fixe (ANOVA-1 canonique) empil ........................ 845
Exercice 2.: ANOVA un facteur fixe (ANOVA-1 canonique) dsempil ................... 848
Exercice 3.: ANOVA deux facteurs fixes (ANOVA-2 canonique) sans rptitions avec
ou sans interactions ......................................................................................................... 851
Exercice 4.: ANOVA deux facteurs fixes (ANOVA-2 canonique) avec rptitions
(rplications) avec ou sans interactions .......................................................................... 860
Exercice 5.: Comparaisons multiples du test de Student avec correction de Bonferroni 865
Exercice 6.: Test de (l'tendue) de Tukey HSD .............................................................. 867
Exercice 7.: Test de Levene et Bartlett d'galit des variances d'une ANOVA canonique
......................................................................................................................................... 869
Exercice 8.: ANOVA Imbrique (embote)/Hirarchique complte............................. 871
Exercice 9.: ANOVA Carr Latin ................................................................................... 874
Exercice 10.: ANCOVA (Analyse de la Covariance) ..................................................... 878
Exercice 11.: MANOVA ................................................................................................ 882
Exercice 183.: ACP (Analyses en Composantes Principales) paramtrique .......... 885
ACP (Analyses en Composantes Principales) paramtrique vs SVD (Dcomposition en
Valeurs Singulires) ........................................................................................................ 891

R Statistical Software 7/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 184.: Analyse en Composantes Indpendentes (ICA) WP ....................... 893


Exercice 185.: Analyse factorielle exploratoire (AFE) ........................................... 897
AFE avec mthode ACP sans rotation! .......................................................................... 898
AFE avec mthode ACP et rotation VariMax! ............................................................... 899
AFC Analyse Factorielle des Correspondances .............................................................. 900
Exercice 186.: Copulas Gaussiens et Student bivaris ............................................ 910
14. Statistiques non paramtriques ................................................................ 916
Exercice 187.: M-estimateurs .................................................................................. 916
Exercice 188.: Rgression quantile linaire (globale) ............................................. 917
Exercice 189.: Estimateur de Theil-Sen (rgression mdiane) ............................... 923
Exercice 190.: Test d'ajustement (indpendance) du khi-2 ..................................... 926
Exercice 191.: Ajustement d'une loi de Poisson par le Khi-2 ................................. 928
Exercice 192.: Test d'indpendance du Khi-deux d'une table de contingence ........ 931
Exercice 193.: Test exact de Fisher ......................................................................... 932
Exercice 194.: Test de McNemar ............................................................................ 934
Exercice 195.: Test d'ajustement du khi-deux avec correction de Yates ................ 937
Exercice 196.: Coefficient de corrlation de Spearmann ........................................ 939
Exercice 197.: Coefficient de corrlation de concordances des rangs de Kendall .. 940
Exercice 198.: Kappa de Cohen .............................................................................. 942
Exercice 199.: V de Cramr (mesure d'association)................................................ 944
Exercice 200.: tude de la cohrence avec l'alpha de Cronbach ............................ 946
Exercice 201.: Test de la somme des rangs signs de Wilcoxon pour 2 chantillons
apparis .................................................................................................................... 947
Exercice 202.: Intervalle de confiance de la mdiane (via test du signe 1
chantillon) .............................................................................................................. 949
Exercice 203.: Test du signe binomial (dixit: test de la mdiane pour 2 chantillons
apparis)................................................................................................................... 950
Exercice 204.: Test de Mood (test des mdianes) ................................................... 952
Exercice 205.: Test de la somme des rangs signs de Wilcoxon pour 1 chantillon
................................................................................................................................. 956
Exercice 206.: Test de la somme des rangs de (Wilcoxon)Mann-Withney pour deux
chantillons indpendants ........................................................................................ 957
Exercice 207.: Test de la somme des rangs signs de Wilcoxon pour 2 chantillons
apparis .................................................................................................................... 958
Exercice 208.: Test d'ajustement de Kolmogorov-Smirnov.................................... 959
Cas 1 chantillon .......................................................................................................... 959
Cas 2 chantillons ........................................................................................................ 960
Exercice 209.: Meilleur ajustement au sens de la maximisation de la log-
vraisemblance .......................................................................................................... 962
Exercice 210.: Test de Mantel-Haenszel-Cochran .................................................. 963
Exercice 211.: Test de Grubbs (test des valeurs aberrantes de Grubbs) ................. 965
Exercice 212.: Test de Dixon (test des valeurs aberrantes de Dixon) ..................... 966
Exercice 213.: Test de Friedman (ANOVA canonique non paramtrique par les
rangs) ....................................................................................................................... 967
Exercice 214.: Test de Kruskal-Wallis (ANOVA canonique 1 facteur non
paramtrique) ........................................................................................................... 968

R Statistical Software 8/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 215.: Test d'Armitage (test du chi-2 pour tendances dans les proportions)
................................................................................................................................. 970
Exercice 216.: Test G2 ............................................................................................. 973
15. Rgressions .............................................................................................. 974
Exercice 217.: Rgression linaire univarie par moindres carrs ordinaires (modle
Gaussien) ................................................................................................................. 974
Effet de levier (leverage) et distance de Cook ................................................................ 993
Exercice 218.: Rgression linaire univarie par moindres carrs ordinaires avec M-
estimateurs ............................................................................................................... 994
Exercice 219.: ANOVA de la rgression linaire (bivarie) facteurs fixes ......... 996
Exercice 220.: Rgression linaire univarie par moindres carrs ordinaires (modle
Gaussien) avec plot 2D/3D du modle sous-jacent ................................................. 999
Exercice 221.: Rgression non linaire univarie par moindres carrs ordinaires
(modle Gaussien) ................................................................................................. 1003
Exercice 222.: Coefficient de corrlation de Pearson et test associ .................... 1006
Exercice 223.: Coefficient de corrlation de Spearman (Spearman rho) .............. 1008
Exercice 224.: Rgression linaire multiple (avec ou sans interactions) .............. 1009
Importance relative des variables explicatives ............................................................. 1014
Facteur d'Inflation de la variance (VIF) ........................................................................ 1017
Analyse de la sensibilit par coefficients de rgression standardiss ........................... 1019
Rgression pas pas ascendante ou descendante ......................................................... 1022
Premire mthode (descendante package MASS) ................................................................. 1022
Premire mthode (ascendante package MASS) ................................................................... 1023
Deuxime mthode (descendante sans package) ................................................................... 1024
Deuxime mthode (ascendante sans package) ..................................................................... 1025
Troisime mthode (ascendante sans package) ..................................................................... 1026
Quatrime mthode (meilleur sous ensemble sur R2 ou Cp de Mallows avec package leaps)
............................................................................................................................................... 1027
Quatrime mthode (meilleur sous ensemble sur R2, Cp de Mallows, AIC et BIC avec package
biology) ................................................................................................................................. 1029
Recherche automatique de la meilleure rgression polynomiale .................................. 1031
Exercice 225.: Rgression polynomiale ................................................................ 1032
Interpolation de Lagrange ............................................................................................. 1035
Exercice 226.: Rgression non linaire gnrale................................................... 1036
Exercice 227.: Rgression linaire/polynomiale 3D ............................................. 1038
Exercice 228.: Support Vector Regression............................................................ 1044
Exercice 229.: Analyse de la corrlation canonique ............................................. 1047
Exercice 230.: Rgression logistique (logit) variable catgorielle (qualitative)
binaire (dixit: scoring) ........................................................................................... 1049
Odds ratio et Risque Relatif .......................................................................................... 1056
Exercice 231.: Rgression orthogonale (rgression de Deming) .......................... 1058
Exercice 232.: Rgressions linaires gnralises (GLM) .................................... 1061
Rgression de Poisson log-linaire (rgression des vnements rares) ........................ 1061
Rgression GLM Ngative binomiale (NB-2) .............................................................. 1064
Recherche automatique de la meilleure rgression de Poisson .................................... 1070
Exercice 233.: Rgression (linaire) par moindres carrs partiels (rgression linaire
PLS univarie: PLS1) ............................................................................................ 1072

R Statistical Software 9/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 234.: Modlisation par quations structurelles (SEM) ........................... 1074


16. Interpolations ......................................................................................... 1084
Exercice 235.: Interpolation par splines ................................................................ 1084
Exercice 236.: Interpolation locale par pondration (LOESS).............................. 1087
Exercice 237.: Interpolation Multivariate Adaptive Regression Splines (MARS) 1091
17. Sondages ................................................................................................ 1094
18. Fiabilit/Survie ....................................................................................... 1099
Exercice 238.: Analyse de donnes censures selon modle non paramtrique de
Kaplan-Meier ......................................................................................................... 1099
Exercice 239.: Ajustement de Weibull pour donnes censures droite.............. 1103
Exercice 240.: Rgression modle de hasard proportionnel de Cox .................. 1108
19. Plans d'exprience .................................................................................. 1110
Exercices 241.: Gnrer un plan factoriel complet (sans package)....................... 1110
Exercices 242.: Constructions de plans d'expriences .......................................... 1111
Plans factoriels .............................................................................................................. 1113
Plan factoriel complet gnral ............................................................................................... 1113
Analyse conjointe .................................................................................................................. 1114
Plan factoriel ( deux niveaux) fractionnaire ........................................................................ 1117
Plan factoriel ( deux niveaux) de screening (rsolution III) ................................................ 1120
Plan factoriel de Plackett-Burman ......................................................................................... 1126
Plan factoriel de Taguchi ....................................................................................................... 1127
Analyse et comparaison d'un plan d'exprience identique en factoriel complet gnral et
factoriel 2 niveaux .............................................................................................................. 1130
Plans de surfaces (quadratiques) ................................................................................... 1136
Plans composites centrs ....................................................................................................... 1136
Analyse d'un plan composite centr ...................................................................................... 1138
Plans de mlanges ......................................................................................................... 1150
Plan de mlange centr du simplexe ..................................................................................... 1150
20. Ingnierie de la qualit (Six Sigma/SPC) .............................................. 1156
Exercice 243.: Rendement Global Combin et DPU/DPMO ............................... 1156
Exercice 244.: Fonction de cot de perte de qualit de Taguchi........................... 1159
Exercice 245.: Analyse SixPack (+ analyse capabilits + intervalles de confiance des
capabilits) ............................................................................................................. 1162
Exercice 246.: Constantes de Hartley et autres constantes des cartes de contrle 1169
Exercice 247.: Carte de contrle par attributs p (proportion) ............................... 1172
Exercice 248.: Carte de contrle par attributs de type np (frquences) ................ 1174
Exercice 249.: Carte de contrle par attributs de type c ........................................ 1176
Exercice 250.: Carte de contrle par attributs de type u ....................................... 1178
Exercice 251.: Carte de contrle par mesures X barre-S simple ........................... 1180
Courbe d'efficacit ........................................................................................................ 1182
Exercice 252.: Carte de contrle par mesures S barre-S simple ........................... 1183
Exercice 253.: Carte de contrle par mesures R barre-R simple .......................... 1185
Exercice 254.: Carte de contrle EWMA avec chantillons ................................. 1187
Exercice 255.: Carte de contrle CUSUM ............................................................ 1189
Exercice 256.: Carte de contrle G........................................................................ 1191
Exercice 257.: Carte de contrle multivarie T2 de Hotelling .............................. 1195

R Statistical Software 10/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 258.: tude R&R (reproductibilit/rptabilit) pour donnes continues


............................................................................................................................... 1200
Exercice 259.: Coefficient de corrlation intra-classe ICC1 ................................. 1203
Exercice 260.: tude de l'instrumentation de type I .............................................. 1207
Exercice 261.: Plan d'chantillonnage par attributs .............................................. 1209
21. Mthodes brutes d'infrences ................................................................. 1212
Exercices: Monte-Carlo ......................................................................................... 1212
Mthode classique (variables pseudo-alatoires).......................................................... 1212
Mthode de squence quasi-alatoire de Sobol ............................................................ 1215
Mthode de squence quasi-alatoire Latin Hypercube ............................................... 1216
Mthode d'acceptation/rejet .......................................................................................... 1217
Exercices 262.: Jacknife ........................................................................................ 1220
Exercices: Bootstrap .............................................................................................. 1223
Bootstrapping univari .................................................................................................. 1223
Rgression Bootstrap .................................................................................................... 1225
22. Dcisionnel ............................................................................................ 1228
Exercice 263.: Business Process Analysis ............................................................ 1228
Exercice 264.: Analyse Procdurale Hirarchique ................................................ 1246
Exercice 265.: Problmes des mariages stables (algorithme de satisfaction de Lloy
Shaply) ................................................................................................................... 1250
Exercice 266.: Chanes de Markov Discrtes (Discrete Time Markov Chain
(DTMC))................................................................................................................ 1251
23. Machine Learning (Big Data/B.I. avance) ........................................... 1254
Prambule .............................................................................................................. 1254
Exercice 267.: caret (classification and regression training) ................................. 1257
Exercice 268.: Partitionnement ............................................................................. 1265
Exercice 269.: OneR (rgle unique de classification) ........................................... 1266
Exercice 270.: A priori .......................................................................................... 1268
Exercice 271.: Classification par induction CN2 .................................................. 1269
Exercice 272.: Classification par induction ID-3 et PRISM ................................. 1271
Exercice 273.: Classifiction par induction C5 ....................................................... 1276
Exercice 274.: Classification Ascendante Hirarchique (CAH/Dendrogramme) . 1280
CAH avec bagging (bootstrap aggregating) ................................................................. 1283
Exercice 275.: K-means (k moyennes en groupe) ................................................. 1285
Exercice 276.: K-medoides ................................................................................... 1292
Exercice 277.: K plus proches voisins (k-NN: k nearest neighbours) .................. 1294
Exercice 278.: Classification baysienne nave .................................................... 1296
Exercice 279.: Classification SVM (Support Vector Machine) ............................ 1298
Exercice 280.: Classification CART (arbres de rgression de classification)....... 1303
Exercice 281.: Random Forests (CART Boostrap) ............................................... 1312
Exercice 282.: Chi-squared Automated Interaction Detection (CHAID) ............. 1315
Exercice 283.: Analyse d'affinit (affinity analysis) ............................................. 1323
Exercice 284.: Positionnement multidimensionnel ............................................... 1329
Exercice 285.: Analyse discriminante linaire ...................................................... 1333
Exercice 286.: Rseaux de neurones ..................................................................... 1338
Exercice 287.: Ensemble Learning ........................................................................ 1344
Exercice 288.: Traiter de gros jeux de donnes..................................................... 1349

R Statistical Software 11/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 289.: Hadoop (Cloudera)/R Studio Server ............................................. 1354


24. Sries temporelles (sries chronologiques) ........................................... 1355
Exercice 290.: Gnration d'une srie temporelle partir de donnes brutes ....... 1355
Exercice 291.: Extraire des sous-ensembles de sries temporelles ....................... 1356
Exercice 292.: Lire des donnes temporelles ........................................................ 1357
Exercice 293.: Dcomposition d'une srie temporelle par modle additif et
multiplicatif ........................................................................................................... 1360
Exercice 294.: Test de Durbin-Watson ................................................................. 1364
Exercice 295.: Test des suites (test de Walf-Wolfowitz) ...................................... 1366
Exercice 296.: Contrle de la stationnarit d'une srie temporelle ....................... 1367
Exercice 297.: Lissage par moyenne mobile simple ............................................. 1368
Exercice 298.: Lissage exponentiel simple ........................................................... 1369
Exercice 299.: Lissage exponentiel double selon Holt (modle additif)............... 1371
Exercice 300.: Lissage exponentiel triple selon Holt et Winters (modle
multiplicatif) .......................................................................................................... 1374
Exercice 301.: Meilleur modle prvisionnel au sens des erreurs ........................ 1379
Exercice 302.: Coefficients d'autocorrlation ....................................................... 1382
Exercice 303.: Coefficients d'autocorrlation partielle ......................................... 1383
Exercice 304.: Modles unvaris AR(p), ARIMA(p,d,q) et ARCH(p,q).............. 1384
Simulation d'un processus AR(1) ................................................................................. 1384
Simulation d'un processus AR(2) ................................................................................. 1385
Ajuster un modle AR(p)/ARIMA(p,0,0) ..................................................................... 1387
Ajuster un modle ARIMA(0,0,0)/Moyenne mobile .................................................... 1390
Ajuster un modle ARIMA(0,1,0) ................................................................................ 1392
Ajuster un modle ARIMA(0,1,1)/Lissage exponentiel simple ................................... 1394
Ajuster un modle ARIMA(0,2,2)/Lissage exponentiel double de Holt ...................... 1396
Ajuster un modle ARMA(1,1)/ARIMA(1,0,1) ........................................................... 1398
Recherche du meilleur modle ARIMA ....................................................................... 1400
Simulations de modles ARIMA .................................................................................. 1403
Ajuster un modle GARCH(1,1) .................................................................................. 1405
Exercice 305.: Transforme de Fourier Rapide (FFT) .......................................... 1411
Exercice 306.: Analyses de donnes de panel ....................................................... 1414
25. Finance Quantitative .............................................................................. 1417
Exercice 307.: Finance scolaire ............................................................................. 1421
Rviser les bases de la finance avec GUIDE ................................................................ 1421
Plus proche matrice de corrlation relle ...................................................................... 1424
Exercice 308.: Comptes de produits et charges ..................................................... 1426
Exercice 309.: Modle de Fama-French (FF-CAPM) ........................................... 1431
Exercice 310.: Mouvement Brownien vs Mouvement de Lvy ............................ 1434
Exercices 311.: Packages quantmod/RQuantLib/fOption ..................................... 1436
Rcuprer des donnes brutes ....................................................................................... 1437
Non automatis diffr ou actuel (indices/titres/options/dividendes) ................................... 1437
Automatis en temps rel actualis (indices/titres/options) .................................................. 1440
Non automatis diffr ou actuel (matires premires) ......................................................... 1443
Vrifier la normalit des retours/rendements (return) .................................................. 1446
Heatmap des return mensuels ....................................................................................... 1451
Diagrammes barres et chandelles (OHLC) ................................................................ 1454
valuation d'options, grecques et volatilit implicite (VI) selon B&S-Merton ............ 1466

R Statistical Software 12/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Diagramme Payoff ................................................................................................................ 1469
Smile de volatilit .................................................................................................................. 1471
Surface de volatilit ............................................................................................................... 1478
Volatilit implicit ................................................................................................................. 1481
Backtesting de stratgies d'investissement ................................................................... 1484
Backtesting sur modle avec moyenne mobile (MM20) ....................................................... 1484
Arbre binomial .............................................................................................................. 1486
Exercices 312.: Package fPortfolio........................................................................ 1488
QEPM (Quantitative Equity Portfolio Management) ................................................... 1488
Analyse lmentaire a posteriori de portefeuille (position longue sur 1 priode) ................. 1488
Analyse lmentaire a posteriori de portefeuille (position long-short sur 1 priode) ........... 1496
Ananalys de Brinson d'un portefeuille .................................................................................. 1500
Modle de Markowitz ........................................................................................................... 1505
Exercices 313.: Package PerformanceAnalytics ................................................... 1519
Plotter les retours/rendements (return).......................................................................... 1519
Plotter des ratios des performances cumules .............................................................. 1521
Plotter des corrlations par rapport un indice sur une fentre .................................... 1523
Plotter la moyenne et son intervalle de confiance sur une fentre temporelle.............. 1524
Calculer et le maximum Draw Down et faire un graph ................................................ 1525
Plotter l'ECDF et l'histogramme des retours/rendements (return) ................................ 1527
Plotter cart-type ou la VaR historique/Gaussienne/Conditionnelle............................ 1530
Conditional VaR (Expected Shortfall) .......................................................................... 1535
MEDAF ou CAPM ....................................................................................................... 1536
Risque total, systmatique et spcifique ................................................................................ 1542
Value at Risk ......................................................................................................................... 1543
Exercice 314.: Classification ascendante hirarchique de sries chronologiques . 1546
26. Actuariat ................................................................................................. 1557
Exercice 315.: Gnrer une table des survivants simple et indicateurs de survies 1558
Exercice 316.: Capitals diffrs ............................................................................. 1566
Exercice 317.: Valeur actuelle nette (VAN/NPV) et Taux de rendement interne
(IRR) ...................................................................................................................... 1568
27. Thorie des files d'attentes ..................................................................... 1571
Exercice 318.: Rsum d'un file d'attente M/M/1 ................................................. 1572
Exercice 319.: Probabilit d'Erlang-B ................................................................... 1574
Exercice 320.: Probabilit d'Erlang-C ................................................................... 1575
28. Statistiques baysiennes ......................................................................... 1576
Exercice 321.: Statistiques baysiennes discrtes (cas d'une proportion) ............. 1576
Exercice 322.: Statistiques baysiennes continues (cas d'estimation de la moyenne
avec a priori et posteriori Normales) ..................................................................... 1578
Exercice 323.: Statistiques baysiennes continues (cas d'une proportion avec a priori
beta estime et a posteriori binomiale) .................................................................. 1580
Exercice 324.: Test d'hypothse baysien unilatral (cas d'estimation de la moyenne
avec a priori et posteriori Normales) ..................................................................... 1584
29. Statistiques spatiales .............................................................................. 1587
Plus proche voisin et distance moyenne ................................................................ 1587
30. Text Mining ........................................................................................... 1593
Exercice 325.: Crer et nettoyer le corpus (package tm/SnowballC) ................... 1594

R Statistical Software 13/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 326.: Obtenir la matrice d'adjacence d'un corpus ................................... 1599


Exercice 327.: Analyser le corpus (package tm/wordcloud)................................. 1607
Exercice 328.: Rseau de termes corrls ............................................................. 1611
Exercice 329.: Dtecter la langue (package textcat) ............................................. 1614
Exercice 330.: Dtecter les genres d'un vecteur de textes ..................................... 1615
Exercice 331.: Tableau de contingence lexical ..................................................... 1616
Exercice 332.: Analyse de sentiments (avec apprentissage par mthode baysienne)
............................................................................................................................... 1617
Exercice 333.: Infrence de sentiments (sans apprentissage)................................ 1621
Exercice 334.: Bag-of-Words (package qdap) ...................................................... 1630
31. Bioinformatique/Biostatistiques ............................................................ 1633
Exercice 335.: Lire un fichier *.DICOM (Digital Imaging and Communications in
Medicine) ............................................................................................................... 1635
Exercice 336.: Obtenir des squencages sur les BDD en ligne ............................. 1636
Exercice 337.: Lire et traiter un fichier *.FASTA ................................................. 1641
Exercice 338.: Afficher l'image d'un microarray .................................................. 1645
Lire et traiter un fichier Affymetrix *.CEL .................................................................. 1650
Exercice 339.: Lire des fichiers *.PDB (Protein Databank).................................. 1655
Reprsentation 3D d'une protine avec choix des orbitales .......................................... 1655
Diagramme de Ramachandran ...................................................................................... 1657
32. quations diffrentielles ordinaires ou partielles .................................. 1659
Exercice: quations de Lotka-Volterra ................................................................. 1659
Exercice: Comptition des faucons et colombes ................................................... 1661
Exercice: quations de Lorenz .............................................................................. 1667
33. Scripting (fichiers *.R) .......................................................................... 1669
Exercice 340.: Crer/diter un fichier R en ligne de commande .......................... 1669
Exercice 341.: Faire une exprience alatoire binaire ........................................... 1671
Exercice 342.: Porte des variables ....................................................................... 1673
Exercice 343.: Comprendre les structures conditionnelles ................................... 1675
Structure conditionnelle If...else ................................................................................... 1675
Structure conditionnelle Switch .................................................................................... 1678
Exercice 344.: Comprendre les structures itratives ............................................. 1679
Exercice 345.: Programmer une bascule moyennes ........................................... 1684
Exercice 346.: Programmer une fonction avec un paramtre en entre renvoyant un
tableau.................................................................................................................... 1686
Exercice 347.: Programmer une fonction avec plus d'un paramtres en entre .... 1687
Exercice 348.: Programmer une fonction avec plus d'un paramtres en entre et
utilisant une liste .................................................................................................... 1689
Exercice 349.: Programmer une fonction avec un fichier texte en entre............. 1691
Exercice 350.: Programmer une fonction avec des arguments indfinis .............. 1694
Exercice 351.: Calculer Pi avec la mthode de Monte-Carlo................................ 1695
Exercice 352.: Optimisation de scripts .................................................................. 1699
Exercice 353.: Gestion des erreurs et des exceptions ............................................ 1704
Exercice 354.: Excuter des scripts *.R avec VBA (depuis MS Excel/Word ou autre)
............................................................................................................................... 1705
Exercice 355.: Excuter du code C depuis R ........................................................ 1707

R Statistical Software 14/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 356.: Excuter R depuis C# avec R.Net ................................................. 1711


Exercice 357.: Dbugger ....................................................................................... 1717
Traceback ...................................................................................................................... 1717
Debug ............................................................................................................................ 1719
Browse .......................................................................................................................... 1722
Trace ............................................................................................................................. 1723
Profilage ........................................................................................................................ 1726
Exercice 358.: Crer rapidement un package R d'un script R ............................... 1729
34. Interfaces pour les utilisateurs ............................................................... 1739
Gnres depuis R ................................................................................................. 1739
R via Microsoft Office Excel (RExcel) ................................................................. 1743
35. Divers ..................................................................................................... 1760
Tratement d'images jpeg....................................................................................... 1760
Golocaliser une adresse IP ................................................................................... 1762
Logique Floue ........................................................................................................ 1763
Microsoft Power BI Desktop ................................................................................. 1765
36. Revolution R (Open) .............................................................................. 1771
Installation ............................................................................................................. 1771
Diffrenciation en performance calculatoire ......................................................... 1775
Diffrenciation chargement de gros jeux de donnes ........................................... 1778
37. R Shiny................................................................................................... 1779
Installer R Shiny .................................................................................................... 1780
Types de composants ............................................................................................. 1786
Types de balises ..................................................................................................... 1787
Exemples ............................................................................................................... 1788
Exemple R Shiny 1 (graphiques et champs) ................................................................. 1788
Exemple R Shiny 2 (ggplot2) ....................................................................................... 1790
Exemple R Shiny 3 (onglets) ........................................................................................ 1792
Exemple R Shiny 3 (bouton de fermeture) ................................................................... 1794
Exemple R Shiny 3 (Flux de mise jour) ..................................................................... 1796
38. Quelques abrviations dans R ................................................................ 1799
Exercice 359.: Identifier le type de donnes ......................................................... 1814
39. Index des Tableaux ................................................................................ 1815
40. Index....................................................................................................... 1816

R Statistical Software 15/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

1. Introduction
R est un projet GNU libre de traitement des donnes et d'analyse statistiques (sans AUCUNE
GARANTIE COMMERCIALE quant la fiabilit des algorithmes) mettant en uvre le
langage de programmation S cr l'poque par John Chambers et ses collgues lorsqu'il
tait aux laboratoires Bell en 1976. Depuis plusieurs annes, deux nouvelles versions
apparaissent au printemps et l'automne. Il dispose de nombreuses fonctions graphiques.
Le logiciel R est considr par ses crateurs comme tant une excution de S, avec la
smantique drive du langage Scheme. C'est un logiciel libre distribu selon les termes de la
licence GNU GPL et est disponible sous GNU/Linux, FreeBSD, NetBSD, OpenBSD, Mac OS
X et Windows (ce qui est un norme avantage dans l'enseignement et le pratique des
universits et instituts de rechercche). Il reprsente aujourd'hui l'un des objectifs techniques
majeurs de la communaut GNU.
Il convient de signaler que le 6 Avril 2015 Microsoft a achet la version entreprise de R
(Revolution Analytics) dont la rapidit d'excution serait de 20 fois suprieure la version
standard de R et 42 fois plus rapide que SAS1. Ce qui prsage que R avec ses 2 millions
d'utilisateurs va encore plus dominer le domaine de l'analyse statistique de donnes.

Le choix de R dans une organisation peut se justifier principalement selon moi


(Vincent ISOZ) par le fait que:

R est gratuit et la documentation gratuite de qualit sur l'Internet est considrable


de plus il marche sur PC, Mac, Unix et Linux ainsi que sur les pages web.

Permet de faire des graphiques statiques ou dynamiques assez intressant et purs


de tout gadget esthtique inutile (les possibilits techniques sont bien suprieures
Excel, SPSS, SAS2 ou Minitab)

Les tudiants provenant d'universits ont la plupart fait leurs premires armes avec
R et sont donc dj habitus cet environnement.

La communaut d'utilisateurs (et donc d'intervenants) semble plus vaste que tous
les autres solutions alternatives d'o une plus grande ractivit sur les forums
(mme si le nom du logiciel pose parfois problme avec les moteurs de recherche
puisqu'il ne fait qu'une seule lettre...)

Il contient des packages de haut niveau et souvent ds que de nouveaux modles


thoriques de statistiques (analyses de donnes en gnral) sont publis, ils sont en
premier disponible sur R pour la communaut acadmique.

1
http://blogs.technet.com/b/machinelearning/archive/2015/04/06/microsoft-closes-acquisition-of-revolution-
analytics.aspx
2
Si vous touffez avec SAS... prenez une bouffe d'R !

R Statistical Software 16/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Enfin rappelons que ce logiciel se destine des ingnieurs et universitaires donc son rle n'est
pas de faire de l'esthtique mais de l'efficace!

Le logiciel R est devenu depuis sa cration un outil incontournable de statistique et de


visualisation de donnes tant dans le monde universitaire que dans celui de l'entreprise. Ce
dveloppement exceptionnel s'explique par ses trois principales qualits: il est gratuit, trs
complet et en essor permanent.

Dans tout ce livre nous avons fait le choix de travailler avec des fichiers *.csv. Pourquoi ce
choix?:

1. Parce que les fichiers de tableurs comme Microsoft Excel ou autres ne sont pas
prennes sur les trs longues dures (au-del du demi-sicle)

2. Parce que les fichiers XML sont difficile produire par les pratiquants dans les
laboratoires qui n'ont pas de formation de programmeur et ne connaissant pas les
normes internationales d'changes de donnes.

Le lecteur remarquera que le dbut du prsent document rassemble uniquement des points qui
sont aussi faisables avec Microsoft Excel avec plus ou moins de facilit (parfois plus
rapidement, parfois pas). Le but est d'abord de montrer les diffrences entre les deux
logiciels comme le font de nombreux ouvrages avant de passer des cas trs spcifiques R.

Enfin signalons que l'ide de ce support de cours sera au long terme de traiter des sujets
suivants (et dans l'ordre indiqu) dont les dmonstrations mathmatiques ont t faites
pendant les cours thoriques:

- Fondamentaux (manipulations scolaires)


- Manipulation et sources de donnes avances
- Statistiques descriptives
- Statistiques infrentielles paramtriques
- Statistiques infrentielles non paramtriques
- Reprsentations graphiques
- Statistiques baysiennes
- Mthodes de Monte-Carlo
- Fouille de donnes/Data Mining (+statistique multivarie)
- Analyses de texte/Text Mining
- Analyses de sries temporelles
- Actuariat & conomie (finance quantitative)
- Ingnierie de la fiabilit (modles de survie/garanties)
- Plans d'exprience
- Recherche oprationnelle/Optimisation
- Structural Equation Modeling (SEM)
- Logique Floue
- Scripting (programmation)
- Traitement des images

Un ordinateur est un outil incomparable entre les mains de celui qui sait. Sous les doigts du
Crtin, c'est un revolver manipul par un aveugle au milieu de la foule Chester Himes

R Statistical Software 17/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Remarques:

R1. Les premiers exercices sont donc quasiment les mmes que ceux effectus dans les cours
de statistique thorique, matrise statistique des procds, d'analyse dcisionnelle avec
Microsoft Excel, Minitab, MATLAB et SPSS ou lors du cursus d'ingnierie de gestion projets
(dans lesquels les calculs sont faits la main).

R2. Nous prsentons dans ce livre que des outils utilisant des concepts mathmatiques dont
j'expose la dmonstration mathmatique dtaille (dmonstrations disponibles dans mon livre
sur les Mathmatiques Appliques) dans nos cours et qui sont utiliss dans le cadre de nos
activits de consultants. Si cela vient ne pas tre le cas, le titre du sujet est suivi de
l'abrviation WP qui est l'abrviation de: Without Proof.

R3. J'ai rdig ce document uniquement pour le fun afin de valider les rsultats obtenus la
main et surtout pour jouer avec les thormes mathmatiques que j'ai tudis en dtail dans le
cadre de mes tudes (dmonstrations mathmatiques disponibles dans mon ouvrage sur les
Mathmatiques Appliques).

R4. Suite des questions de la part de lecteurs: Non, nous ne sommes pas rtribus par R
pour leur faire de la pub Des logiciels comme:

XLStat, SPSS, Minitab, SAS, PSPP, Gauss, MATLAB, Statistica, Stata, Medcalc,
StatsDirect, SigmaXL, NumXL, JMP, Weibull++, Design-Expert, PlanExpert, UNISTAT

font peu prs pareil relativement aux sujets couverts dans ce document. Il fallait juste que
nous fassion un choix... (nous ne pouvons pas passer notre temps crire des supports sur
tous les types de logiciels!) et celui-ci s'est port sur le logiciel utilis par des coles dans
lesquelles nous intervenons parfois en tant que consultants. Cependant si des passionns
veulent reproduire le contenu du prsent livre avec leur logiciel de statistique favori qu'ils
n'hsitent pas! Ce serait mme fort intressant de comparer les rsultats!! Si nous avons le
temps nous crirons le mme contenu mais avec SPSS (cela tant dj fait avec Minitab et
partiellement avec Microsoft Excel).

Pour terminer, nous tenons remercier ici les quelques collgues et clients qui ont bien voulu
nous faire part de leurs remarques pour amliorer le contenu de ce livre lectronique. Il est
cependant certain qu'il est encore perfectible sur de nombreux points et qu'il va encore voluer
puisqu'il y a encore une petite dizaine de sujets dont les dmonstrations mathmatiques sont
en cours de rdaction pour la prochaine dition du livre de Vincent ISOZ sur les
Mathmatiques Appliques et nous montrerons comment les utiliser aussi avec R.

Si vous souhaitez tre inform des nouvelles versions majeures de ce document n'hsitez pas
crire un mail dans ce sens Vincent Isoz: isoz@sciences.ch.

PS: Les fichiers utiliss pour les exemples qui vont suivre ne sont fournis qu'aux entreprises,
administrations et coles faisant appel nos services de consultants/professeurs.

R Statistical Software 18/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

propos des rdacteurs


ISOZ Vincent
Domicili ce jour Lausanne (Suisse)

Formation: Ingnieur Physicien HES


quivalence Internationale: Bachelor of Science
Fonction: Consultat scientifique senior

Anne de naissance: 1978

Courriel: isoz@sciences.ch

Actuellement, je travaille en tant qu'employ pour l'entreprise Scientific Evolution Srl


spcialiste dans le conseil et la formation et techniques quanitatives pour les hauts-potentiels.
Mes tches consistent faire du conseil (franais, anglais et allemand) en mathmatiques
appliques dans le tutorat d'analystes quantitatifs (niveau Bac+5 Bac+7). Accessoirement, je
suis le rdacteur de plusieurs livres lectroniques dans les domaines suivants:

- matrise statistique des processus/procds (mthodes paramtriques et non paramtriques)


- modlisation prvisionnelle/dcisionnelle avance (arbres de dcisions, chanes de Markov)
- recherche oprationnelle (simplexe, algorithmes gntiques, algorithme GRG)
- data mining (rseaux de neurones, ACP, AFC, rgressions, scoring, clustering, etc.)
- modlisation du risque en gestion de projets et finance d'entreprise (monte-carlo, etc.)
- gestion de projets (modles et best practices thoriques EFQM+Six Sigma, MS Project)
- ISO 9001:2008, 5807:1985, 10015:1999, 31000+31010:2009, 8258:1991, 10017:2003, etc.
- Adobe Photoshop et Illustrator
- 12 applications de la suite Microsoft Office System (Project, Visio, SharePoint, Access, etc.)

ce jour interventions dans plus de ~200 entreprises dont 10 du Fortune 500 selon listing
2009 et 3 universits et coles d'ingnieurs suisses dans des cours de modlisation de bases de
donnes et simulations stochastiques du risque. Formation de plusieurs dirigeants de
multinationales en one to one.

Accessoirement j'interviens pour des formations sur des logiciels comme MS Project,
MS Visio, MS Access et une vingtaine d'autres dont je dlgue l'organisation des entreprises
spcialises dans la formation continue en bureautique (niveau licence universitaire et en-
dessous).

Enfin, je conseille aussi vivement toute personne souhaitant vraiment matriser le sujet de
lire mon e-book sur les Mathmatiques Appliques (~4'900 pages) ou de prfrence la version
anglophone (>5'500 pages).

R Statistical Software 19/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

KOLANI Daname
Domicili ce jour Casablanca (Maroc)

Formation: cole Nationale de Commerce et de Gestion -


Casablanca (BAC + 5)
Fonction: Consultat scientifique junior

Anne de naissance: 1990

Courriel: daname.kolani@hotmail.com

Actuellement, diplm d'cole de commerce (option finance), je suis un passionn de la


finance, de l'conomie, de l'conomtrie, des statistiques & probabilits. Outre, les thories
qui y sont associes, j'ai un grand intrt pour les outils qui fondent l'ensemble de ces
domaines. Je suis bilingue (Franais & Anglais) et mes comptences spcifiques concernent:

- La finance d'entreprise (Evaluation d'investissement & de financement, Analyse et


diagnostic financier, Contrle de gestion et Evaluation de socit )

- La finance de march (gestion de portefeuille financier, l'valuation d'actif financier,


outils de gestion de risque)

J'ai aussi un intrt pour l'outil informatique notamment les logiciels comme R Project, VBA
Microsoft Excel, ,MATLAB, EViews et IBM SPSS

J'ambitionne me lancer dans le consulting et par l, contribuer l'optimisation des dcisions


financires et la mise en place de stratgie financire efficiente cadrant avec le modle
d'affaire des entreprises.

R Statistical Software 20/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avertissements
Le contenu du prsent support est labor par un processus de dveloppement par lequel des
experts en statistiques parviennent un consensus. Ce processus qui rassemble des
participants bnvoles recherche galement les points de vue de personnes intresses par le
sujet de cet ouvrage. En tant que responsable du prsent support, j'assure l'administration du
processus et je fixe les rgles qui permettent de promouvoir l'quit dans l'approche d'un
consensus. Je me charge galement de rdiger les textes, parfois de les tester/valuer ou de
vrifier indpendamment l'exactitude/solidit ou l'exhaustivit des informations prsentes.

Je dcline toute responsabilit en cas de dommages corporels, matriels ou autres de quelque


nature que ce soit, particuliers, indirects, accessoires ou compensatoires, rsultant de la
publication, de l'application ou de la confiance accorde au contenu du prsent support. Je
n'mets aucune garantie expresse ou implicite quant l'exactitude ou l'exhaustivit de toute
information publie dans le prsent support, et ne garantit aucunement que les informations
contenues dans cet ouvrage satisfassent un quelconque objectif ou besoin spcifique du
lecteur. Je ne garantis pas non plus les performances de produits ou de services d'un fabricant
ou d'un vendeur par la seule vertu du contenu du prsent support.

En publiant des textes, il n'est pas dans l'intention principale du prsent support de fournir des
services de spcialistes ou autres au nom de toute personne physique ou morale ni pour mon
compte, ni d'effectuer toute tche devant tre accomplie par toute personne physique ou
morale au bnfice d'un tiers. Toute personne utilisant le prsent support devrait s'appuyer sur
son propre jugement indpendant ou, lorsque cela s'avre appropri, faire appel aux conseils
d'un spcialiste comptent afin de dterminer comment exercer une prudence raisonnable en
toute circonstance. Les informations et les normes concernant le sujet couvert par le prsent
support peuvent tre disponibles auprs d'autres sources que le lecteur pourra souhaiter
consulter en qute de points de vue ou d'informations supplmentaires qui ne seraient pas
couverts par le contenu du prsent site Internet.

Je ne dispose (malheureusement...) d'aucun pouvoir dans le but de faire respecter la


conformit au contenu du prsent ouvrage, et je ne m'engage nullement surveiller ni faire
respecter une telle conformit. Je n'exerce ( ce jour...) aucune activit de certification, de test
ni d'inspection de produits, de conceptions ou d'installations fins de sant ou de scurit des
personnes et des biens. Toute certification ou autre dclaration de conformit en matire
d'informations ayant trait la sant ou la scurit des personnes et des biens, mentionne
dans le prsent support, ne peut aucunement tre attribue au contenu du prsent support et
demeure sous l'unique responsabilit de l'organisme de certification ou du dclarant concern.

Et pour rappel:

Tous les modles sont faux


Certains modles sont meilleurs que d'autres
Le modle le meilleur ne peut jamais tre connu avec certitude!
Plus simple est le modle, mieux c'est!

R Statistical Software 21/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 22/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comment utiliser ce livre


Dans le cadre des tudes suprieures, ce livre peut tre utilis pour des sminaires de niveau
licence, master ou doctorat dans de nombreux domaines des sciences pures et exactes. Les
sminaires dans lesquels nous utilisons ce matriel est une partie intgrale des programmes de
Scientific Evolution Srl, o les apprenants ont dj derrire eux un cursus universitaire ni
licence ou matrise dans leur spcialisation.

Parce que les mthodes des mathmatiques appliques s'apprennent par la pratique et
l'exprience, nous concevons un sminaire sur MATLAB comme un processus
d'apprentissage par la pratique. Nous structurons nous sminaires de modlisation
mathmatiques autour d'un ensemble de problmes qui require aux apprenants de construire
des modles qui aident s'organiser et prendre des dcisions. L'important est que les
modles doivent tre consistants avec la thorie et back-tests. Pour rpondre cet impratif,
il est ncessaire pour l'apprenant de combiner les mathmatiques thoriques avec la
modlisation. Le rsultat est que l'apprenant matrise la thorie et, plus important, qu'il
acquire les mthodes permettant d'appliquer la thorie des cas pratiques rels. La capacit
de critiquer et identifier les limitations d'outils mathmatiques sensibles est la valeur ajoute
la plus importante de nos sminaires.

Les problmes avec solutions dans le texte fournissent une opportunit d'appliquer les notions
thoriques de petits cas pratiques tirs ou inspirs pour la majorit de cas rels. la fin des
sminaires les apprenants ont amlior leurs comptences et connaissances des outils
thoriques et computationnels majeurs.

Il est vraiment difficile de traiter toute la matire de ce livre en un semestre. Il faut beaucoup
de temps pour expliquer la finesse des concepts aux apprenants. Le lecteur est alors encourag
de choisir les sujets qui lui sont ncessaires pendant son temps d'tude. Ainsi, il n'est pas
obligatoire de parcourir les chapitres dans l'ordre dans lesquels ils sont prsents mais cela
peut toutefois aider de faon significative

En un mot, ce livre offre une large varit de sujets qui se prtent la modlisation.

R Statistical Software 23/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Votre avis nous intresse!


En tant que lecteur de ce document, vous tes le critique et le commentateur le plus important.
Votre opinion compte et il est trs intressant de savoir ce qui est bien, ce qui peut tre mieux
et les sujets que vous souhaiteriez voir tre traits.

Vous pouvez m'envoyer un e-mail pour partager ce que vous avez aim ou dtest dans le
prsent document afin d'en assurer une amlioration continue.

Si vous souhaitez complter le prsent support avec un sujet qui vous tient coeur et pour
lequel vous avez la dmonstration mathmatique n'hsitez pas me contacter. J'intgrerai le
sujet en prcisant votre nom et prnom.

Notez que malheureusement, je ne peux pas rpondre gratuitement des questions techniques
d'ingnierie ou de problmatique d'entreprise par e-mail pour des raisons professionnelles
videntes.

E-mail: isoz@sciences.ch

R Statistical Software 24/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Remerciements
Cet e-book n'aurait probablement jamais pu voir le jour sans l'apport dsintress de
nombreux contribuants ce bijou qu'est R. Je souhaiterais donc exprimer ma plus grande
grattitude et mes plus sincres remerciments l'quipe qui maintient R et tous les
contributeurs des diffrentes packages utiliss et cits dans le prsent ouvrage. Je ne
manquerai pas d'ajouter leur nom tous juste ici quand j'aurai un peu plus de temps.

R Statistical Software 25/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dons
Ce PDF fait partie des livres companions d'un ouvrage thorique qui se nomme Opera
Magistris. Si vous avez aim son contenu et que vous souhaitez nous soutenir pour le mettre
jour, n'hsitez pas nous faire un don! Mme 1 cela fait toujours plaisir!

https://www.tipeee.com/elements-of-applied-mathematics

Merci d'avance.

R Statistical Software 26/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Histoire de R
Voici quelques dates majeures concernant le logiciel R:

1992: Le dveloppement de R comment en tant que projet de recherch Auckland,


(Nouvelle-Zlande) par Robert Gentleman et Ross Ihaka

1993: Publication des premiers fichiers binaires Statlib

1995: R est distribute sous la lience logiciel open-source, GPL2

1997: Composition de l'quire "R core"

1997: L'association CRAN est fonde (par Kurt Hornik et Fritz Leisch)

1999: Le site internet R r-project.org est cr

2000: Publication de R 1.0.0 (29 fvrier)

2001: Cration de R News (qui deviendra plus tard le Journal R)

2003: La foundation R est cre

2004: Premire conference UseR! ( Vienne)

2004: Publication de R 2.0.0

2009: Premire edition du R Journal

2011: 14 Novembre, publication de la version 0.1 de ce livre

2013: Publication de R 3.0.0

2015: Fondation du Consortium R avec la participation de la fondation R.


Dpassement des 10'000 packages.

2016: Nouveau logo R

R Statistical Software 27/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Liens Internet
http://www.sciences.ch (le site Internet compagnon avec les dmonstrations mathmatiques)

http://www.r-project.org/

http://www.rstudio.com/

https://www.visualstudio.com

http://cran.univ-lyon1.fr/index.html

http://cran.r-project.org/web/packages/

http://www.itl.nist.gov/div898/handbook/

http://www.cookbook-r.com

http://www.rcommander.com

http://rgraphgallery.blogspot.ch/

http://statcheck.io/

http://shiny.rstudio.com/

https://radiant-rstats.github.io/docs/

https://plot.ly/

Forums

http://www.talkstats.com

http://statistiques.forumpro.fr

http://www.les-mathematiques.net

http://www.developpez.net/forums/f1179/autres-langages/autres-langages/r/

http://forums.cirad.fr/logiciel-R/

https://pubpeer.com/

Solutions Calcul Distribu

http://www.techilatechnologies.com

https://www.microsoft.com/en-us/cloud-platform/r-server

Blogs

http://freakonometrics.hypotheses.org

R Statistical Software 28/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sur l'abration de grer du business de haut niveau avec des tableurs

http://staffweb.cms.gre.ac.uk/~cd02/EUSPRIG/

Data

https://opendata.swiss

http://ec.europa.eu/eurostat/data/database
http://www.quandl.com

https://data.gov.uk

http://www.data.gov

http://www.census.gov/data.html

http://www.opendatanetwork.com

http://open-data.europa.eu/en/data/

http://wiki.dbpedia.org/

http://dataportals.org/

http://www.healthdata.gov/

https://azure.microsoft.com/en-us/marketplace/

http://www.gapminder.org/data/

http://finance.yahoo.com/

http://archive.ics.uci.edu/ml/index.html

http://www.ncdc.noaa.gov/data-access/quick-links#loc-clim

Quiz/Exercices

http://www.scientific-evolution.com/qcm/fr/start_session/2a6fca7473/

http://www.r-exercises.com

R Shiny

http://deanattali.com/blog/advanced-shiny-tips/

R Statistical Software 29/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Fichiers de donnes
Les fichiers de donnes utilises dans ce livre, c'est--dire:

579 fichiers (*.r, *.rprofile, *.csv, *.xml, *.jpg, *.mdb, *.xls, etc)
Classs dans 32 dossiers
Pour un total 579 MB de de donnes

sont mis disposition, avec mises jour gratuites perptuelles, uniquement aux apprenants
ayant suivi nos formations correspondantes ce livre ou ayant pay (ou fait un don) d'une
somme quivalente de 499$.

Les universits, coles d'ingnieurs et les socits prives doivent acheter une seule fois le
package de fichiers pour une utilisation illimite de leurs tudiants ou employs, mais limit
une seule localisation gographique.

Pour obtenir plus d'informations sur le processus d'achat, vous pouvez contacter envoyer un
courriel l'adresse suivante: isoz@sciences.ch

R Statistical Software 30/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dons
Ce livre fait partie des livres compagnons du compendium de mathmatiques thorique Opera
Magistris d'environ 6'000 pages qui est lui aussi gratuit.

et ainsi des livres gratuits quivalent sur Minitab et MATLAB.

Afin de poursuivre la rdaction de ce compendium et continuer faire voluer ce livre gratuit


sur R vos dons sont la bienvenue et nous vous en remercions d'avance.

Vous pouvez faire un don via Tipeee:

https://www.tipeee.com/elements-of-applied-mathematics

R Statistical Software 31/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mdiagraphie
Voici une liste de livres ou vidos d'une qualit pdagogique et de rigueur remarquable que
nous avons eue la chance d'avoir entre les mains et nous recommandons l'acquisition. Nous en
avons lu beaucoup d'autres mais qui sont tellement mauvais qu'ils ne valent pas la peine d'tre
mentionns:

Le lecteur aura donc compris que je recommande trs fortement de complter la lecture du
prsent e-book (non exhaustif concernant R!) par la liste de lecture ci-dessous.

lments de mathmatiques appliques / ~4'900 pages / ditions


Sciences.ch / Vincent ISOZ / 3me dition
ISBN: 978283999327

Commentaire: Livre rdig par les soins de votre serviteur... Il


contient les dmonstrations mathmatiques dtailles de tous les
outils prsents dans ce prsent support et pas que...

Opera Magistris / 5'576 pages / Editions Sciences.ch / Vincent ISOZ


/ 3rd dition
ISBN: 978283999327

Commentaire: quivalent du livre en franais ci-dessus mais en


anglais, bien plus complet et de qualit graphique considrablement
meilleure!

Attention!!! Pendant les sminaires et confrences de moins ou gal


3 jours je prends oralement et dlibrment des raccourcis thoriques
dangereux voire parfois partiellement faux dlibrment cause du
manque de temps pour aller dans les dtails.

Six Sigma Statistics With Excel and Minitab / 386 pages / ditions
McGrawHill / Issa BASS
ISBN: 9780071542685

Commentaire: C'est avec ce livre que j'ai t initi Minitab lors de


ma formation Green Belt chez mon deuxime employeur. Il n'y a
aucun dmonstration mathmatique et trs peu d'quations mais les
exemple donns ont une orientation industrielle trs utile et cela avec
un clart pdagogique remarquable

100 Statistical tests / 257 pages / ditions SAGE / Gopal K. KANJI


ISBN: 101412923751

Commentaire: Un "must have" listant 100 tests statistiques avec les


hypothses d'utilisation, les limites, les formules (sans
dmonstration) et un exemple chaque fois.

R Statistical Software 32/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Applied Multivariate Statistics for the social sciences / 663 pages /


ditions Routledge / James P. STEVENS
ISBN: 9780805859010

Commentaire: Livre un peu vieillissant mais contient des exemples


trs dtaills avec tapes de calcul de test multivaris complexes, ce
qui est difficile trouver dans la littrature. Par contre, il n'y a
aucune dmonstration dtaille.

Business Statistics / 892 pages / ditions Routledge / Ronald M.


WEIERS / 7me dition

ISBN: 053845217X

Commentaire: Le livre !!! mettre entre les mains ceux qui


commencent tudier les statistiques et qui cherchent un ouvrage
sans dmonstrations mathmatiques mais prsentant de faon trs
claire et pdagogique des tests jusqu'au niveau du Master et
accompagns chaque fois de faon dtaille de Microsoft Excel et
Minitab.

STATISTIQUES: Dictionnaire encycloptique / 614 pages / ditions


Springer / Yadolah DODGE
ISBN: 9782287720932

Commentaire: Un petit dictionnaire trs utile contenant un peu tout


de faon trs condense sur tout le domaine des statistiques. Trs
pratique pour retrouver des dfinitions qui gnrent des dbats en
entreprise.

Statistical analysis methods for chemists / 390 pages / ditions The


Royal Society of Chemistry / William P. GARDNIER
ISBN: 085404549X

Commentaire: Un livre vieillissant sans dmonstrations


mathmatiques mais qui intressera les chimistes utilisant Minitab et
qui veulement apprendre une petite partie du logiciel avec des
exemples familiers leur domaine d'activit.

Statistical analysis methods for chemis / 260 pages / ditions


Imperial College Presse / Michael THOMPSON, Philip J.
LOWTHIAN
ISBN: 1848166168

Commentaire: Uniquement thorique, mais sans dmonstrations


mathmatiques ni exemples ou exercices il constitue un bon
complment l'ouvre propos juste prcdemment qui tait aussi
destin aux chimistes.

R Statistical Software 33/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

GGPlot2 / 118 pages / PDF gratuit sur Internet / Danam Kolani


ISBN: -

Commentaire: ce jour le meilleur livre sur GGPlot2 toutes langues


confondues et l'unique en Franais sur le sujet. Contrairement au
livre du crateur originel du package, ce PDF est comprhensible et
progresse pas pas de manire structure. Lecture recommande
tous ceux qui veulent faire du R Shiny!

Statistics with R / 1266 pages / PDF gratuit sur Internet / Vincent


ZOONEKYND
ISBN: -

Commentaire: Un magnifique e-book extrmement complet sur de


nombreux domaines d'applications de R. C'est selon mon opinion la
bible R en anglais ce jour (mme plus complet que les ouvrages
payants qui se disent tre des bibles). Je lui suis redevable de
nombreux emprunts et cela restera une rfrence!

Discovering Statistics using SPSS / 854 pages / ditions Sage /


Andy Field / 3me dition
ISBN: 9781847879066

Commentaire: Comme je le dis toujours au dbut des cours: dans un


contexte scientifique avoir seulement un logiciel d'analyse est
insuffisant ne serait-ce que pour ce couvrir contre les bugs et les
variantes d'algorithmes. Ds lors, un deuxime outil complmentaire
et bien suprieur Minitab pour la partie statistique est SPSS!
L'auteur de ce livre est remarquable! Outre le fait qu'il ait aussi crit
un ouvrage de la mme qualit sur R il a beaucoup d'humour, un sens
aigu de la pdagogie et sait particulirement bien prsenter des outils
informatiques avec des exemples provenant de donnes relles! Un
must have absolu!

Pratiquer les plans d'expriences / 551 pages / ditions Dunod /


Jacque Goupy
ISBN: 2100042173

Commentaire: Comme je le dis toujours au dbut des cours: dans un


contexte scientifique avoir seulement un logiciel d'analyse est
insuffisant ne serait-ce que pour ce couvrir contre les bugs et les
variantes d'algorithmes. Ds lors, un deuxime outil complmentaire
Minitab pour les plans d'exprience est JMP! Et ce livre est d'un
niveau de qualit remarquable tant par le niveau de dtail des
exemples industriels qui y sont donns tape par tape que par la
clart des explications et de la prsence parfois de quelques
dmonstrations mathmatiques accompagnes de nombreuses
figures. De plus, l'auteur est connu dans tout le monde francophone
est un consultant dont la renomme n'est plus faire.

R Statistical Software 34/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

A primer on experiments with mixture / 368 pages / ditions Wiley /


John CORNELL
ISBN: 0470643382

Commentaire: Il est trs difficile de trouver de la littrature dtaille


et rigoureuse sur le sujet des plans de mlange ("mixture design" en
anglais) mais John Cornell russit ici un coup de matre. Son
ouvrage est complet, rigoureux, dtaill, fourni d'exemple pertinents!
On regrettera peut-tre juste le fait qu'il ne fasse pas le parallle avec
un logiciel informatique de son choix mais bon... Achat
recommand!

Le logiciel R / 527 pages / ditions Springer / Pierre LAFAYE DE


MICHEAUX + Remy DROUILHET + Benoit LIQUET
ISBN: 9782817801148

Commentaire: Un ouvrage sur R d'une qualit pdagogique


remarquable. Il pourrait intresser les lves de Terminale et de 1er
cycle. La structure est excellente et des trucs et astuces ainsi que des
avertissements sont donns tout au long de l'ouvrage.

R for dummies/ 406 pages / ditions For Dummies / Joris MEYS +


Andrie DE VRIES
ISBN: 9781119962847

Commentaire: Non ce n'est pas une blague. Curieusement ce livre


traite de sujets de base qui manquent dans de nombreux livres
considrs comme des rfrences et qui sont pourtant souvent
demands par les employs en entreprise. C'est rien que pour cette
raison que je le conseille.

R in Action/ 474 pages / ditions MANNING/ Robert I.


KABACOFF
ISBN: 9781935182399

Commentaire: Un petit livre bien sympathique pour dbut sur R.


lire peut-tre aprs avoir parcouru R for Dummies. Mais l'achat en
vaut la peine, il y a quelques bonnes infos et le site web associ est
trs complet.

The R Book / 951 pages / ditions Wiley/ Michael J. KRAWLEY


ISBN: 9780470510247

Commentaire: L'ouvrage se fait un peu vieux (manque de couleurs et


de captures d'crans) mais il est relativement complet en ce qui
concerne les tests statistiques traditionnels surtout dans les domaines
de l'analyse de la variance (par contre il ne traite pas de finance ou de
data mining).

R Statistical Software 35/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comprendre et raliser des tests statistiques l'aide de R / 695 pages


/ ditions de Boeck / Gal Millot / ISBN: 9782804101794

Commentaire: ma connaissance c'est l'ouvrage en franais le plus


complet sur R relativement aux tests statistiques. Plus complet que
Le logiciel R prsent plus haut mais mois complet que le prsent
support lectronique (qui est en franais pour rappel...).

R Graphics Cookbook / 413 pages / ditions O'Reilly/ Winston


Chang / ISBN: 9781449316952

Commentaire: Un bon livre pour se familiariser en douceur avec la


package ggplot2. Les forums et le web en gnral sont cependant
devenus bien plus complets que cet ouvrage qui perd alors un peu de
son intrt (une deuxime dition avec deux ou trois fois plus de
pages en relancerait l'intrt).

Biostatistical Design and Analysis Using R / 577 pages / ditions


Wiley-Blackwell/ Murray Logan / ISBN: 97814433524

Commentaire: Quelques bons lments tirer particulirement au


niveau des analyses de la variance. Bon si on retire les notions de
base de R le livre se rduit en ralit 200 pages...

Marketing Metrics / 432 pages / ditions Pearson FT Press / Paul W.


Farris ,Neil T. Bendle, Phillip E. Pfeifer, David J. Reibstein / ISBN:
0137058292

Commentaire: Suite la demande d'une grosse entreprise suisse dont


un responsable Marketing ne savait pas ce dont il pouvait mesurer en
Marketing videmment faut pas chercher en franais sur Google
pour trouver ce genre de livre.

Predictive Analytics using R / 553 pages / LuLu Press / Jeffrey


Strickland / ISBN: 9781312841017

Commentaire: Suite la demande d'une grosse entreprise suisse dont


un responsable Marketing ne savait pas ce dont il pouvait mesurer en
Marketing videmment faut pas chercher en franais sur Google
pour trouver ce genre de livre.

En ce qui concerne les vidos pour l'instant nous ne pouvons que recommender en ce qui
concerne la langue franaise (mme si ce n'est qu'une dcouverte) les vidos structures et
retravailles avec un niveau de qualit professionnel de Video2Brain et effectues par Vincent
(cliquez sur les images pour ouvrir la page web correspondante):

R Statistical Software 36/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et R pour Data Scientists:

R Statistical Software 37/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

2. Normes et validation
Rappelons conformment ce que nous avons vu dans le cours thorique qu'il est
indispensable pour le chercheur/statisticien/ingnieur professionnel de se baser sur les normes
suivantes (dans l'ordre des plus utilises) pour son travail et tous les outils dont le prsent
support fait l'objet:

ISO 31:2006
Systme international d'units

ISO 3534-1:1999
Vocabulaire et symbole des statistiques

ISO 2602:1980
Interprtation statistique de rsultats d'essais - Estimation de la moyenne - Intervalle de
confiance

ISO 3301:1975
Interprtation statistique des donnes - Comparaison de deux moyennes dans le cas
d'observations apparies

ISO 5479:1997
Interprtation statistique des donnes - Tests pour les carts la distribution normale

ISO 3494:1976
Interprtation statistique des donnes -- Efficacit des tests portant sur des moyennes et des
variances

ISO 11453:1996
Interprtation statistique des donnes - Tests et intervalles de confiance portant sur les
proportions

ISO 16269-4:2010
Interprtation statistique des donnes Dtection et traitement des valeurs aberrantes

ISO 16269-6:2005
Interprtation statistique des donnes - Dtermination des intervalles statistiques de tolrance

ISO 16269-8:2004
Interprtation statistique des donnes - Dtermination des intervalles de prdiction

ISO/TR 18532:2009
Lignes directrices pour l'application des mthodes statistiques la qualit et la normalisation
industrielle

ISO 3534-3:1999
Plans d'exprience (ou AFNOR NF X 06-080 + NF X 06-081)

ISO 8285:1991
Cartes de contrle de Shewhart

R Statistical Software 38/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ISO 17025:2005
Exigences gnrales concernant la comptence des laboratoires d'talonnages et d'essais

ISO 10017:2003
Lignes directrices pour les techniques statistiques relatives l'ISO 9001:2000

ISO 13300:2006
Guide gnral l'attention du personnel des laboratoires d'analyse sensorielle

ISO 31010:2009
Techniques d'valuations des risques

ISO 3951:2006
Rgles d'chantillonnage pour les contrles par mesures

ISO 11095:1996
talonnage linaire utilisant des matriaux de rfrence

ISO 22514-2:2013
Indices de capabilit

ISO 5725
Prcision et fiabilit des mesures en laboratoire (on y retrouve le test C de Cochran et aussi
celui de Dixon)

Bref en gros en 2014 les normes relatives l'analyse statistique peuvent se rsumer avec la
cartographie disponible sur le lien suivant:

https://fr.scribd.com/doc/263063855/AFNOR-Cartographie-Normes-Statistiques

propos de la validation de l'utilisation du logiciel R par la FDA (Food and Drug


administration) il est peut-tre utile d'informer le lecteur que ceci n'est par le rle de la FDA
mais de l'acheteur de s'assurer du bon fonctionnement de la solution informatique choisie
(conformment la norme ISO 9241-11 vue dans le cours de gestion de projets pour tout
logiciel ou machine). Par ailleurs, signalons l'article du code des rgulations Titre 21 partie
820.70(i):

When computers or automated data processing systems are used as part of


production or the quality system, the manufacturer shall validate computer
software for its intended use according to an established protocol. All software
changes shall be validated before approval and issuance. These validation
activities and results shall be documented.

et aussi (Final Guidance for Industry and FDA Staff, January 11, 2002):

The device manufacturer is responsible for ensuring that the product


development methodologies used by the off-the-shelf (OTS) software developer
are appropriate and sufficient for the device manufacturer's intended use of that
OTS software. For OTS software and equipment, the device manufacturer may or
may not have access to the vendor's software validation documentation. If the
vendor can provide information about their system requirements, software
requirements, validation process, and the results of their validation, the medical

R Statistical Software 39/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
device manufacturer can use that information as a beginning point for their
required validation documentation.

R Statistical Software 40/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

3. Installer R
En premire anne d'Universit je considre au 21me sicle que tout tudiant doit dj savoir
installer un logiciel seul sur Microsoft Windows ou Mac OS (sinon quoi il peut se faire des
soucis pour sa carrire professionnelle). Donc ici je ne vais pas montrer comment installer R
mais juste prsenter le rsultat de l'installation except pour Linux.

Microsoft Windows
Sous Microsoft Windows 7 (cas le plus courant mais scientifiquement le plus mauvais
choix):

On peut bien videmment travailler avec R dans Microsoft Windows en utilisant le Shell
(suffit de double cliquer sur le fichier R.exe qui est dans le dossier d'installation de R):

R Statistical Software 41/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 42/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mac OS
Sous Mac OS l'installation est aussi triviale. Le rsultat donnant:

R Statistical Software 43/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Scientific Linux 6.5


Sous Scientific Linux (RedHat) 6.5 (cas le moins courant mais le meilleur choix car
optimis par le FermiLab et le CERN pour les applications scientifiques) voici comment
procder pour installer R (pour plus d'informations sur Scientifc Linux consulter mon e-book
en anglais ici http://www.sciences.ch/dwnldbl/divers/ScientificLinux.pdf).

D'abord vous ouvrez une fentre de terminal:

et nous allons d'abord nous assurer d'avoir les droits suffisants pour installer R en faisant
quelques manipulations non triviales. D'abord nous ouvrons le fichier de gestion des droits
gnraux avec l'diteur nano:

Et dans l'diteur il faut rajouter la ligne mise en vidence ci-dessous en rouge (il faut
descendre un peu dans le fichier texte pour trouver l'endroit o mettre cette ligne):

R Statistical Software 44/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

puis on fait un Ctrl+O, Entre, Ctrl+X.

Ensuite, nous crivons (il s'agit de RStudio Server mais il contient le coeur core de la
dernire version de R):

Cela va le tlcharger comme le montre la capture suivante:

R Statistical Software 45/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous lanons l'installation:

Aprs 10 15 minutes (le temps de tlcharger environ 60 modules et de les installer) vous
pouvez vrifier que l'installation soit OK.

Ensuite, pour lancer R, il suffit d'crire:

Ce qui donne:

R Statistical Software 46/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voil cela donne le squelette de base de R pour Scientific Linux. On doit probablement
pouvoir faire plus simple mais je n'ai pas trouv (et surtout je n'ai pas le temps de chercher).

Remarque: Depuis Scientific Linux 7 il suffit d'crire:

yum install R

Attention!!! La totalit des fichiers *.csv ont t crs sous Microsoft Windows et donc sont
incompatibles au niveau encodage dans Linux. Il faut les soit copier/coller le contenu dans un
fichier texte nouvellement cr, soit refaire une enregistr sous avec un encodage Linux

Pour la suite nous nous restreindrons au cas le plus frquent chez les praticiens de l'industrie:
MS Windows (sic!).

R Statistical Software 47/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

RAD IDE Divers


Pour la culture gnrale du lecteur nous allons montrer ici quelques interfaces classiques de
R.

D'abord celle par dfaut pour le monde Microsoft:

Ensuite celle par dfaut dans le monde Linux (Ubuntu ou Scientific Linux ou CentOS avec
une interface du type GNOME) ::

R Statistical Software 48/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Studio (dont nous avons dj donn le lien Internet au dbut de ce livre) ::

R Statistical Software 49/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Visual Studio.Net depuis le 1er trimestre 2016 en installant le complment RVTS disponible
sur (attention bien suivre la procdure et particluriment que l'option Web Developer Tools
soit coche l'installation de VS.Net!) ::

http://microsoft.github.io/RTVS-docs/installation.html

Ce dernier est utile si vous travaillez chez un employeur qui ne fait pas confiance en ce qui ne
provient pas de chez Microsoft (no comment).

Sinon en ligne:

http://rextester.com
http://www.r-fiddle.org/#/
https://www.jdoodle.com/execute-r-online

R Statistical Software 50/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

4. Divers R (configuration, packages,)


Changer la langue de l'interface
Par dfaut, R s'ouvrira dans la langue que vous avez choisie lors de l'installation. Avec les
versions 3.0.2 et antrieures, il n'existe pas ce jour de menu permettant de changer la langue
aprs coup.

Dans les multinationales en Suisse, o l'on travaille souvent en 3 ou 4 langues et il est donc
utile de savoir comment changer la langue de l'interface lorsque l'on rdige une
documentation.

Voici la procdure:

Crez une copie du raccourci de R:

Et dans les proprits du raccourci:

On change le paramtre cible en rajoutant un argument:

R Statistical Software 51/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et voil... c'est tout!

Changer le dossier de travail par dfaut chaque session


Le paramtrage le plus demand en cours pour R est celui le changement du dossier de travail
par dfaut. Pour faire simple imaginons que nous allons mettre tous nos fichiers d'exercices
la racine du disque C:\. Ds lors, il vous pouvez utiliser la commande getwd( ) pour voir dj
quel est le dossier par dfaut par curiosit:

et ensuite vous pourrez le changer avec la commande setwd( ) et vrifier que le nouveau
dossier de travail par dfaut a bien t chang:

R Statistical Software 52/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi voir les fichiers qu'il y dans le dossier de notre choix avec la commande
list.files( ). Par exemple:

avec la commande file.info( ) nous pouvons obtenir certaines informations utiles sur un
fichier:

R Statistical Software 53/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Changer dfinitivement le dossier de travail par dfaut


Pour changer dfinitivement le dossier de travail par dfaut de R, vous pouvez vous rendre
dans le menu Fichier/Changer le rpertoire courant:

et vous faites votre choix:

R Statistical Software 54/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais lorsque vous fermerez et ouvrirez nouveau R, il aura oubli ce changement. Vous
pouvez vrifier cela en tapant la commande getwd( ):

Ds lors, la mthode consiste crer un fichier .Rprofile dans le dossier de dmarrage par
dfaut avec la commande suivante au dbut:

R Statistical Software 55/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vider la fentre de session


Pour vider la fentre de commande, sur PC il faut faire Ctrl+L. Vous obtiendrez alors une
fentre toute vide (de toute faon ce raccourci est indiqu dans le menu Edition):

Pour vider la fentre en mode Shell Microsoft Windows, cette dernire commande ne
fonctionne pas! Le mieux est d'utilisr la fonction mise() du package mise:

R Statistical Software 56/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Version de R et autres informations


Pour connatre sa version de R et avoir quelques informations pertinentes sur son installation,
on peut toujours excuter la commande suivante sessionInfo( ):

ou pour avoir plus d'informations en utilisant la commande R.version:

R Statistical Software 57/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et pour obtenir les informations concernant la licence, nous utilisons la fonction licence( ):

R Statistical Software 58/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou encore le total de mmoire vive install avec memory.limit( ):

ou encore certains paramtres systmes en utilisation une transformatio de liste (lapply( )) sur
la base de la commande systme Sys.gelocale( ):

Dfinir le nombre de dcimales


En gnral quand vous ferez des calculs dans R vous voudrez une certaine prcision des
calcules. Pour ce faire, vous pouvez utiliser la commande options(digits= ):

R Statistical Software 59/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Parfois pour certains tests statistiques quand la p-value est trs petite, R renvoie des toiles (*)
comme nous le verrons lors de notre tude de la rgression linaire univarie (par exemple...):

Pour dsactiver cela, il suffit dans R, d'crire:

R Statistical Software 60/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Enfin, certains analyses comme l'ANOVA ci-dessus le paramtrage:

n'aura aucun effet! Il faut alors par exemple crire:

R Statistical Software 61/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajouter des commentaires


Lorsque vous crivez un paquet de commandes il peut tre trs utile de commenter vos
manipulations (l'usage est d'avoir normalement un commentaire au moins pour trois lignes de
commandes). Par exemple:

R Statistical Software 62/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Obtenir de l'aide sur une commande ou sur un package


Contrairement des logiciels comme Excel, Word, PowerPoint, Outlook, Minitab, SPSS et
autres classiques du genre, il y a beaucoup trop d'outils dans R pour que quiconque puisse les
retenir tous (un expert connatre maximum 4'000 5'000 commandes par coeur).

Nous pouvons lancer l'aide gnrale ave la commande help.start( ) qui ouvrira la page web
correspondante:

Pour obtenir de l'aide sur une commande qui vous semble mystrieuse, voici comment faire
(du moins quand il y a une documentation...):

et pour un package on utilisera la commande help( ):

ou pour chercher une expression dans la base de connaissances, on utilisera la fonction


RSiteSearch( ):

R Statistical Software 63/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou obtenir la liste de toutes les commandes qui contiennent un mot particulier:

Nous pouvons aussi obtenir un rappel (aide) des arguments de certaines commandes et
fonctions:

R Statistical Software 64/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons aussi demander des exemples de dmos sur une commande avec example( ):

Plusieurs commandes sur une ligne


Mme si ce n'est pas recommand pour des questions de confort de lecture, il est possible
d'crire plusieurs commandes sur une seule ligne si l'on veut faire vite... Voil un bte
exemple:

au lieu de:

R Statistical Software 65/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 66/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Installer et charger/dcharger des packages


Voyons avant toute chose comment obtenir la liste des package installs par dfaut dans R
avec la commande getOption("defaultPackages"):

Installer un package est trs simple en utilisant la commande:

install.packages("nom_package")

Je ne connais aucune commande native sur une ligne unique permettant ( ce jour!) de
vrifier qu'un package est dj install, le cas chant le tlcharger et installer plusieurs
packages d'un seul coup ce jour (bien sr un script est faisable mais ce n'est pas le sujet
ici!!!). Le mieux que je connaisse est:

R Statistical Software 67/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Cependant comme nous allons le voir plus bas il existe une package nomm pacman faisant
tout le travail.

Pour charger un package c'est trs simple en utilisant la commande library(nom_package):

En passant, il faut savoir que l'utilisation de la fonction require(nom_package) la place de


library(nom_package) pour charger les packages fait la mme chose une diffrence prs:
c'est que require(nom_package) retourne une valeur boolenne invisible TRUE si le package
a t retrouv dans la bibliothque sinon FALSE, ce qui nous permet de l'utiliser dans des
script avec les structure conditionnelles if else.

Si le package a t tlcharg ou fourni au format *.tar.gz car votre employeur (typiquement:


banque, assurance, gouvernement) a bloqu la connexion Internet, voici comment procder:

R Statistical Software 68/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour charger plusieurs packages en mme temps c'est trs simple:

Pour dcharger un package (ce qui est utile lors d'essais ou conflits de fonctions) sand
redmarrer R on utilisera la fonction detach( ):

Maintenant voyons comment utiliser la package pacman qui va permettre de vrifier si une
srie de packages est installe et dans le cas contraire les tlchargera et installer. D'abord
nous installons le package comme indiqu prcdemment, et ensuite nous pouvons le tester:

R Statistical Software 69/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et comme nous pouvons le voir, tout se passe en arrire-plan et est transparent pour
l'utilisateur final!!! Donc ce package est trs intressant pour des scripts dveloppes en
production!

Changer le dossier d'installation par dfaut des packages


Il se peut en entreprise que le dpartement IT vous fasse changer d'ordinateur (logique...) ou
migrent de nouvelles versions de l'OS. Ds lors, vous n'allez probablement pas vouloir
rinstaller tous les packages. Pour dterminer o ils sont installs, vous pouvez utiliser la
commande .libPaths( ):

Le premier dossier est le dossier o R vous avait demand o installer le premier package (du
moins si vous en avez dj install un...) et le deuxime et le dossier des packages par dfaut
de R (il y en a une trentaine qui sont dj installs comme vous pourrez le vrifier en vous y
rendant).

Pour changer le dossier par dfaut d'installation d'abord dterminer votre dossier de travail par
dfaut en faisant typiquement la commande getwd( ):

R Statistical Software 70/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait, dans ce dossier crez le fichier .Rprofile avec le dossier par dfaut dsir
pour les package:

et aprs avoir ferm et rouvert R vous aurez bien:

bingo! C'est trs pratique lorsque l'on a plusieurs dossiers avec des packages (personnels, de
notorit publique ou simplement valid par le CRAN).

Dinstaller un package
Pour dsinstaller un package, soit on va simplement dans le dossier des packages pour le
supprimer:

R Statistical Software 71/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Soit on utilise le package installr qui a une fonction permettant de dsinstaller:

Obtenir les versions des packages et dpendances


Lorsque vous publiez un article scientifique, outre le faite de devoir mentionner la version
dtaille du logiciel, il vous faudra galement dtailler la version dtaill du package utilis.

Pour obtenir une liste dtaille sur les packages voici une solution simple (nous avons limit
le retour des informations 5 colonnes mais n'hsitez pas dcouvrir par vous mme ce qu'il
y au-del) utilisant la commande installed.packages( ):

R Statistical Software 72/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 73/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vrifier si les packages sont jour


Pour vrifier si les packages sont jour, nous utiliserons la commande old.packages( ):

Pour vrifier la version d'un package on utilisera la commande packageVersion( ):

et pour mettre jour rapidement plutt que de passer par le menu nous utiliserons la
commande update.packages( ):

R Statistical Software 74/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et si nous voulons que R ne demande pas quels packages installer:

Attention!!! Cette commande est trs utile lorsque l'on veut utiliser l'automtisation de la mise
jour de script dans des packages venus en tant que socit de service!

Il n'existe pas ce jour de commande pour mettre jour un seul et unique package notre
connaissance. Il faut simplement le rinstaller avec la commande install.packages( ).

R Statistical Software 75/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Liste des packages utiliss dans ce support


Pour ne pas vous casser la tte vous pouvez dj installer les packages suivants (d'autres
packages connexes s'installeront par ncessit que nous n'avons pas list ci-dessous il y en
aurait sinon 597 lister):

1. AcceptanceSampling 44. forecast


2. ade4 45. foreign
3. ADGofTest 46. fOption
4. akima 47. fpc
5. animation 48. fPortfolio
6. aqfig 49. FrF2
7. bio3d 50. FuzzyR
8. boot 51. genderizeR
9. bupaR 52. ggbiplot
10. C50 53. ggdendro
11. car 54. ggjoy
12. caret 55. ggmap
13. catools 56. ggplot2
14. CHAID 57. ggtree
15. chron 58. gmodels
16. circlize 59. GPArotation
17. class 60. gplots
18. classInt 61. grid
19. cluster 62. gtools
20. coin 63. GUIDE
21. compiler 64. hexabin
22. ConvergenceConcepts 65. HH
23. Copula 66. Hmisc
24. data.frame 67. HSAUR
25. data.tree 68. ineq
26. devtools 69. installr
27. dggridR 70. irr
28. diagram 71. Kendall
29. DiagTest3Grp 72. KernSmooth
30. distrEx 73. LaF
31. dplyr 74. lattice
32. DoE.base 75. latticeExtra
33. e1071 76. lawstat
34. earth 77. leaflet
35. ellipse 78. leaps
36. Epi 79. lifecontingencies
37. epiR 80. likert
38. exactmeta 81. linnprog
39. fastICA 82. lhs
40. ff 83. lmtest
41. fGarch 84. lubridate
42. fields 85. mailR
43. fImport 86. maps

R Statistical Software 76/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
87. maptools 137. RExcel
88. markovchain 138. rgdal
89. MASS 139. rgdl
90. Matrix 140. rgeos
91. mblm 141. rgl
92. memoise 142. Rgraphviz
93. MethComp 143. R.matlab
94. Migest 144. RODBC
95. modeest 145. rootSolve
96. moments 146. rpart
97. mratios 147. Rpdb
98. ncdf4 148. RoughSets
99. neuralnet 149. rjson
100. nnet 150. RQuantLib
101. nortest 151. RWeka
102. numDeriv 152. rworldmap
103. outliers 153. sampling
104. pacman 154. scales
105. pastecs 155. scatterplot3d
106. PerformanceAnalytics 156. sensitivity
107. pheatmap 157. sentiment
108. plot3D 158. seqinr
109. plotKML 159. sm
110. plot_ly 160. SnowballC
111. PlotPrjNetworks 161. sp
112. plotrix 162. spatstat
113. plyr 163. sqldf
114. pmr 164. SuperLearner
115. png 165. SuppDists
116. Portfolio 166. Survival
117. pROC 167. tcltk2
118. processmapR 168. TeachingDemos
119. profr 169. textcat
120. prob 170. timeDate
121. propagate 171. timevis
122. psych 172. tm
123. pwr 173. treemap
124. qa 174. tseries
125. qcc 175. TSP
126. qdap 176. twitteR
127. quantmod 177. vcd
128. quantreg 178. vegan
129. qualityTools 179. vioplot
130. queueing 180. waffle
131. randtoolbox 181. waterfall
132. rattle 182. wordcloud
133. rbenchmark 183. xesreadR
134. Rcmdr 184. XLConnect
135. RColorBrewer 185. XML
136. reshape2 186. xtable

R Statistical Software 77/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 78/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dplacer les packages vers une autre ordinateur


Le but ici (frquent pour les enseignants et entre lves) est de pouvoir rapidement rinstaller
tous les packages d'un ordinateur sur un autre.

Ensuite sur l'autre ordinateur, on charge le fichier correspondant et on installe selon les
commandes suivantes:

Consulter la popularit des packages


Pour consulter la popularit des packages dans un temps relativement proche c'est assez
simple en utilisant la fonction cran_top_downlaods( ) du package cranlogs:

R Statistical Software 79/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 80/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Quelques data sets


Voici un exemple data set pour se faire la main:

mais en ralit pour voir tous les data set de tous les packages, vous pouvez utiliser la
commande data(package = .packages(all.available = TRUE)):

R Statistical Software 81/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais alors pourquoi est-ce que je vais majoritairement utiliser mes propres set de donnes par
la suite vous demandez-vous peut-tre???

Simplement parce que mes formations Excel, Minitab, SPSS, Tangra et R ont pour objectif
d'tre homognes... voil simplement l'explication.

Cependant dans la majorit des cas nous enlverons les accents et les espaces de la ligne de
titre (lgende des colonnes) car cela pose problme R (puisque non conforme aux normes) et
que cela nous ferait perdre du temps de les renommer avec les commande de R (le temps tant
prcieux en formation continue...).

Signalons galement la possibilit de se connecter d'excellents dpts de donnes. Comme


par exemple l'adresse suivante:

http://datamarket.com/data/list/?q=provider:tsdl

Ce qui vous amnera sur la page suivante:

R Statistical Software 82/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vous pouvez ensuite choisir un jeu de donnes en cliquant dessus, en alland dans Export:

et ensuite en cliquant sur Short URL, vous obtiendrez le lien direct d'accs la source de
donnes:

R Statistical Software 83/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il ne reste plus qu' installer et charger le package R permettant d'y accder:

et ensuite:

R Statistical Software 84/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et voil!

R Statistical Software 85/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Contrler la mmoire
Lorsque vous travaillez sur des jeux de donnes normes, il va vous falloir matriser la
mmoire que R utilise. Nous verrons plus tard quand nous manipulerons des variables
scalaires, vectorielles, matricielles ou autres comment supprimer celles-ci de la mmoire mais
ici nous nous intressons vraiment un cas plus gnral.

D'abord deux infos:

R 32 bits est limit 4GB (en pratique c'est plutt 3GB car l'OS a besoin de
fonctionner)
R 64 bits est limit 128TB sous LINUX (en pratique il faut trouver de la place pour
mettre tout cela...) et 8TB sous Microsoft Windows

Pour tendre la mmoire disponible R ou la limiter, vous allez simplement dans les
proprits du raccourci de R pour rajouter en Mb la taille dsire:

Vous pourrez alors contrler aprs l'ouverture de R:

R Statistical Software 86/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, on peut faire un tat des lieux avec la commande du garbage collector qui au passage
dtruit les objets inutiles dans la mmoire gc( ):

Sinon on peut aussi changer la mmoire alloue la vole directement dans R plutt qu'
l'ouverture (cependant cela n'est pas toujours permis par le systme!):

R Statistical Software 87/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mettre jour R
Mettre jour R reste ce jour un peu pnible car il faut aller sur le site web du CRANS,
tlcharger, etc. etc. etc.

Heureusement un package installr a t dvelopp pour faciliter l'opration:

Une fois install, nous le chargeons et l'excutons:

Nous validons par OK:

R Statistical Software 88/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Si nous cliquons sur Oui, nous avons:

Il vient ensuite:

R Statistical Software 89/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous cliquons sur Oui et attendons:

Une fois le tlchargement termin, l'installation classique se fait et une fois celle-ci termine,
nous avons:

R Statistical Software 90/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et ensuite:

Et si vous cliquez sur Oui c'est termin.

Il faut savoir que mme si cela installe la nouvelle version, cela ne supprime pas l'ancienne!

Notez enfin que ce package ajoute le menu suivant R:

R Statistical Software 91/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 92/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Fermer R
Quand vous ferrez du scripting, il vous sera utile de connatre la commande qui ferme R. Soit
vous utilisez alors la commande q( ) seule qui aura l'effet suivant:

soit vous savez d'avance qu'il ne faut pas enregistrer et ds lors vous passez la valeur no en
paramtre:

R Statistical Software 93/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Envoyer un courriel (email) via R


Voici une mthode utiliant la fonction send.mail( ) du package mailR pour envoyer par
courriel des rsultats de calculs ne ncessitant pas de passer par du VBScritp ou par GMail
(ici seul un exemple au format texte brut est fait, je dvelopperai si un client me demande un
cas plus compliqu):

videmment il faut changer dans le script ci-dessous l'adresse e-mail de l'expditeur, du


rcepteur, le protocole, le nom d'utilisateur, le mot de passe, bref tous les paramtres
techniques (mais j'ai test et cela marche!):

R Statistical Software 94/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

5. Fichiers R
Il existe trois types de fichier dans R:

Les fichiers: *.Rhistory


Les fichiers: *.RData
Les fichiers: *.R pour les scripts (voir page 1669)
Le fichier de config: *.Rprofile (voir page 54 ou 67)

Historique et Fichiers *.Rhistory


Nous allons commencer par dcouvrir le type le plus trivial de fichier qui est le *.Rhistory.

Il s'agit simplement d'un type de fichier qui va sauvegarder l'historique de vos commandes.
Pour voir cela, nous nous ouvrons R et crivons:

D'abord faisons un Ctrl+L pour effacer la console et utilisons la fonction history( ):

Cela donne:

R Statistical Software 95/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ouvre donc le fichier R History uniquement pour le nombre de commandes demandes!

Maintenant, nous allons dans le menu Fichier/Sauver l'historique des commandes:

Et il vient:

R Statistical Software 96/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

o nous avons dj mis le nom dsir devant l'extension du fichier. Nous pouvons utiliser
aussi la commande savehistory( ):

Si nous fermons R et le rouvrons, nous pouvons recharger les commandes passs en allant
dans Fichier/Charger l'historique des commandes:

R Statistical Software 97/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou:

Mais rien n'apparatra quand vous chargerez votre fichier *.Rhistory. Effectivement pour
retrouver vos commandes, il vous faudra jouer avec les flches du clavier ou pour
remonter ou descendre dans l'historique des commandes.

On comprend alors mieux l'intrt de sauvegarder l'historique des commandes dans un fichier
script *.R (voir page 1557 pour rappel).

R Statistical Software 98/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Fichiers *.Rdata
Les fichiers *.Rdata (fichiers binaires trs rapides charger et enregistrer) vont stocker
toutes les variables, dates frames, listes, matrices, vecteurs, etc. que vous avez crs ou
modifis pendant une session de travail R.

Cela peut paratre a priori inutile mais en ralit c'est trs utile lorsque l'on fait du calcul
massif (big data).

Effectivement, si vous tes sur une machine dont la mmoire vive est limite pour des raisons
de budgets il est alors possible de jouer de faon subtile avec ces fichiers pour librer
temporairement de la mmoire.

Voyons une dmonstration simple de cela.

Nous crons une simple variable laquelle nous affectons une valeur scalaire:

Nous pouvons crer un fichier *.RData en quittant R mais ici le but est d'avoir un contrle
total sous forme de lignes de commandes (pour intgrer cela plus tard dans des scripts). Pour
enregistrer une variable de la mmoire de l'espace de travail en cours de R nous crivons
(nous ne spcifions par le dossier donc il prendra l'espace de travail par dfaut actif):

ou pour toutes les variables:

R Statistical Software 99/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donnera sur votre disque un petit fichier *.RData:

Maintenant nous effaons cette variable de la session en cours et vrifions qu'elle n'existe
plus:

Mais nous pouvons la rappeler avec la commande load( ):

R Statistical Software 100/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Si vous utilisez la syntaxe suivante, il va enregistrer dans le fichier *.RData par dfaut de
votre installation de R:

Effectivement:

Nous voyons alors vite la possibilit de crer autant de fichiers *.RData que dsirs et de les
dcharger ou recharger loisir quand cela est ncessaires (dans les grosses applications on
aura typiquement un fichier *.RData pour chaque gros data frame de manipul).

Petit truc savoir. Si vous sauvegardez tout un espace de travail et en rechargez tout le
contenu de suite aprs, cela peut faire gagner parfois un peu plus de 50% de la mmoire
utilise.

R Statistical Software 101/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

6. Calculs arithmtiques lmentaires


Exercice 1.: Oprations sur scalaires
R 3.0.2

Le but final de R est sur le plus ou moins long terme, lorsque l'on est utilisateur, d'crire des
scripts qui vont automatiser un travail rptitif de manipulation de donnes, de calculs et
tests/analyses statistiques (comme le VBA dans la suite Microsoft Office par exemple).

Ds lors, au mme titre qu'un utilisateur Excel aura des difficults faire du code s'il ne
connat les structures et oprateur algbrique de base, il en sera aussi souvent de mme pour
l'utilisateur R.

Donc nous allons commencer par les mathmatiques lmentaires ceci dans le but de prparer
bien plus tard un terrain propice au scripting de haut vol.

D'abord commenons par quelques oprations algbriques lmentaires comme l'addition, la


soustraction, la division, la multiplication, le logarithme naturel avec la commande log( ), la
racine carre avec la commande sqrt( ), la valeur absolue avec la commande abs( ) ou encore
l'exponentielle avec la commande exp( ), la factorielle avec gamma( ) et le coefficient
binomial avec la commande choose( ) ou encore le modulo avec %%:

R Statistical Software 102/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec le coefficient binomial nous pouvons reprendre l'exemple du cours d'Arithmtique en se


demande combien de manire il y a de crer un mot de passe de n caractres (n allant de 0
24) sachant qu'on peut utiliser seulement un alphabet de 24 lettres (sans remise). Cela nous
donne:

R Statistical Software 103/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 104/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 2.: Oprateurs boolens et relations d'ordre


R 3.0.2

Lorsque vous allez faire du scripting, vous aurez parfois besoin de faire des tests logiques
utilisant les valeurs boolennes. Il est donc important de revoir les cas les plus courants.

Nous avons d'abord la syntaxe suivante pour les relations d'ordre les plus courants:

et un peu d'algbre boolen lmentaire:

R Statistical Software 105/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Signalons galement le pige suivant cause de la manire dont fonctionnent les ordinateurs
avec le binaire lorsque nous comparons des calculs avec un rsultat talon:

Donc le problme se rsout l'aide de la commande all.equal( ).

R Statistical Software 106/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 3.: Manipulations de variables scalaires


R 3.0.2

Pas grand chose dire ici tellement c'est lmentaire (mais attention! si possible respectez
dans la pratique industrielle la nomenclature de Leszinsky-Reddick pour le nommage de vos
variables):

Autre manire d'crire cependant parfois plus claire pour les petites classes:

R Statistical Software 107/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 4.: Arrondir des calculs


R 3.0.2

L encore une fois le but est de faire un petit parallle avec un tableur. Voyons que nous
pouvons effectivement arrondir les rsultats de calculs avec les commandes natives floor( ),
ceiling( ), round( ), signif( ) et trunc( ):

Sinon pour arrondir au 5 centimes prs, il faudra passer par la mme astuce qu'on utilisait
dans les trs vieux tableurs:

et pour arrondi l'entier le plus proche

R Statistical Software 108/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 5.: Options de formatage des nombres


R 3.0.2

Quelques classiques pour afficher les nombres comme le proposent les calculatrices en
utilisant la commande formatC( ):

Pour mettre par dfaut le format ingnierie au dmarrage de R vous pouvez mettre l'option
scipen=-100 dans votre fichier .Rprofile:

Inversement pour liminer le format d'ingnierie dans toutes les sortie de type ANOVA et
rgressions linaires vous pouvez mettre:

R Statistical Software 109/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 110/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 6.: Nombres et variables complexes


R 3.0.2

On retrouvera dans la pratique les nombres complexes dans certains modles de fractales ou
galement dans la transforme de Fourier. Donc vrifions que les lments de base sont bien
l comme dans n'importe quel tableur:

Faisons quelques tests de typage pour voir comment ragit R:

R Statistical Software 111/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 112/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 7.: Manipulation d'ensembles (un peu de thorie des


ensembles)
R 3.0.2

Voici quelques lments de la thorie des ensembles qui rappelleront des souvenirs de la
petite cole de nombreux lecteurs:

La commande intersect( ) et particulirement utilise en finance lorsque nous possdons deux


sries temporelles dont nous souhaitons extraire que les dates communes! Une fois que nous
avons le vecteur des dates communes, nous pouvons utiliser les techniques de filtrage
habituelles sur les jeux de donnes initiaux.

Comme intersect( ) ne prend que deux lments en entre, une manire pour gnraliser est
d'utiliser la commande reduce( ):

R Statistical Software 113/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il y aussi la commande isin( ) du package prob que nous aurions pu signaler au tout dbut
(mais que nous avons oubli d'indiquer) qui permet de savoir si un ensemble (ou vecteur) est
totalement inclus dans un autre ensemble (vecteur) et donc vite de faire un test (if) sur le
rsultant de l'usage de %in% comme vu prcdemment:

R Statistical Software 114/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 8.: Oprations avec des data frame


R 3.0.2

Il peut arriver dans R que nous ayons parfois besoin de faire des calculs arithmtiques
lmentaires. Voyons un exemple. Ouvrez le fichier CalculsSimple.csv:

Remarquez bien qu'il n'y a pas d'espaces dans les titres et que le sparateur est bien la virgule
et non le ";".

Nous allons d'abord le charger dans R avec la commande read.csv( ) et afficher son contenu:

R Statistical Software 115/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Remarquez que si le fichier avait eu la structure suivante:

nous aurions pu aussi l'importer ainsi en tant encore plus complet:

ou utiliser simplement:

R Statistical Software 116/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

puisque la fonction read.csv2( ) par dfaut considre le sprateur comme un ";".

et nous pouvons demander un petit rsum avec la commande str:

et demander d'afficher les dimensions avec la commande dim( ) (lignes, colonnes):

R Statistical Software 117/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Note: str( ) signifie "structure"

Maintenant, nous souhaiterions simplement une colonne qui contient la diffrence des deux.
Pour se faire, nous allons utiliser la commande data.frame( ) qui permet de recrer des arrays
dans la mmoire:

R Statistical Software 118/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou pour faire comme dans le livre Minitab avec la valeur absolue en utilisation fonction
abs( ):

noter que la premire ligne ci-dessus aurait aussi pu tre crite:

R Statistical Software 119/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 9.: Statistiques lmentaires univaries de data frame


R 3.0.2

Nous importons le fichier suivant:

Ce qui donne:

R Statistical Software 120/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous demandons quelques statistiques comme max( ), sd( ), var( ), median( ), quantile( ),
iqr( ), mad( ) (respectivement: maximum, cart-type, variance, mdiane, quantile, cart
interquartile, dviation absolue de la mdiane) d'une colonne particulire:

Pour le coefficient de variation on peut aussi utiliser la fonction cvar( ) du package BioStatR
au besoin.

Les quantiles tant importants dans la pratique, investiguons un peu quelques syntaxes
possibles:

R Statistical Software 121/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou la commande fivenum( ) qui renvoie respectivement le minimum, le 1er quartile (25me


centile), la mdiane (50me centile), le 3me quartile (75me centile) et le maximum:

Il y aussi la commande summary( ):

R Statistical Software 122/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
dont il est possible de voir toutes les mthodes puisqu'il s'agit d'une mthode the type "S3"
(permettant de voir alors toutes les analyses sur lesquelles la commande summary( )
s'applique par dfaut dans R):

ou encore avec les commandes unique( ) et length( ):

R Statistical Software 123/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

ou encore pour avoir la catgorie modale textuelle (il existe de nombreuses techniques) en
d'autres termes une table des frquences:

R Statistical Software 124/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et pour des valeurs numriques l'ide est la mme:

R Statistical Software 125/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou en passant par la fonction mlv( ) du package modeest:

Il y a aussi la commande describe( ) du package psych qui permet de se faire une ide du
contenu d'un data frame:

R Statistical Software 126/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il y a aussi la commande native brkdn( ) qui signifie "breakdown" qui donne quelques
informations triviales:

R Statistical Software 127/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme la skewness (coefficient d'asymtrie) et le kurtosis (coefficient d'aplatissement) ne


sont pas intgrs dans R, voyons comment les calculer en vitant d'installer des packages pour
ce genre de dtails:

Attention, il y a plusieurs manires de calculer la skewness et le kurtosis (en prenant la


variance biaise par exemple au lieu de la non biaise ou encore simplement en se basant sur
d'autres dfinitions). Par exemple, en installant le package moments:

R Statistical Software 128/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons alors:

De mme avec la package PerformanceAnalytics, etc.

Sinon, toujours en restant dans le domaine des packages, nous avons en utilisant le package
pastecs:

R Statistical Software 129/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
nous avons alors en utilisant la commande stat.desc( ):

ou encore avec le package psych:

nous avons en utilisant la commande describeBy( ):

R Statistical Software 130/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 131/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 10.: Kurtosis et Skewness


R 3.1.1

Comme il y a un grand nombre de mthodes pour calculer le Kurtosis (aplatissement) et le


Skewness3 (asymtrie), je tiens toujours les traiter part.

Considrons l'exemple suivant:

Nous conseillons vivement au lecteur de se concentrer sur le type 2. Effectivement, ce


moment l, nous retrouvons les mmes valeurs que Minitab, Excel et SPSS.

Dans R, nous aurons alors les rgles suivantes:

Si le skewness est nul, la distribution est symtrique (cela ne signifiant pas que la
symtrie a lieu sur un pic de la distribution car dans le cas bimodal l'axe de symtrie
peut-tre entre les deux valeurs modales symtriques). Si le skewness est positif, la
distribution (la valeur modale/mdiane) est penche droite (ou il y a des valeurs
extrmes droite). Si le skewness est ngatif, la distribution (la valeur
modale/mdiane) est penche gauche (ou il y a des valeurs extrmes gauche)

Si le kurtosis est nul (mesokurtique) alors l'aplatissement est similaire celui d'une
distribution Normale. Si la valeur est suprieure 0 alors la distribution d'intrt
(leptokurtique) est alors plus haute que celle d'une distribution Normale moyenne
gale (inversement - platikurtique - si le kurtosis est ngatif bien videmment)

3
Au moins 11 mthodes de calculer le Skewness. Voir l'tude de Tabor, J. (2010), Investigating the
Investigative Task: Testing for Skewness - An Investigation of Different Test Statistics and their Power to Detect
Skewness, Journal of Statistics Education, 18, 1-13. www.amstat.org/publications/jse/v18n2/tabor.pdf

R Statistical Software 132/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sinon titre de comparaison (le premier est appel "coefficient d'asymtrie de Fisher-
Pearson" et le seconde " coefficient d'asymtrie ajust et standardis de Fisher-Pearson"):

1 n
xi x
3

n i 1
1 3
1 n
xi x
2

n i 1
n
2 1
n 1 n 2
n 1
3/2

3 1
n

et:

1 n
xi x
4

n i 1
1 4
1 n 2
xi x
n i 1
( N 1) ( N 1)1 3( N 1)
2 3
( N 2)( N 3)
N ( N 1) 3( N 1) 2
3 1
( N 1)( N 2)( N 3) ( N 2)( N 3)
4 1 3
2
1
5 4 3 1 3
N

Skewness R -0.647(1),-0.77(2), -0.552(3)

MATLAB -0.647(1),-0.77(2)
Mathematica -0.647(1)
Minitab, SPSS, Excel -0.77 (3)

Kurtosis R -1.114(5),-0.22 (3),-0.67 (4)

MATLAB 2.327 (1),2.775(2)


Mathematica 2.327(1)
Minitab, SPSS, Excel -0.22 (3)

R Statistical Software 133/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 11.: Statistiques lmentaires multivaries de data


frame
R 3.0.2

Commenons par deux grands classiques en utilisant les donnes suivantes utilises dans le
cours thorique:

La matrice des variances-covariances s'obtiendra l'aide de la commande cov( ) et la matrice


des coefficients de corrlations l'aide de la commande cor( ):

Si on installe le package ellipse:

R Statistical Software 134/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons ensuite reprsenter l'une ou l'autre des ces deux matrices sous la forme des
ellipses de corrlation de la loi Normale bivarie avec la commande plotcorr( ) du package
ellipse:

R Statistical Software 135/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou avec les packages ggplot2 et reshape2 nous pouvons constuire une heatmap de
corrlations avec les fonctions qplot( ) et melt( ):

Au niveau des lgendes ce n'est pas super. Nous pouvons faire mieux:

R Statistical Software 136/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 137/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

7. Manipulation de variables de type algbriques,


vectorielles matricielles, textes, dates temps
Exercice 12.: Manipulations de variables vectorielles
R 3.0.2

Le calcul vectoriel/matriciel a une importance majeure en statistiques et en finance. Il


convient donc de voir si les oprations de base sont bien prsentes avant de poursuivre et
surtout (je le rpte) de pouvoir faire plus tard du scripting.

Voyons les cas classiques que l'on retrouvera normment de fois mme en dehors du
scripting (gestion de data frame, gnration de graphiques, etc.). Voici dj une premire srie
de commandes utiles utilisant les commandes c( ), sum( ), cumsum( ), diff( ), max( ), min( ),
sort( ), length( ):

R Statistical Software 138/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et une deuxime srie utilisant les commandes as.numeric( ), seq( ) et rep( ):

R Statistical Software 139/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et enfin le calcul de norme et du produit scalaire avec les commandes crossprod( ), norm( )
et avec la transposition t( ):

et donc nous ne pouvons curieusement pas obtenir directement le produit scalaire en


multipliant la transpose d'un vecteur par un autre (dommage mme si c'est un dtail...).

Nous pouvons aussi nommer ou dnommer les composantes d'un vecteur si besoin avec les
fonctions setNames( ) ou unname( ):

R Statistical Software 140/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Attention!!! Lors de la somme de deux vecteurs de dimensions diffrentes, les dveloppeur
de R ont fait un choix que je trouver dangereux! Voir l'exemple ci-dessous:

En d'autres termes, le vecteur y est "recycl" autant de fois que ncessaire pour la somme se
fasse!! Donc attention quand vous crivez des programmes (scripts) de vrifier que les
vecteurs aient les mmes dimensions car R passe outre cette vrification contrairement la
majorit des logiciels de calculs scientifiques.

Relativement une question que j'ai eue via Internet considrons le vecteur suivant et sa
classe:

Lorsqu'un vecteur contient un mlange de typage de donnes, R choisit le type qui semble le
mien convenir. Quand cela arrive dans certains outils statistiques de R, un message indique
souvent que le vecteur "has been coerced into factors" ce qui signifie qui'il a choisit de
convertir la colonne en une colonne de type "facteurs". Dans le capture d'cran ci-dessus, R a
choisit assez logiquement de convertir l'ensemble du vecteur en un vecteur de type caractres.

R Statistical Software 141/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 13.: M-estimateurs


R 3.0.2

Toujours dans les vecteurs regardons que la moyenne arithmtique mean( ) et sa version
lague soient bien prsentes:

Nous retrouvons bien la mme valeur que dans le cours thorique et que dans SAS.

Voyons maintenant pour la moyenne Winsorise en utilisant la fonction winsor.mean( ) du


package psych:

Nous retrouvons bien la mme chose que dans le cours thorique mais la diffrence de SAS
nous avons du indiquer 0.4 au lieu de 0.2...

Pour le M-estimateur biweight de Tukey nous avons plusieurs packages choix mais nous
allons nous reporter sur la fonction TukeyBiweight( ) du packaage DescTools:

R Statistical Software 142/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous n'obtenons donc pas la mme chose qu'avec SPSS qui donne 8.75 (la joie de l'absence
de normes... a priori).

Il y a aussi le M-estimateur de Huber dans la mme package avec la fonction HuberM( ):

Mais qui l aussi ne donne pas la mme chose que SPSS qui donne 9.09...

R Statistical Software 143/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 14.: Manipulations de textes


R 3.0.2

Encore une fois, lorsque l'on fera du scripting outre manipuler des scalaires, des entits
algbriques (vecteurs ou matrices) nous aurons aussi manipuler des textes. Voici quelques
alors quelques commandes classiques de manipulations des textes avec les commandes pour
afficher, concatner, etc.: print( ), paste( ), cat( ), nchar( ), substring( ), strsplit( ),
toupper( ), tolower( ), gsub( ):

Avec la commande paste( ) nous pouvons aussi gnrer de faon astucteur des noms de
variables incrmentes:

R Statistical Software 144/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Remarque: Pour mettre la premire lettre d'un mot en majuscule ou de plusieurs mots il faudra
passer par une regular expression (regex):

Toujours avec les RegEx faisons maintenant un cas un peu plus compliqu mais typique dans
certaines techniques de Text Mining: l'extraction de nombres d'un vecteur de textes. Voyons
d'abord cela avec la fonction regexpr( ):

R Statistical Software 145/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon gsub( ) fait cela directement:

R Statistical Software 146/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Indiquons aussi le code pour trouver la position d'une certaine chane de caractre:

videmment certaines commandes que nous venons de voir s'appliquent aussi des vecteurs
(cas trs important puisque les data frames sont composs de vecteurs!):

Si nous crons un vecteur avec des valeurs textuelles:

R Statistical Software 147/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

celui-ci va prendre de la mmoire pour rien car dans le cas prsent nous voyons que nous
avons affaire des facteurs. Ds lors pour optimiser la mmoire de R, nous pouvons lui dire
qu'il s'agit de facteurs et il associera simplement chaque texte une valeur 1, 2 (ou plus si
nous avons plus de deux facteurs). Pour faire cela, nous utilisons la commande factor( ) tel
que ci-dessous:

Cela donne alors des variables qualitatives non ordonnes. Si nous avons besoin de dfinir des
variables qualitatives ordonnes, nous utiliserons la syntaxe suivant (attention! si l'argument
levels n'est pas prcis, c'est l'ordre alphabtique qui sera utilis):

R Statistical Software 148/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour ceux qui feraient du texte mining, voici quelques fonctions utiles aprs avoir class tous
les mots dans des composantes de vecteurs utilisant grep( ):

R Statistical Software 149/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 15.: Manipulations de dates


R 3.0.2

Pour travailler sur les dates nous allons faire une entorse en supposant que nous avons dj
tudi l'import de fichier *.csv (voir plus loin pour les dtails relativement ce sujet).

Pourquoi? Simplement parce que c'est la manipulation de nettoyage la plus frquente


(analyses temporelles oblige...) et donc la plus importante puisque la majorit des pays ne
respectent pas la norme ISO 8601. Bon par la mme occasion cela vous montrera comment
(dans l'ide) on modifie toute une colonne d'un data frame aussi pour des textes (l'ide tant la
mme).

Considrons donc l'import du sous-ensemble du fichier *.csv suivant:

et nous allons mettre le format de date aux normes pour commencer:

R Statistical Software 150/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

comme vous pouvez le voir avec la commande as.Date( ), les dates sont converties par dfaut
au format normalis! L'argument de as.Date( ) est donc le format de date tel qu'il se trouve
l'origine dans le data frame pour que R puisse en comprendre la structure.

La syntaxe des formats de dates est la suivantes dans R:

%d: Jour en tant que numro (01-31)


%a: Jour abrg en 3 lettres
%A: Jour non abrg
%m: Mois en chiffres (01-12)
%b: Mois abrg en 3 lettres
%B: Mois non abrg
%y: Anne sur 2 chiffres
%Y: Anne sur 4 chiffres
%H: Heure sur 0-24
%h: Heure sur 1-12
%j: Numro du jour dans l'anne (0-366)
%p: Indicateur AM/PM pour les heures
%S: Secondes
%U: Numro de la semaine dans l'anne (0-53) utilisant le premier dimanche comme
%W: Numro de la semaine dans l'anne (0-53) utilisant le premier lundi comme 1er
jour de la premire semaine
1er jour de la premire semaine
%w: Numro de la semaine (0-6) o dimanche est le numro 0

R Statistical Software 151/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant revenons sur des exemples simples avec les commandes Sys.Date( ),
Sys.Timezone( ), format( ), weekdays( ) et months( ), ISOdate( ), as.numeric( ),
difftime( ):

Comme nous pouvons le voir R prend les paramtres rgionaux de la machine pour afficher le
nom des jours. Nous verrons comment grer cela avec un package un peu plus loin.

Crons maintenant quelques squences classiques de dates en utilisant la commande seq( )


dj vue plus haut:

R Statistical Software 152/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Attention pour le moment o viendra le scripting car lorsque l'on boucle sur des vecteurs
contenant des dates celles-ci sont nouveau par dfaut transformes en nombres:

et pour corriger cela:

R Statistical Software 153/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et comme vous pouvez le voir par la mme occasion, l'origine de systme de date par dfaut
de R est 1970-01-01 mais pouvons l'aide du paramtre origin changer cela comme nous
voulons.

Nous pouvons aussi transformer une colonne de dates en trimestres avec la commande native
quarters( ):

Maintenant voyons des manipulations triviales sur les dates mais qui semblent ncessiter des
packages (je complterai au fur et mesure que je rencontrerai d'autres cas chez mes clients):

Nous allons installer le package chron pour faire de la somme de mois:

R Statistical Software 154/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ensuite en utilisant la commande chron( ) avec un format d'entre ridicule...

Il y a d'autres packages qui ont des options similaires pour ajouter des mois une date.

Sinon pour grer des dates dans d'autres langues, on installera le package lubridate:

R Statistical Software 155/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons l'exemple classique de la suisse (franais, allemand, anglais):

Pour obtenir les dates de chmes de quelques bourses nous avons la commande holiday*( )
du package timeDate de Rmetrics:

R Statistical Software 156/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Enfin, sans package, voyons comme changer une date en toutes lettres en une date R avec la
commande strptime( ):

R Statistical Software 157/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 16.: Manipulations de dates avec du temps


R 3.0.2

Pour travailler sur les heures et minutes nous allons faire encore une fois une entorse en
supposant que nous avons dj tudi l'import de fichier *.csv (voir plus loin pour les dtails
relativement ce sujet).

Considrons donc l'import du sous-ensemble du fichier *.csv suivant:

et nous allons nous assurer que R comprenne la colonne DateDeCommande comme tant de
type date et heure sinon quoi nous aurons des problmes avec l'analyse des sries
chronologiques l'aide de la commande as.POSIXct( ):

R Statistical Software 158/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon pour n'avoir que le temps en utilisant la commande format( ):

R Statistical Software 159/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et quelques autres petites commandes comme Sys.time( ), hour( ), minute( ), second( ):

et pour crer des squences de temps (utile pour les graphiques):

Sinon toujours du package timeDate( ) de RMetrics nous pouvons avoir les heures de
diffrentes villes de rfrence pour les fuseaux horaires la finance:

R Statistical Software 160/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite voici un exemple d'utilisation:

R Statistical Software 161/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 17.: Manipulations de variables ordinales


R 3.2.1

Les variables ordinales permettant de traiter des variables tries dans un ordre particulier dans
des tableaux statistiques ou des graphiques. Ceci ce fait en utilisant la commande factor( ):

et donc graphiquement:

R Statistical Software 162/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou:

R Statistical Software 163/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Or:

R Statistical Software 164/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 18.: Manipulations de variables matricielles


(matrices)
R 3.0.2

Encore une fois... inutile de prciser l'importance des matrices dans l'analyse financire. Il est
donc important aussi de savoir les manipuler pour plus tard faire du scripting.

Oprations de base
Voyons d'abord les trois cas classiques de cration utilisant les commandes cbind( ) et
matrix( ) et :

On peut aussi rapidement nommer ou "dnommer" les lignes et les colonnes avec la
commande dimnames():

R Statistical Software 165/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite quelques proprits et accs au contenu des matrices utilisant entre autres la
commande dim( ):

R Statistical Software 166/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 167/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant voyons quelques oprations classiques utilisant entre autres les commandes
solve( ), t( ):

R Statistical Software 168/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et encore quelques autres opration et commande dont entre autres solve( ) pour l'inverse
d'une matrice, ncol( ), nrow( ) et diagm( ):

Voyons maintenant comment faire la somme de certaines lignes ou colonnes de la matrice:

R Statistical Software 169/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Matrice de variances-covariances
Toujours dans les manipulations simples, convertissons une matrice de variances-covariances
en matrice de corrlation rapidement (parfois utile en finance quantitative):

et pour l'inverse il faut utiliser ce jour le package propagate () avec sa fonction


cor2cov( ):

R Statistical Software 170/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dterminant et valeurs propres


Maintenant nous allons faire des calculs lgrement plus complexes avec les matrices mais
qui restent du niveau BAC (nous allons vrifier si nous retrouvons bien les calculs faits avec
Excel, Minitab et Tanagra) en reprenant la matrice que nous retrouvons plus tard dans le cadre
de l'analyse factorielle (et que nous avions calcul la main dans le cours thorique):

Nous retrouvons donc le mme dterminant, les mmes valeurs propres et les mmes vecteurs
propres que dans les autres logiciels et que de ce qui a t calcul la main.

R Statistical Software 171/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Rappel: Une matrice carre a toujours des valeurs propres. Par contre si elle n'est pas
symtrique elle aura des valeurs propres complexes.

Lorsque l'on fait du scripting, il peut tre utile de compiler des statistiques dans une matrice
avec des noms aux colonnes et aux lignes (la matrice sera alors de squelette pour afficher des
donnes statistiques diverses et varies).

Voyons un exemple:

Matrice d'adjacence
Renommer des lignes et colonnes de matrices est aussi utile dans la thorie des graphes pour
avoir une sortie cran plus esthtique. Cependant ce n'est pas tout. Considrons la matrice
d'adjacence suivante vue dans le cours thorique de la thorie des graphes:

R Statistical Software 172/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, avec la commande apply( ), nous pouvons connatre le nombre de flches entrantes
ou sortantes:

Le deuxime paramtre "1" ou "2" indiquant si nous souhaitons le calcul pour respectivement
les lignes ou les colonnes.

R Statistical Software 173/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Il y a un autre cas o apply( ) peut tre utilise lorsque la commande choisie n'est pas une
fonction d'agrgation. Si nous souhaitons par exemple appliquer une fonction quelconque sur
chaque composante (ici dans l'ide d'avoir le R 2 ), alors:

Enfin dans le cours thorique dans le cas des copulas Gaussien, nous avons introduit le
concept de dcomposition de Cholesky. Vrifions que nous obtenons bien la mme chose que
dans le cours thorique avec la fonction chol( ):

R Statistical Software 174/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Matrices stochastiques
Voyons maintenant un encore une autre application avec les chanes de Markov en se basant
sur l'exemple utilis dans le cours thorique d'ingnierie informatique du principe de base
d'origine de fonctionnement de l'algorithme de Google. Nous avions donc le graphe suivant:

Nous construisons la matrice stochastique du graphe comme nous l'avons fait la main dans
le cours thorique:

R Statistical Software 175/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant voyons comment trouver la mesure invariante avec R en utilisant de l'algbre


linaire des valeurs et vecteurs propres subtilement:

R Statistical Software 176/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc bien les valeurs calcules la main dans le cours thorique.

Dcomposition en valeurs singulires


Let but ici est d'illustrer le thorme de dcomposition en valeurs singuliires que nous avons
dmontr dans le cours thorique.

Nous partons de l'image suivante:

R Statistical Software 177/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous chargeons l'image et l'affichons:

Nous obtenons:

Pour faciliter l'exemple nous allons travailler que sur la couche de rouge:

Ce qui donne:

R Statistical Software 178/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous effectuons la dcomposition en valeurs singulires en utilisant la fonction svd( ):

Pour montrer que les trois matrices satisfont bien la relation dmontre dans le cours
thorique, nous reconstruisont l'image d'origine avec les oprations mathmatiques sur les
matrices correspondantes:

Ce qui donne:

R Statistical Software 179/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant voyons ce que donne la reconstruction avec 2 valeurs singulires:

Ce qui donne:

R Statistical Software 180/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant voyons ce que donne la reconstruction avec 4 valeurs singulires:

Ce qui donne:

Maintenant voyons ce que donne la reconstruction avec 8 valeurs singulires:

Ce qui donne:

R Statistical Software 181/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant voyons ce que donne la reconstruction avec 16 valeurs singulires:

Ce qui donne:

Maintenant voyons ce que donne la reconstruction avec 32 valeurs singulires:

R Statistical Software 182/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

Maintenant voyons ce que donne la reconstruction avec 64 valeurs singulires:

Ce qui donne:

R Statistical Software 183/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 184/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 19.: Utiliser des listes


R 3.0.2

Les listes sont considres souvent comme le type de donnes le plus complexe de R car on
peut y mlanger des vecteurs, des matrices et des textes en une seule entit (trs pratique
plutt que de renvoyer lors de scripts des variables n'en plus finir l'utilisateur!). Voyons
cela via un exemple:

R Statistical Software 185/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Il est trs facile de rajouter des lments une liste existante:

Nous pouvons aussi choisir o exactement insrer la variable dans la liste:

R Statistical Software 186/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour supprimer un lment d'une liste c'est tout aussi simple:

R Statistical Software 187/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 188/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 20.: Cration/dition de donnes en ligne de


commande
R 3.0.2

Bon voil un sujet que nous n'avons trait ni dans le livre sur Minitab, ni dans celui sur SPSS
puisque dans ces deux logiciels, la saisie se fait simplement comme dans un tableur.

Dans R, il peut tre utile cependant de savoir comment faire en utilisant la commande c( )
pour gnrer des colonnes (vecteur) et la commande data.frame( ) pour composer une
matrice::

ensuite pour changer les noms des variables on peut utiliser la commande edit( ) p dans une
feuille similaire celle d'un tableur:

R Statistical Software 189/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et donc changer le nom des colonnes en cliquant dessus:

R Statistical Software 190/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Par contre pour changer les valeurs, il vous faudra utiliser la commande fix( ):

qui affiche exactement le mme tableau mais cette fois avec les valeurs qui sont aussi
modifiables directement.

Vous pouvez aussi utiliser fix( ) pour crer un date frame en partant de zro:

Enfin, indiquons que nous pouvons aussi afficher les donnes avec la commande View en
ajoutant en plus un titre la fentre:

R Statistical Software 191/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 192/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 21.: Grer les variables dans la mmoire


R 3.0.2

Pas grand chose dire car c'est assez simple. Il suffit de lire pour comprendre comment
utiliser les options de base des commandes ls( ) et rm( ) et supprimer ou lister les objets en
mmoire:

Avec la fonction object.size( ) nous pouvons aussi obtenir la taille mmoire d'une variable:

remaquer que nous pouvons obtenir plus structure des variables cres l'aide de la
commande ls.str( ):

R Statistical Software 193/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi voir la taille d'un objet ou de plusieurs dans la mmoire:

Il y en a qui ont fait encore plus fort dans la communaut R:

R Statistical Software 194/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 195/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 22.: Identifier le typage


R 3.0.2

Lorsque vous utiliserez des scripts pris d'Internet et que vous en dcortiquerez le
fonctionnement il vous faudra parfois dterminer le typage d'une variable. Voyons quelques
exemples utiles l'aide de la commande class( ):

R Statistical Software 196/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

8. Algbre scolaire
Exercice 23.: Plotter (tracer) des fonctions algbriques
R 3.0.2

Bon rien de bien compliqu pour commencer avec les graphes. Nous allons tracer quelques
polynmes avec des petites amliorations graphiques mineures (on complexifiera au fur
mesure de notre avancement dans le prsent document avec de histogrammes, des doubles
axes, etc.) avec les commandes function( ), plot( ), grid( ) et legend( ):

Nous pouvons obtenir la mme chose avec la commande curve( ) en amliorant au passage
un peu le rsultat (amlioration que l'on aurait pu appliquer aussi directement l'exemple ci-
dessus):

R Statistical Software 197/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou une fonction exponentielle avec les deux axes en chelle logarithmique (de faon un peu
basique):

R Statistical Software 198/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour avoir que l'axe Y en chelle logarithmique il vous suffit de mettre de changer l'argument
log (avec un petit exemple clin d'oeil scolaire de l'utilit de l'chelle logarithmique):

R Statistical Software 199/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec certaines fonctions, R transforme directement l'expression algbrique de faon


esthtique dans les lgendes ou titres par exemple en utilisant la commande expression( ):

R Statistical Software 200/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

R Statistical Software 201/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

videmment l'intrt de savoir faire ce type de graphique c'est typiquement en finance lorsque
l'on connat explicitement le polynme du deuxime degr de la frontire efficiente, de
pouvoir aussi tracer la security market line dont l'quation de la droite est aussi explicitement
connue!

R Statistical Software 202/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 24.: Animer (tracer) des fonctions algbriques


R 3.0.2

Avec la package animation, nous pouvons animer un plot dans un fichier *.gif l'aide de la
commande savegif( ).

Remarque: Faire des animations est trs utile surtout pour les statistiques afin de voir la
convergence des distributions ou dans les plots de cartes pour voir des chemins ou des
densits voluer.

Il faudra cependant au pralable tlcharger et installer le logiciel gratuit:

http://www.imagemagick.org

Par exemple en animant simplement un sinus et un cosinus:

ce qui donne un image anime *.gif enregistre dans un dossier temporaire de votre disque:

R Statistical Software 203/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 204/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 25.: Racine(s) d'quations univaries


R 3.0.2

Pour rester dans les bases, voyons la mthode permet de trouver une racine unique une
quation suppose avoir des racines en utilisant la commande uniroot( ):

Pour trouver des racines multiples il faut ma connaissance installer un package:

R Statistical Software 205/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et choisir celui se nomme rootSolve:

Une fois ceci fait, nous pouvons retourner notre exemple en chargeant la libraire avec la
command library( ) et en cherchant les racines avec uniroot.all( ) et en les plottant avec la
commande points( ):

R Statistical Software 206/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 26.: Drivation algbrique/Drivation numrique


R 3.0.2

R a nativement une commande pour driver. Voici un exemple de drivation avec l'estimation
de la drive en un point:

Ensuite, pour la drive numrique nous allons reprendre l'exemple basique fait dans le cours
MATLAB et comparer la diffrence... D'abord avec un pas relativement standard:

R Statistical Software 207/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et ensuite avec la mme petite valeur problmatique:

R Statistical Software 208/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 209/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons donc apparatre le mme problme de prcision que dans MATLAB. Si nous
tatonnons un peu nous verrons que le meilleur pas est de l'ordre de 1e-8 ce qui amne une
erreur relative de l'odre de 1e-7.

Voyons cependant ce que nous pouvons faire avec la package numDeriv de R et la


commande grad( ) en commenant d'abord par robtenir le premier rsultat ci-dessus en
utilisant la mthode simple:

Ce qui donne (nous retrouvons donc bien la mme chose):

R Statistical Software 210/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et nous aurons le mme problme qu'avant si nous prenons le pas comme valant 1e-16.

Par contre, laissons ce package choisir sa mthode par dfaut:

et l nous avons un rsultat remarquable d'amlioration de l'ordre de 8 ordres de grandeur!:

R Statistical Software 211/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Qui trouvera mieux?

R Statistical Software 212/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 27.: Intgration numrique


R 3.0.2

Pour l'intgration numrique (il existe un package Ryacas - pour l'intgration symbolique
mais il ncessite une connexion internet constante et de plus le serveur correspondant n'est pas
toujours en ligne).

Intgrale simple
Un petit exemple avec la loi Normale centre rduite univarie utilisant la fonction
integrate( ):

Double Intgrale
Pour une double intgrale la syntaxe est un peu subtile dans R. Voici un petit exemple pour la
loi Normale centre rduite bivarie:

R Statistical Software 213/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Intgrale avec somme


Et pour une intgrale avec une somme finie dans l'intgrande comme par exemple l'esprance
d'un kernel smoothing avec noyau gaussien tronqu comme dmontr et tudi dans le cours
thorique:
2
n 1 s Xi
s
E (S ) nh
2 h
e ds
0 i 1 2x

en utilisant et normalisant les donnes ci-dessous:

Le script correspondant est alors:

R Statistical Software 214/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 215/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 28.: Rsoudre un systme linaire


R 3.0.2

Nous allons voir ici comment rsoudre le petit problme d'algbre linaire que nous avons fait
dans le cours thorique sur les systmes linaires. Il s'agit simplement d'appliquer les
commandes vues plus haut lors de notre dcouverte des variables matricielles.

Donc nous retrouvons la mme concluions que dans le cours thorique: ce systme n'a pas de
solutions.

R Statistical Software 216/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 29.: Gnrer une variable (pseudo-)alatoire


uniforme et reproductible
R 3.0.2

Nous allons voir par la suite comment grer certaines fonctions de distributions classiques
dans les petites classes et dmontres dans le cours thorique. Cependant, avant cela, il
convient d'abord de voir une commande particulire que l'on crit set.seed( ).

Considrons donc d'abord la gnration suivante d'une variable alatoire uniforme comprise
entre 0 et 1:

chaque fois que vous rexcuterez ces deux commandes, vous n'obtendrez pas le mme
graphique. Par contre, si vous utilisez set.seed( ) avec un identifiant, alors dans ce cas le
rsultat peut tre reproduit:

R Statistical Software 217/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ainsi, les deux premiers graphs sont identiques par contre le troisime est diffrent car il
utilise un autre vecteur alatoire.

R Statistical Software 218/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 30.: Optimisation unidimensionnelle


R 3.0.2

Nous allons voir ici encore un cas trivial de manipulation algbrique. Il s'agit de trouver
l'optimisation d'une fonction univarie en utilisant la commande optimize( ) dont la
spcification d'un intervalle de recherche est obligatoire.

Prenons le cas de la parabole que nous avions obtenu lors de notre tude thorique du modle
de Markowitz (videmment c'est un cas trivial mais cela marche aussi pour des fonctions
univaries beaucoup plus complexes):

Donc le minimum se trouve en:

x, y 0.223,0.00226

R Statistical Software 219/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 31.: Optimisation multidimensionnelle (sans


contrainte et local)
R 3.0.2

Utilisons la fonction baleine bosse que nous avions utilise dans le cours thorique lors de
notre dmonstration de la mthode d'optimisation de Newton-Raphson:

Nous avons alors en utilisant la commande nlm( ) qui signifie newton local minimum:

R Statistical Software 220/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui est effectivement conforme ce que nous avions vu dans le cours thorique comme le
rappelle ce plot en courbes de niveau ci-dessous:

R Statistical Software 221/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 222/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 32.: Optimisation multidimensionnelle (sans


contrainte et global)
R 3.1.1

Nous avons parl dans la formation des trs nombreuses techniques empiriques qui existent
pour chercher des optimum et nous avons dmontr deux techniques typiques. Nous allons
voir ici ce que propose R nativement avec la fonction optim( ):

Nous voyons qu'il trouve bien le minimum global.

R Statistical Software 223/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 33.: Optimisation multidimensionnelle (avec


contraintes)
R 3.0.2

Nous allons utiliser la commande nlmb( ) qui cherche un minimum local avec des contraintes
bornes l'infini en partant arbitrairement du point:

x, y 1.2,0.6
d'abord pour vrifier que nous retrouvons bien les mmes valeurs que la commande nlm( ):

Aprs supposons que nous cherchons le maximum dans la zone mise en vidence ci-dessous:

R Statistical Software 224/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dans ce cas nous crivons ( trouver...):

.....

R Statistical Software 225/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 34.: Optimisation (programmation) linaire par la


mthode du simplexe
R 3.0.2

Nous allons donc ici utiliser R pour rsoudre le problme de programmation linaire tudi en
cours suite la dmonstration mathmatique de la mthode du simplexe.

Rappelons que le problme tait donn par le systme canonique suivant:

avec la fonction d'utilit maximiser:

Nous avons vu que cela tait relativement laborieux rsoudre la main, trs simple
rsoudre dans les tableurs Open Office Calc et Microsoft. Excel. Eh bien voyons maintenant
cela avec R.

D'abord, nous installons le package linprog:

et ensuite nous crivons (pas vident deviner):

R Statistical Software 226/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et nous retrouvons donc bien tous les rsultats des calculs faits la main et dans les tableurs
dans le cours thoriques.

Par dfaut le package linprog n'accepte que les rsultats positifs (raison pour laquelle il n'y
pas d'options pour dfinir le signe des variables).

R Statistical Software 227/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

9. Importer/Exporter des donnes


Pour ceux qui prfrenet utiliser des interfaces visuelles pour l'import de donnes, nous les
renvoyons des outils comme RStudio ou SpeedR. Mais attention il faut avoir le Java
Runtime install sur sa machine (ce qui est toujours le cas dans les grandes organisations de
toute faon).

Dans ce chapitre, nous allons nous concentrer sur des mthodes se focalisant sur l'utilisation
de l'interface native de R comme l'habitude.

Exercice 35.: Importer/Exporter des *.csv en local


R 3.0.2

Ici nous allons vouloir d'abord importer au propre le fichier *.csv suivant qui contient une
petite complication assez courante dans les entreprises:

Pour ce faire voici nous allons utiliser la commande read.csv( ):

R Statistical Software 228/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou plus explicitement:

Et s'il y a des lignes vides, nous pouvons nous en dbarrasser automatiquement:

R Statistical Software 229/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons afficher les 6 premires lignes du data frame avec la commande head( ) (ou les
6 dernires avec la commande tail( )):

Une fois des oprations/calculs/manipulations effectues sur le data frame nous pouvons
l'exporter nouveau en *.csv avec la commande write.table( ):

Nous pouvons aussi associer un commentaire un data frame pour y mettre une petite
remarque:

R Statistical Software 230/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 36.: Importer interactivement des donnes


R 3.1.2

Le but ici est simplement de dcouvrir la fonction file.choose( ) qui injecte dans read.csv( )
dans des plus gros scripts (que ce soit en pur R ou en C# avec R.Net) permet l'utilisateur de
choisir son fichier avec une bote de dialogue:

R Statistical Software 231/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 37.: Importer/Exporter des *.csv en local pour les


listes
R 3.0.2

Quand nous commencerons faire des scripts R complexes pour les domaines des SIG
(systmes d'information gographiques) ou la finance quantitative, nous nous retrouverons
avec des listes importes d'Internet.

Il est parfois plus prudent de les sauvegarder en local car parfois les serveurs les fournissant
sont en maintenant ou disparaissent tout simplement.

Voyons un exemple d'export en *.csv d'une liste fournie par Yahoo Finance avec le package
quantmod et la commande d'export gnral R pour les listes qui est dput( ):

Ce qui donne un fichier *.csv avec un extrait de contenu tel que visible ci-dessous:

R Statistical Software 232/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, pour importer il suffit d'utiliser la commande dget( ):

R Statistical Software 233/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 38.: Importer des *.csv du web


R 3.0.2

Un cas trs important dans le domaine financier est de pouvoir aller chercher des donnes en
temps rel sur des socits fournisse ce type de service. La technique n'est pas bien diffrente
d'avec la technique locale:

R Statistical Software 234/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 39.: Exporter pour les forums


R 3.0.2

Souvent les tudiants demandent comment ils peuvent rapidement copier/coller un jeu
reproductible de leurs donnes de travail sur un forum pour bien montrer o se situe leur
problme avec le jeu de donnes relles.

Considrons alors l'import de donnes suivant:

Pour communiquer rapidement ce petit jeu de donnes sur un forum, vous pouvez alors
utiliser la commande dput( ):

R Statistical Software 235/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et ensuite il n'y a qu' copier/coller!

R Statistical Software 236/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 40.: Fusionner des fichiers *.csv


R 3.0.2

Le but ici va tre de voir une manipulation frquente dans les laboratoires qui consiste
fusionner des fichiers dcoulant typiquement de LabView l'aide de la commande rbind( ).

Considrons au moins deux fichiers *.csv:

Nous allons les fusionner dans R tout en sachant qu'au del de plusieurs centaines de millions
de lignes R n'arrive plus grer la fusion de fichier *.csv (je montrerai une technique pour
cela aprs).

R Statistical Software 237/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ensuite nous pouvons exporter le tout:

Vous pourrez alors vrifier dans ce fichier d'export que bien que nous ayons fusionn le
deuxime fichier aussi avec la ligne de titre, celle-ci a t limine a priori par R ds la fusion
dans R avec la commande rbind( ).

R Statistical Software 238/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Pour fusionner plusieurs fichiers d'un dossier sans avoir spficier leur nom, une possibilit
est:

Si les fichiers sont trop gros (centaines de millions de lignes chacun) il vaut mieux si vous
travaillez sur le systme d'exploitation Microsoft Windows utiliser le shell MS DOS avec la
commande suivante qui est extrmement efficace (je l'ai teste jusqu' obtenir un fichier final
de 11GB en moins de 3 minutes):

Mais attention au petit pige!!! Il faudra au pralable enlever la ligne de titre tous les
fichiers except le premier (sinon quoi la ligne de titre va se rpter plusieurs fois dans le
fichier final).

R Statistical Software 239/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 41.: R et LaTeX


R 3.1.2

Exporter un dataframe en LaTeX


Tous ceux qui travaillent avecc TeX/LaTeX savent comme il est pnible de transformer une
table de donnes en table LaTeX. Pour ceux qui travaillent avec R il existe le package xtable
qui permet d'automatiser l'criture du code l'aide de la fonction xtable( ):

Il ne reste plus qu' copier coller!

R Statistical Software 240/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exporter une analyse statistique en LaTeX


De nombreuses analyses statistiques peuvent te automatiquement gnres et exportes pour
LaTeX. Voyons un exemple:

Ce qui donne compil dans LaTeX:

Avouons que c'est pas mal ;-)

R Statistical Software 241/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Importer une sortie R dans LaTeX


Let us now consider the following R output that has been copy in a *.txt file:

he question is to know if there is a quick and not too much dirty way to render it in a LaTeX
document?

R Statistical Software 242/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous utilisons TeXMaker 4.1.2 avec:

o il est fait usage du package SASnRdisplay:

Ce qui donne donc:

R Statistical Software 243/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et sur la seconde page:

R Statistical Software 244/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

dont la qualite est comme l'habitude avec LaTeX: remarquable!!!

R Statistical Software 245/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 42.: Importer/Exporter au format Microsoft


Excel*.xlsx (2007-2010)
R 3.0.2

Les packages de lecture/criture XLSX ne marchent pas actuellement avec la version x64 de
R. Il faut excuter la version x32 et de plus avoir la version x32 du Runtime Java d'install.

Nous installons maintenant un package en apprenant directement au passage comment le faire


avec la commande install.packages( ) au lieu de passer par un menu:

Ensuite le but et d'importer le contenu du fichier suivant xlsxDonnees.xlsx dans un data frame:

R Statistical Software 246/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

PS: Remarquez la dernire colonne n'a pas de titre (lgende) pour voir quel va tre le
comportement du package dans cette situation.

Pour cela, nous allons utiliser la commande readWorkhseetFromFile( ) comme ci-dessous:

R Statistical Software 247/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et ensuite on exporte nouveau le tout dans un fichier *.xlsx (bon videmment dans la ralit
on fera des manipulations dessus entre temps!) dans le dossier courant de R (qui pour rappel
peut tre chang par la commande setwd( )):

Ce qui nous donne:

Nous voyons alors ce que deviennent les espaces initialement dans les titres des colonnes
ainsi que la colonne qui n'avait initialement pas de titre.

R Statistical Software 248/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons aller plus loin avec le package xlsx toujours avec une version 32 bits de R
comme le montre l'exemple ci-dessous:

Ensuite, nous crivons:

Ce qui donne:

R Statistical Software 249/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Utiliser le presse-papiers
Il est possible de mettre un data frame dans la mmoire (presse-papier) pour pouvoir ensuite
par un simple copier/coller se retrouver avec une un tableau type dans Microsoft Excel(ou
autre).

Voici cela avec un exemple d'abord pour des colonnes une par une:

et pour un data frame en entier:

R Statistical Software 250/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 43.: Importer/Exporter des donnes au format SPSS


R 3.0.2

De nombreux tudiants universitaires doivent passer leurs anciennes donnes SPSS en R pour
pouvoir utiliser toute la puissance de R. Cela est possible avec la commande read.spss( ) du
package foreign:

R Statistical Software 251/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 44.: Importer des donnes au format MATLAB


R 3.4.2

L'import de donnes MATLAB se fait qu'avec des matrices contenues dans des fichiers *.mat
avec le package R.matlab et sa fonction readMat( ):

R Statistical Software 252/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 45.: Importer des donnes de fichiers MS Access


(*.mdb/*.accdb)
R 3.0.2

Nous allons d'abord installer le package suivant RODBC:

Attention!!! Ce package ne permet pas que d'accder aux donnes mais galement des les
modifier, de crer des tables, etc.!

Ensuite, il faut suivant la manire dont vos informaticiens ont install MS Windows dans
votre organisation aller tlcharger la bonne version des drivers ODBC Access de Microsoft:

http://www.microsoft.com/en-us/download/details.aspx?id=23734

ce qui donnait au jour o j'cris ces lignes, la page Internet suivante avec un excutable
installer:

R Statistical Software 253/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous lanons le gestionnaire ODBC de Windows en 32 bits car le package ODBC ne
marche pas correctement en x64:

S'ouvre alors la bote de dialogue suivante et nous cliquons sur Ajouter:

R Statistical Software 254/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous prenons ensuite le driver qui correspond au premier fichier que nous voulons utiliser
(nous commenons par un *.mdb et nous verrons ensuite pour le *.accdb):

Nous cliquons ensuite sur Terminer et dans la bote de dialogue qui apparat il faut
absolument donner au nom de la source de donnes le nom du fichier Access lui-mme
auquel vous voulez par la suite vous connecter:

R Statistical Software 255/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous cliquons sur le bouton Slectionner...:

et nous allons chercher le dossier o se trouve le Access qui nous intresse. Nous validons par
OK une premire fois:

R Statistical Software 256/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et encore par OK:

et nous validons ensuite sur OK et retournons dans R. Nous chargeons comme l'habitude la
librairie et avec la commande odbcDataSources( ) nous testons si R voit bien notre driver:

et c'est donc bien le cas.

Pour la suite nous sommes obligs d'utiliser (du moins au jour o j'cris ces lignes) la version
x32 de R pour pouvoir poursuivre et nous utilisons la commande odbcConnectAccess( )
comme il s'agit d'un fichier Access 2003 ou antrieur et ensuite la commande sqlFetch( ) pour

R Statistical Software 257/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
chercher la table XLSData qui nous intresse et qui contient effectivement environ 1 million
de lignes:

affichons quelques colonnes et quelques lignes pour voir que tout est ok:

Donc c'est tout bon!

Attention!!! Si le fichier Access est en lecture seule ou ouvert par un autre utilisateur l'accs
par R ne sera pas possible.

La mthode est presque exactement la mme pour des *.accdb part qu'on prendra au dbut
un driver *.odbc pour les fichiers *.accdb et non *.mdb et que le code change un peu pour car
nous devrons utiliser la commande odbcConnectAccess2007( ) (mme si c'est pour des
fichiers d'Access 2010 ou du 2013):

R Statistical Software 258/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 259/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 46.: Importer des donnes JSON


R 3.2.1

Un fichier JSON (JavaScript Object Notation) est un fichier contenant des donnes structures
comme du XML mais qui drive de la notation des objets javascript. Pour importer des
donnes d'un fichier *.json, il faut d'abor installer et charger le package rjson et avec la
fonction fromJSON(), on importe les donnes sous forme de liste.

Considrons maintenant le fichier *.json suivant:

L'import se fait relativement facilement:

R Statistical Software 260/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 261/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 47.: Importer des donnes XML ou HTML du web


R 3.0.2

D'abord il va nous falloir installer le package XML:

Enfin, nous utilisons la commande xmlToDataFrame( ):

R Statistical Software 262/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Un cas de plus en plus frquent consiste aspirer des donnes provenant des tables HTML et
nous pouvons faire cela toujours avec le mme package XML.

Considrons la page Internet suivante:

Nous voulons importer les donnes dans R.

R Statistical Software 263/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous poursuivons:

On regarde le rsultat qui est nickel:

R Statistical Software 264/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 265/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 48.: Importer des donnes XES (*.xes)


R 3.4.1

Nous allons pour importer un fichier un fichier *.xes (eXtensible Event Stream4) utiliser le
package xesreadR avec le contenu suivant:

Donc nous chargeons d'abord les packages et ensuite le fichier *.xes d'exemple l'aide de la
fonction read_xes( ):

4
Il s'agit du format normalis des logiciels qui stockent en temps rel ou manuellement les tapes d'avancement
de processus business.

R Statistical Software 266/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et voil! Pour en savoir plus sur l'utilit de ce type de donnes, le lecteur pourra se rferer aux
exemples sur la business process analysis donns plus loin la page 1228.

R Statistical Software 267/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 49.: Exporter/Lire des fichiers SAS (*.dat)


R 3.2.3

Ceux qui travaillent dans le pharma connaissent bien l'exigence de la FDA (Federal Drug
Administration) propos du format des donnes analyses. Heureusement et bien
videmment, il existe un package R pour crire et lire ce type de fichier: le package
SASxport.

D'abord nous chargons le package avec un jeu de donnes se trouvant dans un *.csv:

Ensuite, nous exportons:

Nous allons dans le dossier concern pour voir que le fichier *.dat est bien l:

R Statistical Software 268/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui est bien le cas (c'est un fichier binaire donc inutile de penser l'ouvrir dans le bloc-
notes)!

Aprs avoir renomm et dplacer el fichier, nous pouvons aussi le lire avec la commande
xport( ):

R Statistical Software 269/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 50.: Importer des donnes de Quandl


R 3.4.1

L'objectif ici va tre d'importer des donnes de Quandl qui est un site tout aussi fameux que
Yahoo en ce qui concerne les donnes (entre autres), financires.

Nous souhaitons importer les donnes de la page suivante:

Observez bien sur la page web ci-dessus le Quandl Code que nous avons mis en vidence par
un rectangle rouge. C'est ce que nous allons utiliser pour importer les donnes dans R avec le
package Quandl.

Attention!!! Sans compte Quandl, le nombre d'appels depuis R est limit par jour!

R Statistical Software 270/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ensuite on peut s'amuser:

R Statistical Software 271/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 51.: Parser du HTML


R 3.1.1

Toujours avec le package XML, nous parsons la page suivante:

Nous utilisons alors la fonction htmlParse( ) du package XML:

R Statistical Software 272/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour lire ensuite les titres <h2> il nous suffit alors d'crire:

R Statistical Software 273/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou les paragraphes:

R Statistical Software 274/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 52.: Importer des donnes *.csv d'un fichier zip


R 3.0.2

Un cas relativement courant de jeux de donnes se trouvant sur Internet est ceux qui sont
retrouvent compresss dans des fichiers *.zip.

Considrons alors le fichier *.zip suivant:

Avec le contenu:

o le fichier *.csv contient:

R Statistical Software 275/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Le fichier zip est stock l'adresse Internet visible dans le script ci-dessous:

et nous avons bien rcupr les donnes comme le montre la commande ci-dessous:

R Statistical Software 276/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 53.: Importer des donnes d'un serveur MySQL


R 3.0.2

Pour l'exemple nous supposerons que le lecteur aura tlcharg et install XAMPP:

Une fois tlcharg et install, si vous travaillez avec une version Pro de MS Windows, il
vous faudra arrter le serveur IIS pour poursuivre:

R Statistical Software 277/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, ouvrez XAMPP et dmarrez les servies Apache et MySQL:

Ouvez ensuite votre navigateur prfr et tapez http://localhost. Vous devrez alors avoir:

R Statistical Software 278/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et cliquez en bas gauche de cette mme pache sur phpMyAdmin pour accder aux bases de
donnes et tables de MySQL:

Ensuite, tlchargez le connecteur ODBC MySQL pour MS Windows l'adresse suivante:

http://dev.mysql.com/downloads/connector/odbc/

Une fois les drivers ODBC de MySQL tlchargs, ouvrez le gestionnaire ODBC de
MS Windows et cliquez sur Ajouter:

R Statistical Software 279/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et dans la bote de dialogue qui vient, slectionnez le driver mis en surbrillance ci-dessous:

Cliquez sur Terminer et vous aurez alors une bote de dialogue qu'il vous faura remplir
comme indiqu ci-dessous:

R Statistical Software 280/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Cliquez sur le bouton Test:

Vous pourrez alors choisir la base de donnes disponible dans le serveur MySQL:

R Statistical Software 281/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ici, nous avons pris empiriquement pour exemple la base de donne installe par dfaut avec
MySQL et qui se nomme mysql. Nous validons par OK et revenons alors :

Ensuite, nous retournons dans R et pour voir la liste des tables de la base de donnes, nous
utilisons la commande sqlTables( ) du package RODBC (souvenez que ce package permet
pas seulement de lire, mais aussi de modifier, crer des donnes dans la base!!!):

R Statistical Software 282/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi afficher les colonnes d'une table donne de la base. Ainsi, avec la
commande sqlColumns( ) nous demandons R de nous montrer la structure de la table
columns_priv:

R Statistical Software 283/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et pour lire le contenu de la table MySQL et la mettre dans une data frame, nous utilisons la
commande sqlFetch( ):

Il existe encore d'autres nombreuses possibilits comme de faire des requtes en SQL
directement sur les tables de votre choix mais pour cela vous pouvez vous rfrer au PDF du
package RODBC qui contient des exemples trs bien fait.

R Statistical Software 284/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 54.: Importer des donnes d'un serveur Oracle


Express
R 3.0.2

Nous allons donc supposer que Oracle Express 10g est install:

Pour la dmo nous utiliserons le compte systme (dont le nom est system et le mot de passe
demand par l'installateur d'Oracle Express lors de... l'installation).

Une fois donc constat le dmarrage d'Oracle Express, nous ouvrons l'application ODBC de
MS Windows:

R Statistical Software 285/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous cliquons sur Ajouter...:

Nous choisissons le pilote Oracle in XE et cliquons sur Terminer et nous remplissons la


bote de dialogue qui apparat comme ci-dessous:

R Statistical Software 286/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous cliquons ensuite sur Test Connection. Le nom de la base ainsi que le compte et la
password d'accs ava alors nous tre demand:

Nous validons par OK pour obtenir un succs de la connexion:

R Statistical Software 287/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous validons encore par OK pour revenir :

et encore une dernire fois par OK.

De retour dans R, nous chargeons la libraire RODBC (souvenez que ce package permet pas
seulement de lire, mais aussi de modifier, crer des donnes dans la base!!!), regardons le
nombre de tables dans la base par dfaut associe au compte systme (nous affichons
seulement les dix premires tables) et nous faisons une requte sur une des tables:

bingo!

R Statistical Software 288/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 55.: Utiliser le SQL


R 3.0.2

Le SQL est un langage extrmement puissant, bien pens et trs rapide pour traiter et
manipuler des donnes dans des bases de donnes relationnelles. Il existe ainsi un package
dans R permettant d'utiliser le SQL sur un ou plusieurs data frames en mme temps afin de
pouvoir utiliser les jointures. Ce package est extrmement utile dans la pratique du big data et
plus rapide que les commandes classiques de R.

Voyons quelques exemples qui seront bass sur le tables d'Oracle Express qui ont t
pralablement exportes au format *.csv.

D'abord, nous installons le package sqldf (qui utilise SQLite en arrire plan):

Ensuite, nous le chargeons:

R Statistical Software 289/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous pouvons commencer appliquer notre connaissance du SQL en utilisant la


commande sqldf( ):

Il n'est malheureusement pas possible de faire tout ce qui est possible dans Oracle avec du
pour SQL mais nous pouvons faire ce jour:

Des requtes de slection (SELECT)


Des requtes de slection (EXCEPT)
Des requtes de comptage (COUNT)
Des requtes de limite (LIMIT)
Des requtes avec filtre (WHERE)
Des requtes de groupement (GROUP BY)
Des requtes de tri (ORDER BY)
Des requtes avec jointure (INNER JOIN)

Pour plus d'informations avec des cas pratiques bass sur le mme jeu de donnes, le lecteur
pourra se reporter mon e-book sur le SQL (282 pages):

R Statistical Software 290/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

www.sciences.ch/tiny?url=18

Suite un problme soumis par un lve qui consiste comparer deux jeux de donnes afin
de savoir quels sont les lments de l'un qui sont pas dans l'autre relativement un champ
donn sans prendre en comptles doublons, voici un autre excellent exemple d'application de R
sachanque que nous avons test sur la mme machine l'utilisation de Power Query (Microsoft
Excel) et la requte de non-correspondance dans Microsoft Access qui taient tous deux non
satisfaisants et beaucoup trop lents par rapport R:

R Statistical Software 291/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 56.: Importer des donnes de Twitter


R 3.4.1

Le package que nous allons voir maintenant est loin d'tre complet d'autant plus que l'quipe
de Twitter change rgulirement les rgles et les options de leur API, donc ne rvez pas
trop

D'abord pour pouvoir utiliser le package twitteR, vous allez devoir vous rendre sur la page
https://apps.twitter.com afin d'y obtenir des cls d'accs aux API de donnes:

Nous cliquons sur sign in:

R Statistical Software 292/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Aprs avoir renseign l'e-mail et le mot de passe de votre compte Twitter vous cliquez sur
Log in pour arriver :

Cliquez sur Create New App pour obtenir:

R Statistical Software 293/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Quand vous validez par Create your Twitter applicationsvous obtiendrez la page suivante o
il fadura vous rendre dans l'onglet Keys and Access Tokens:

Ensuite, dans R, nous chargeons le package twitteR et utilisons la fonction


setup_twitter_oauth( ) pour nous connecter l'API en utilisant respectivement la consumer
key en premier ent la consumer secret en second:

R Statistical Software 294/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Aprs avoir valid en ayant tap la valeur 1 (Yes), votre navigateur par dfaut va s'ouvrir
avec:

Saisissez les donnes de votre compte et cliquez sur Connexion, vous arrivez alors sur:

et quand nous cliquons sur Autoriser l'application, nous obtenons:

R Statistical Software 295/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, lorsque nous retournons dans R, nous avons:

Nous pouvons avec la fonction searchTwitter( ) obtenir tous les tweets publics autoriss par
l'API avec un certain terme:

R Statistical Software 296/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore avec la fonction favorites( ) les n derniers tweets favoris d'un certain utilisateur de
Twitter:

R Statistical Software 297/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

10. Manipuler, filtrer/trier des donnes de data frame


Pour traiter des bases des manipulations des data frames, nous allons travailler avec les
donnes suivantes:

Par rapport ce que nous allons voir il faut savoir qu'il existe toujours plusieurs manires
d'arriver au rsultat. Le but de cet exercice est surtout d'tudier des commandes que vous
retrouverez dans d'autres contextes plus importants, sur de nombreux forums ou livres. Bref
c'est une culture gnrale qu'il faut acqurir pour tre l'aise.

R Statistical Software 298/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 57.: Rsum structurel d'un date frame


R 3.0.2

Les commandes str( ), dim( ) ou encore nrow( ) et ncolumn( ) appliqus des data frame
sont bien utiles pour avoir un rsum de ce que l'on a:

R Statistical Software 299/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 58.: Renommer des intituls de colonnes


R 3.0.2

Quelques commandes et options pour changer individuellement les intituls de certaines


colonnes et de plusieurs d'un coup:

R Statistical Software 300/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 59.: Renommer des intituls de lignes


R 3.0.2

Voici un exemple trs qui nous sera utile (entre autres) beaucoup plus loin quand nous
traiterons du problme du voyageur de commerce utilisant la commande native row.names( ):

R Statistical Software 301/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 60.: Prendre un sous-ensemble (subset)


R 3.0.2

Un sujet dont la simplicit se passe de tout commentaire:

R Statistical Software 302/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 61.: Appliquer un filtre


R 3.0.2

Donc l videmment on peut jouer avec normment de combinaisons mais dans l'ide voici
un exemple de base avec filtres multiples avec des conditions ET ainsi que OU en utilisant la
commande which( ):

La commande which( ) permet aussi plus simplement de savoir les numros des lignes o
pour une colonne donne, certaines valeurs sont satisfaites:

R Statistical Software 303/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons utiliser aussi which( ) conjointement avec des fonctions:

Indiquons aussi la commande subset( ) qui permet de filtrer aussi et que l'on retrouve dans de
nombreux scripts R de data mining:

R Statistical Software 304/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore la commande %in% que l'on retrouve dans certains scripts de Finance:

R Statistical Software 305/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou lorsque l'on veut utiliser un pattern de filtrage en utilisant la commande grep( ):

R Statistical Software 306/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 62.: Prendre un sous ensemble filtr


R 3.0.2

La manip est plutt simple et ce passe probablement de commentaires:

Toujours au niveau des commandes lmentaires de filtrage, voyons les commandes all( ) et
any( ):

- any( ) renvoie une valeur boolenne pour signaler si au moins une valeur correspond au
critre dans le vecteur choisi.

- all( ) renvoie un valeur boolenne pour signaler si toutes les valeurs sans aucune exception
satisfont un certain critre ou non.

R Statistical Software 307/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 63.: Utiliser les techniques de filtrage pour trouver la


valeur proche
R 3.0.2

Toujours avec notre data frame habituel, nous souhaitons savoir quelle est le prix total avec
rabais le plus proche de 75'000.

La technique est maligne... il fallait y penser:

c'est pas beau a? Simple et efficace!

R Statistical Software 308/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 64.: chantillonnages


R 3.0.2

Avant que l'on s'attaque srieusement au sujet, considrons la symathique et ludique


animation suivante pour chantillon de 15 points parmi 100:

Ce fait, passons des choses plus srieuses

R Statistical Software 309/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

chantillonnage alatoire simple


C'est un cas trs important dans la pratique et surtout dans le cas industriel o il y a rarement
des strates dans une ligne de production! Il s'agit simplement pour rappel de choisir des
individus de telle sorte que chaque membre de la population a une chance gale de figurer
dans l'chantillon.

Voyons cela en utilisant les commandes sample( ) et les paramtres nrow et replace (dans le
cas ci-dessous nous interdisons un mme individu d'apparatre deux fois dans le tirage):

La commande sample( ) peut tre aussi utilise pour gnrer des vecteur de textes (utile pour
les arbres binomiaux par exemple):

Nous avons galement du package sampling la fonction srswor( ) qui correspond ce que
nous avons vu dans le cours thorique:

R Statistical Software 310/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 311/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

chantillonnage stratifi (probabilits proportionnelles)


Pour cet exemple nous allons utiliser un autre fichier mais contenant exactement le mme
type de donnes.

Commenons d'abord par un chantillonnage stratifi qui n'est pas probabilit


proportionnelles afin de vrifier le systme de fonctionnement de la fonction strata( ) du
package sampling.

D'abord nous faisons un rsum simple des secteurs d'activit du jeu de donnes avec lequel
nous allons travailler et ce en n'utilisant aucune commande du package sampling:

Nous avons donc les proportions reprsentatives de chaque strate des Secteurs sur l'ensemble
de la population.

Prenons maintenant un mme nombre d'individus de chacune des strates (il ne s'agit donc pas
l d'un chantillonnage stratitifi probabilits proportionnelles mais d'un chantillonnage
balanc):

R Statistical Software 312/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous entrevoyons ainsi bien le concept de syntaxe de la fonction strata( ).

Maintenant faisons vraiment un chantillonnage stratifi probabilits gales:

Et nous avons donc notre chantillon stratifi probabilit gales:

R Statistical Software 313/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 314/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 65.: liminer des colonnes


R 3.0.2

Afin d'acclrer le traitement et l'analyse de data frame dans R il peut tre judicieux de savoir
supprimer des colonnes.

Voici une premire mthode:

R Statistical Software 315/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
une deuxime mthode:

et une mthode pour enlever plusieurs colonnes d'un coup:

et encore une dernire pour la route...:

R Statistical Software 316/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 317/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 66.: Tri simple et multiple


R 3.0.2

Et pour le tri voici comment faire en utilisant la commande order( ):

Il suffit d'ajouter le paramtre:

decreasing = TRUE

la commande order( ) pour avoir le tri dans l'ordre dcroissant.

Pour faire deux tris (ou plus) dans un ordre diffrent, voici la syntaxe:

R Statistical Software 318/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et on peut s'amuser faire un ranking avec la commande rank( ) et ajouter cette colonne au
data frame:

Et pour faire un tri sur mesure:

R Statistical Software 319/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 320/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 67.: Chercher et supprimer des doublons


R 3.0.2

En utilisant la commande duplicated( ) vous pouvez chercher les doublons se trouvant dans
un data frame dans ou une ou plusieurs colonnes.

Voyons cela d'abord avec notre data frame habituel en entier:

et avec une seule colonne:

et pour supprimer les doublons:

R Statistical Software 321/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 322/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 68.: Acclrer l'accs aux colonnes


R 3.0.2

Si la syntaxe NomDuDataframe.$Colonne vous ennuie la longue, vous pouvez utiliser la


commande attach( ) comme indiqu ci-dessous:

R Statistical Software 323/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 69.: Empiler/Dsempiler des donnes de data frame


R 3.0.2

Il arrivera souvent dans la pratique que l'utilisateur copie/colle des donnes provenant de
Microsoft Excelsous la forme suivante:

ou avec encore plus de colonnes. Suivant les outils que nous verrons par la suite, il est
ncessaire de mettre les donnes les unes sous les autres. Certes, un simple copier/coller suffit
mais R a aussi une commande prvue cet effet.

D'abord commenons par le classique:

R Statistical Software 324/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons ensuite continuer notre travail. Il nous faut pour cela installer le package gtools
comme indiqu ci-dessous:

R Statistical Software 325/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous validons par OK autant de fois que ncessaire. Ensuite, nous retournons nos
commandes:

R Statistical Software 326/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et nous pouvons enfin utiliser la colonne smartbind( ) du package gtools:

R Statistical Software 327/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, pour faire un peu le mnage:

R Statistical Software 328/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou sans packages en utilisant judicieusement rbind( ), as.vector( ), factor( ) et


as.data.frame( ):

R Statistical Software 329/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous souhaiterions faire la mme chose qu'avant mais avec une petite subtilit ncessaire
(disons plutt "prfre" par certains utilisateurs). Il s'agit d'empiler les donnes mais avec
une variable qualitative de l'appartenance de groupe. Pour cela, nous reprenons le fichier
suivant:

Une mthode possible est similaire celle d'avant mais avec un petit ajout:

R Statistical Software 330/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire la mme chose sans package (je m'en suis rendu compte un peu tard...)
avec la commande native stack( ):

R Statistical Software 331/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, avec la commande tapply( ) que nous retrouvons de nombreuses reprises nous
pouvons nous amuser un peu:

R Statistical Software 332/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et avec un petit graphique rapide:

Maintenant, en imaginant que nous avons import le tableau prcdent, supposons que nous
souhaiterioons faire le contraire: dsempiler.

Pour cela, ouvrez le fichier nous allons utiliser la commande native unstack( ):

R Statistical Software 333/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et on renomme tout cela vite fait:

R Statistical Software 334/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 335/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 70.: Synthtiser/Aggrger des donnes (tables de


contingences)
R 3.0.2

Nous allons voir ici quelques techniques lmentaires de synthse de donnes. Nous sommes
bien videmment trs loin de ce qu'il est possible de faire beaucoup plus rapidement et
esthtiquement avec le tableur Microsoft Excel (voir mes formations sur les tableaux croiss
dynamiques sur Video2Brain.com et Alphorm.com).

Voyons une premire manire sympathique de synthtiser des donnes dans un tableau
double entre avec des lignes de sparation. Nous installons et chargeons d'abord le package
Epi:

et ensuite nous faisons la synthse avec la commande stat.table( ):

R Statistical Software 336/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voici une deuxime manire de synthtiser des donnes en une table de contingences avec les
commandes table( ) et addmargins( ) et ce sans packages5:

5
La commande xtable( ) que nous verrons lors de notre tude des graphiques permet d'avoir le mme rsultat

R Statistical Software 337/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et avec les proportions en utilisant la commande prop.table( ) cela donne:

Remarques:

Pour extraires les valeurs dans des vecteurs il est possible de transformer la table en un
data frame en utilisant la commande as.data.frame(nom_de_la_table).

Il suffit d'crire: prop.table( )*100 pour avoir toutes les valeurs en %

Enfin une question classique: comment mettre le symbole "%"? Eh bien c'est pas intuitif mais
voil:

Nous pouvons galement synthtiser des donnes (trs utile pour des diagrammes barre ou
des camemberts), avec la commande aggregate( ):

R Statistical Software 338/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou avec autre chose qu'un simple comptage:

Voyons maintenance ce qu'il est possible de faire avec le package nomm gmodels:

R Statistical Software 339/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons alors:

R Statistical Software 340/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou pour revenir du plus simple sans package utilisant la commande sapply( ) relativement
souvent utilise dans des scripts R:

Ou encore sans packages en utilisant la commande tapply( ):

Ou avec trois entres:

R Statistical Software 341/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et en utilisant par dessus la commande gnrique ftable( ) pour formater cela un peu mieux:

R Statistical Software 342/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce dernier cas ressemble aux tableaux croiss dynamique du tableur Microsoft Excel mais en
beaucoup moins flexible, rapide et esthtique.

Enfin signalons la fonction xyTable( ) que nous utiliserons plus loin pour faire des
rgressions particulires. Considrons par exemple que nous souhaitons compter le nombre de
quantits de commandes qui se trouvent prs d'un arrondi au millier donns des montants de
facture. Nous avons alors:

R Statistical Software 343/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ainsi il y a:

2 commandes dont la quantit est 1 et le montant de facture prs de 3'000


8 commandes dont la quantit est 2 et le montant de facture prs de 5'000
5 commandes dont la quantit est 2 et le montant de facture prs de 6'000
Et ainsi de suite

Voyons maintenant la commande native split( ):

R Statistical Software 344/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 71.: Transformer des donnes longitudinales en


transervales (et l'inverse)
R 3.0.2

Voil une situation dans laquelle nous nous retrouvons frquemment lorsque nous travaillons
avec des gens utilisant un tableur. Considrons le fichier suivant:

avec la commande reshape( ) du package reshape2 nous allons transformer cela en donnes
transversales (la syntaxe de la transformation est peu intuitive):

R Statistical Software 345/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et l'opration inverse (dont la syntaxe est beaucoup plus aise):

R Statistical Software 346/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 72.: Traiter un vecteur de texte


R 3.0.2

Voyons un cas courant dans les data frame consistant dcomposer le contenu d'une colonne
contenant des chanes de caractres en en prenant qu'une seule partie en appliquant la
commande sapply( ) dont la syntaxe est loi d'tre intuitive dans le cas prsent (il faut au
pralable convertir le typage de la colonne des textes avec la commande as.character( )):

R Statistical Software 347/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 73.: Travailler avec des valeurs absentes (NA)


R 3.0.2

Bon je ne suis pas un fan de ce sujet car je considre que le travail doit tre correctement fait
en amont pour viter ce types de situations (c'est videmment une opinion trs personnelle).

Il existe quelques paramtres et commandes dans R permettant de se dbarrasser des valeurs


absentes (Not Available) se trouvant dans un data frame.

Considrons le fichier suivant (remarquez les NA dans la colonne Quantit):

Alors quand nous importons dans R il faut spcifier ce qui est une valeur "vide":

Maintenant pour se dbarrasser des NA nous utilisons la commande na.omit( ):

R Statistical Software 348/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon certaines fonctions statistiques ont directement une option pour grer ce genre de
situation. Effectivement:

avec is.na( ) nous pouvons aussi savoir combien il y a des valeurs absentes ou non afin de
savoir quoi nous attendre...:

R Statistical Software 349/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
nous verrons plus loin que pour nous dbarrasser des NA d'un data frame il suffit d'crire
na.omit(mon.data.frame).

Parfois il est souvent utile en finance et en statistiques de remplacer les NA par une valeur
prcise. Pour cela nous utilisons toujours la mme fonction:

R Statistical Software 350/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Analyser les donnes manquantes


Nous allons voir ici en quoi la package VIM peut nous aider analyser les valeurs
manquantes d'un jeu de donnes.

Nous chargeons pour l'exemple un jeu de donnes associ au package:

Avec la fonction aggregate du package nous pouvons avoir un tat des lieux du jeu de
donnes:

R Statistical Software 351/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour une variable donne et ses intervalles nous pouvons afficher le nombre d'lments non
disponibles d'une autre variable choisie l'aide de la fonction barMiss():

R Statistical Software 352/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons galement analyser les statitiques d'une variable (sleep dans le cas prsent)
sous forme d'un box-plot et sparant aussi la statistique en deux sous-box-plot avec seulement
et sans les valeurs manquantes d'un autre variable (dream dans le cas prsent) l'aide de la
commande pbox():

R Statistical Software 353/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 354/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 74.: Fusionner des donnes par cl de mappage


(RECHERCHEV)
R 3.0.2

Dans certaines situations simples plutt que de faire appel l'artillerie lourde du SQL pour
associer deux data frame, une solution simple est parfois possible. Elle consiste faire un
mappage entre deux tables en utilisant la commande native merge( ) de R.

Considrons pour l'exemple les deux jeux de donnes suivants:

Nous allons faire un mappage et observer le rsultat (la conclusion devrait ne pas ncessiter
de commentaires de notre part):

R Statistical Software 355/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il s'agit donc de l'quivalent du fameux RECHERCHEV de Microsoft Excel (VLOOKUP


pour ceux qui ont la version anglaise).

R Statistical Software 356/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 75.: Afficher un data frame en tant que table


R 3.2.4

Nous allons voici ici quelques possibilits du package gridExtra dont il existe une excellente
documentation ici:

https://github.com/baptiste/gridextra/wiki/tableGrob

Donc voyons un example avec notre jeu de donnes habituel et en utilisant la fonction
tableGrob:

Ce qui donne:

R Statistical Software 357/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

D'autres complications viendront pas la suite car la syntaxe est un peu pnible ce jour!

ToDo:

R Statistical Software 358/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 76.: Diffrence apply, lapply, sapply,


R 3.2.4

Comme la question est frquemment demande dans les formations, voici avant de passer
l'tude du package dplyr - un rsum concernant les diffrences entre ses trois fonctions que
l'on retourve frquemment (si nous omettons vapply(), tapply(), eapply() et rollapply()).

Alors allons-y:

apply(array/matrix, margin, fun, ) Apply Functions Over Array Margins

Permet d'appliquer une fonction R ou personnelle sur une ensemble de colonnes d'une
matrice. Comme nous l'avons montr avec les exemples aux pages 172, 1451 ou
encore 1699.

lapply(list/vector, fun, ) Apply Functions and return a list

Permet d'appliquer une fonction R ou personnelle sur une liste et renvoie une liste.
C'est un cas relativement rare mais nous le lecteur pourra en voir un exemple la page
1617.

Remarque: Passer le paramtre simplify=FALSE sapply( ) donne le mme rsultat


que lapply: sapply(x, fun, simplify=F)

sapply(list/vector, fun, ) Apply Functions and return a vector (or optionaly a


list)

Permet d'appliquer une fonction R ou personnelle sur une liste vecteur et renvoie une
liste ou vecteur. C'est le cas le plus utilis dans R et lecteur pourra en voir des
exemples la page 341, 144, 1420, 1686.

R Statistical Software 359/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Data Wrangling
Package dplyr
Je recommande toujours d'viter au maximum d'utiliser des packages pour faire ce que les
packages natifs de R font dj. Mais certaines personnes n'coutant pas le package dplyr6
(qui est une itration du package plyr) reste toutefois beaucoup utilis de par sa rapidit et
c'est pourquoi nous allons exceptionnellement voir de quoi il s'agit relativement en dtails
(mme si je dteste faire cela) mais sans toutefois tudier toutes les combinaisons possibles
(car la combinatoire tend vers l'infini).

Remarque: Il semblerait que le package data.table et dplyr sont comparables en vitesse.


Mais comme les packages voluent (raison pour laquelle nous ne fournirons pas de
comparaison chiffre!), il faut rgulirement les tester et les comparer. Cependant il est clair
et net que dplyr une syntaxe plus lisible que celle de data.table et permet galement un
accs plus facile des bases de donnes externes.

Attention!!! Comme pour tout package non-natif, les noms des fonctions changent parfois
d'une itration une autre

Pour en savoir plus le lecteur pour se rfrer :

https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

Bon chargeons le package et le dataframe que nous allons utiliser:

Voyons comment convertir le jeu de donnes en classe tbl avec la fonction tbl_df( ). Les tbl
sont plus faciles explorer que les data frames:

6
Le "d" est pour dataframes, le "plyr" et pour voquer des"pliers" ("pinces" en franais)

R Statistical Software 360/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R n'affiche que les donnes adaptes la taille de l'cran!

Pour l'opration inverse, nous utilisons la fonction as.data.frame( ):

Pour avoir un rsum, nous utilisons la fonction glimpse( ):

R Statistical Software 361/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme d'habitude nous pouvons utiliser la fonction View( ) pour afficher les donnes dans
un tableur:

Ce qui donne:

R Statistical Software 362/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut slectionner seulement certaines colonnes choix avec la fonction select( ):

ou pour retirer une ou plusieurs colonnes:

R Statistical Software 363/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 364/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou encore pour changer l'ordre de certaines colonnes seulement en prservant le reste des
colonnes:

Il est possible de faire un tri avec la fonction arrange( ) o nous dcouvrons le symbole
%>%:

R Statistical Software 365/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Symbole que nous pouvons gnraliser:

ou encore avec plus de finesse pour prendre un autre exemple typique (cela fait bien
videmment penser aux tableaux croiss dynamiques de nombreux tableurs):

ou encore si on veut des diffrences successives (trs utilis en finance avec des
complications significatives7!):

7
Transformation en pourcent, ou calcul du logarithme natural des ratios des rendements, etc.

R Statistical Software 366/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant considrons le petit fichier de donnes longitudinales suivant:

et avec le package tidyr et la fonction gather() nous obtenons:

R Statistical Software 367/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut faire l'opration inverse avec la fonction spread( ) toujours du package tidyr:

Avec la fonction separate( ) on peut scindre une colonne de dates (remarquez l'association
erronne des annes et des jours!!!!):

R Statistical Software 368/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et pour ceux qui connaissent bien les tableaux croiss dynamiques, nous pouvons faire une
analyse similaire avec rptition des lignes de groupement (comportement exclusift de dplyr):

On peut refaire l'inverse avec la fonction unite_( ):

R Statistical Software 369/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi renommer les colonnes avec la fonction rename( ):

R Statistical Software 370/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
avec la fonction mutate( ) nous pouvons entre autres, changer le typage (as.numeric(),
as.string(), factor()) d'une colonne:

ou crer de nouvelles variables en mlangeant plusieurs notions vues jusqu' maintenant:

R Statistical Software 371/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

En associant des fonctions on peut aussi faire par exemple:

ou encore plus subtil avec un if_else( ):

R Statistical Software 372/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou si nous avons beaucoup de critres nous pouvons faire usage de case_when( )8:

8
La ncessit de mettre le $ est un bug qui devrait tre corrig un jour futur.

R Statistical Software 373/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore plus subtil avec le fichier suivant:

Faire une moyenne mobile d'ordre 5 avec le package zoo et sa fonction rollmean( ):

R Statistical Software 374/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et il existe d'autres fonctions:

R Statistical Software 375/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui montre que nous sommes trs proches de ce que font les PowerPivot dans
Microsoft Excel:

Avec la fonction transmute( ) on peut garder que la nouvelle variable comme le montre
l'exemple suivante qui la compare avec mutate( ):

R Statistical Software 376/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour choisir uniquement certaines lignes, nous utiliserons la fonction select( ) avec les
oprateurs (<,>,==,<=,>=, !=, %in%, is.na, !is.na, &, |, xor, any, all):

Il est aussi possible de faire des slections automatiques de colonnes du type:

R Statistical Software 377/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bref voici que l'on a venant de la CheatSheet de dplyr:

R Statistical Software 378/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant si le lecteur affiche toutes les donnes avec la fonction print.data.frame( ) il
pourra voir qu'il y a par endroit des valeurs NA:

Si nous souhaitons les liminer quelles que soient les colonnes:

R Statistical Software 379/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou pour une seule colonne:

Et si nous voulons remplacer par une certaine valeur dans une certaine colonne seule, nous
avons:

Pour supprimer les doublons avec la fonction distinct( ):

R Statistical Software 380/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou pour des colonnes choix:

Enfin, nous pouvons avec la fonction summarise( ) faire des statistiques de base:

R Statistical Software 381/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et pour appliquer une fonction identique sur tous les vecteurs on utiliser summarise_each( ):

A summarise( ) nous pouvons passer des fonctions particulires:

R Statistical Software 382/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour ceux qui font des sondages ou du bootstrapping signalons encore la fonction
sample_n( ) pour faire un chantillonage sans remise:

et pour le tirage avec remise (bootstrap):

R Statistical Software 383/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons maintenant un exemple que ceux qui font des tableaux croiss dynamiques dans
Microsoft Excel connaissent bien:

R Statistical Software 384/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant voyons un sujet considr parfois comme le plus important: crer des liaisons
entre donnes (dans la mme veine que ce que fait Microsoft Access, PowerPivot,
FileMarker, 4D, SQL Server, Oracle, etc.).

Donc nous considrons le mme jeu de donnes qu'avant, mais maintenant nous rajoutons:

et nous utilisons la fonction left_join( ):

R Statistical Software 385/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut bien "videmment" faire un inner_join( )9:

et bien videmment un full_join( )10:

9
Ne rapporte que les lignes pour lesquels il y a des lments des deux cts!
10
Rapport toutes les lignes de deux tables mme celles qui n'ont pas forcment de correspondance dans l'une ou
dans l'autre!

R Statistical Software 386/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon pour ajouter des donnes d'un data frame un autre data frame comme les deux ci-
dessous la suite l'un de l'autre:

R Statistical Software 387/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

nous utiliserons la fonction bind_rows( ):

R Statistical Software 388/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et maintenant considrons les deux fichiers suivants:

et nous utilisons la fonction bind_cols( ) pour mettre les donnes les unes la suite des
autres:

Pour ce qui est des fonctions suivantes de dplyr:

union() (fusion de deux jeus de donnes)

intersect( ) (lments communs de deux jeux de donnes)

R Statistical Software 389/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

setdiff( ) (lments diffrents de deux jeux de donnes)

nous ne ferons pas d'exemple ni ne les utiliseront ici car nous les considrerons comme encore
non entirement fonctionnels et satisfaisant utiliser par rapport d'autres mthodes!

Package data.table
Voyons maintenant quelques classiques de Data.Table avec chaque fois son quivalent en
Dplyr (cela ne fait pas de mal de rpter ce dernier).

D'abord, nous chargeons les lments ncessaires:

Voici d'abord comment nous transforms un dataframe en objet dplyr (rappel):

R Statistical Software 390/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et enfin en objet data.table avec la fonction data.table( ):

R Statistical Software 391/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons maintenant les diffrentes faons d'avoir un rsum d'un object dplyr (rappel):

R Statistical Software 392/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et avec data.table (la fonction glimpse( ) tant spcifique dplyr!):

R Statistical Software 393/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou extraire quelques lignes avec dplyr (rappel):

R Statistical Software 394/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et avec data.table:

On slectionne ou retire seulement quelques colonnes d'abord avec dplyr (pour rappel):

R Statistical Software 395/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ensuite avec data.table:

Avant de poursuivre on rinitialise l'objet data.table:

R Statistical Software 396/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous poursuivons maintenant avec un tri simple avec quelques colonnes seulement avec dplyr
(pour rappel):

et son quivalent avec data.table:

R Statistical Software 397/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant un rappel de groupement en dplyr:

et son quivalent en data.table:

R Statistical Software 398/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour renommer une colonne avec dplyr (rappel):

et son quivalent en data.table:

R Statistical Software 399/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avant de poursuivre on rinitialise l'objet data.table:

Changer le typage d'une colonne avec dplyr (rappel):

et son quivalent avec data.table:

R Statistical Software 400/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant une cration d'une colonne avec une statistique et un lag avec dplyr (rappel):

et le mme avec data.table:

R Statistical Software 401/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Jointure gauche entre deux tables avec une seule cl de liaison avec dply (rappel):

La mme chose avec data.table:

R Statistical Software 402/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On exclut les lignes avec des valeurs NULL peut importe la colonne avec dplyr (rappel):

La mme chose avec data.table:

R Statistical Software 403/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On conserve que les lignes qui sont non-vides mais par rapport une colonne prcise avec
dlplyr (rappel):

La mme chose avec data.table donnne:

R Statistical Software 404/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Uniquement les lignes avec la colonne NDeCommande ayant des Null ET avec la Quantite
suprieure zro et on remplace les valeurs Null de la colonne NDeCommande par des 0 avec
dplyr (rappel):

La mme chose avec data.table:

R Statistical Software 405/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour fusionner deux jeux de donnes en dplyr (rappel):

Et l'quivalent en data.table:

R Statistical Software 406/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

11. Crer des diagrammes gnriques divers


Nous allons dans ce chapitre voir seulement des diagrammes de ce qui est typiquement
demand pendant les tudes obligatoires (les graphiques allant au-del seront vus dans les
chapitres thmatiques de chaque domaine de spcialisation).

Je ne suis personnellement pas un fan de l'utilisation des graphiques en statistiques (on passe
trop de temps bricoler le design plutt que de rflchir la robustesse du modle ou de
chercher pour de meilleurs modles existants). Donc si jamais j'amliorerai les graphiques
donnes ci-dessous en fonction des questions des participants et tudiants qui suivent mes
cours.

Au niveau esthtique vous verrez que sommes trs loin de ce qu'un tableur comme
Microsoft Excel 2007 ou ultrieur peut faire (ce qui matrisent totalement Microsoft Excel me
comprendront). De plus le comportement de R est simplement catastrophique lorsque
l'utilisateur redimensionne la fentre contenant un graphique. Cependant, techniquement, R
est plus puissant et plus flexible (dommage que Microsoft n'ajoute pas de nouveaux
graphiques Excel depuis ces 20 dernires annes...).

Pour commencer faire des graphiques divers lmentaires nous allons essayer d'utiliser
toujours la mme source de donnes, savoir:

Dans le but d'effectuer quelques graphiques classiques de ce tableau mais que Microsoft
Excelpar exemple ne saurait pas effectuer sans un traitement pralable ou sans passer par un
tableau crois dynamique.

R Statistical Software 407/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Si jamais comme couleurs dans les graphiques sont souvent utilises, voici une image qui
peut tre utile qui donne seulement un chantillon des premires lettres de l'alphabet:

R Statistical Software 408/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 77.: Diagrammes textes


R 3.2.1

Les diagrammes de types textes sont les diagrammes les plus simples et les plus brutes que
l'on puisse probablement concevoir. Pour voir de quoi il s'agit nous allons travailler avec le
jeu suivant:

D'abord, nous allons structurer cela sous forme d'arbre en construisant une colonne
concatne:

R Statistical Software 409/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 410/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite avec la fonction as.Node( ) du package data.tree nous construisons un arbre:

Et nous allons limiter la taille de l'arbre en prenant une distance albhaptique:

R Statistical Software 411/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons directement accder un des nuds:

On peut jouer ajouter des statistiques (on reconnatra une structure assez ressemblante aux
tableaux croiss dynamiques dans les tableurs):

R Statistical Software 412/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi aggrger des sous-totaux et trier les rsultats:

R Statistical Software 413/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 414/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 78.: Contrler la fentre graphique


R 3.2.1

Nous pouvons ouvrir aussi trs rapidement une fentre toute vide avec la commande
plot.new( ) (cette commande efface le graphique actif en cours!!!)

Mais il existe une autre mthode beaucoup plus intressant et que nous retrouvons dans des
cas pratiques relativement complexes qui consistent pouvoir ouvrir autant de fentre
graphique que l'on dsire avec un nom et une taille au choix:

Ce qui donnera:

R Statistical Software 415/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et on ferme la fentre active:

R Statistical Software 416/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Voici un autre exemple:

et:

R Statistical Software 417/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Si nous faisons un simple plot vide avec la fonction plot( ):

Au passage, le paramtre pour mettre les nombres de l'axe des ordonnes l'horizontale est
las:

et si nous voulons la zone de traage mais sans les axes (remarquez au passage la mthode
pour faire un retour la ligne dans une lgende quelconque en utilisant le \n):

R Statistical Software 418/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec des axes dans un couleur plus claire que les axes:

R Statistical Software 419/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Au niveau de la grille, nous avons avec la fonction grid( ):

ou:

R Statistical Software 420/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 79.: Arbre phylogntique (phylogrammes,


cladogrammes)
R 3.2.1

Nous allons construire un arbre phylogntique non radial bas sur une structure nwk
(structure cre par le non moins fameux mathmaticien Arthur Cayley pour rappel).

Le fichier que nous allons utiliser est simplement avec une unit de distance euclidienne qui
sera prise pour chaque nud et chaque lment depuis l'extrmit:

D'abord nous installons les packages ncessaires car ggplot appartient bioconductor et
ncessite ggplot2:

Aprs nous y allons avec un exemple:

R Statistical Software 421/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne un phylogramme:

R Statistical Software 422/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
En rajoutant branch.length='none' nous obtenons un cladogramme:

Ce qui donne:

On peut faire un cladogramme circulaire aussi:

R Statistical Software 423/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

ou une version plus sympa:

R Statistical Software 424/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

qui donne (c'est joli!):

R Statistical Software 425/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 426/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 80.: Diagrammes vectoriels (dessiner des flches et


mettre du texte)
R 3.0.2

Bon l il n'y a pas grand chose dire. C'est usage principalement scolaire mais sinon sachez
que c'est trs utile de savoir dessiner des flches et de mettre des textes sur de plots quels
qu'ils soient avec la commande arrows( ):

Ou nous pouvons jouer avec diffrents styles de flches:

R Statistical Software 427/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons un cas trs souvent utilis en probabilit des flches (mais simplifi dans le cas
prsent):

R Statistical Software 428/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Signalons qu'en installant le package plotrix il est possible tout hasard... de faire des textes
circulaires avec la commande arctext( ):

R Statistical Software 429/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Concernant les textes voici galement un cas trs important en ingnirie et physique et qui est
loin d'tre trivial:

ce qui donne:

R Statistical Software 430/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 431/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 81.: Mettre une image de fond


R 3.0.2

En entreprise on cherchera avoir de multiples graphes dans une mme fentre de R (voir
plus loin) avec des gauges (speedomtres/tachymtres) pour montrer la performance d'un
processus, d'un dpartement ou d'une chane de production. Une ide simple est d'utiliser alors
une image de fond comme-ci aprs en utilisant la commande rasterImage( ) du package png.

Par exemple sur la base de l'image suivante:

Nous pouvons crer dans R:

R Statistical Software 432/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

videmment l'exemple a un potentiel d'amlioration considrable...

Pour un exemple plus concret le lecteur pourra se rendre sur:

http://gastonsanchez.com/blog/how-to/2013/01/10/Gauge-Chart-in-R.html

o il pourra obtenir le rsultat visible la page suivante:

R Statistical Software 433/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 434/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 82.: Dessiner des rectangles


R 3.0.2

Lors de la cration de scripts vous crerez probablement vos propres graphiques. Ds lors,
dans certains cas il est bien utile de savoir dessiner des rectangles.

Voici un exemple pris de l'aide de R:

R Statistical Software 435/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 83.: Dessiner des cercles


R 3.0.2

Il faudra faire appel au package plotrix pour dessiner des cercles ou des disques avec la
commande draw.circle( ):

Libre nous ensuite de mlanger rectangles/carrs et cercles sur de mmes diagrammes:

R Statistical Software 436/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 437/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diagrammes de Venn
En bioinformatique nous avons rgulirement des vecteurs dont les composantes sont des
squencages. L'ide est de voir par exemple entre trois bactries quels sont les dnominateurs
communs au niveau des gnes. Nous pouvons alors typiquement reprsenter cela avec un
diagramme de Venn. Comme il s'agit le plus souvent d'une reprsentation de cercles, j'ai jug
bon de le mettre ici. Petit couac cependant... il doit y avoir une mthode plus simple que ce
qui est propos ci-dessous... mais chercher (n'hsitez pas me dire si vous avez une astuce).

Nous allons devoir d'abord utiliser le package Bioconductor qui n'est pas dans CRAN et une
sous libraire qui se nomme limma:

R Statistical Software 438/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous faisons quelques manipulations de nos ensembles qui servent d'exemples
(exemple trs scolaire dans le cas prsent):

R Statistical Software 439/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et ensuite il nous reste plus qu' utiliser les commandes vennDiagram( ) et vennCounts( ) de
la librairie limma pour arriver au resultat attendu:

Laborieux...

Indiquons aussi le package venn qui avec la commande venn( ) permet d'obtenir des
diagrammes de Venn plus que satisfaisant esthtiquemetn parlant:

R Statistical Software 440/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 441/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 442/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 84.: Dessiner des ellipses


R 3.0.2

videmment... Nous ne pouvons pas ne pas montrer comme dessiner des ellipses (pensez ne
serait qu' cause des fonctions bivaries Normales ou des copulas gaussiens).

Pour cela, nous allons aussi devoir utiliser la package plotrix avec la commande
draw.ellipse( ):

R Statistical Software 443/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 85.: Dessiner des polygones


R 3.0.2

Savoir dessiner des polygones est extrmement important dans R car dans de nombreux cas
pratiques nous remplissons des surfaces se trouvant en-dessous de la courbe d'une fonction
(particulirement dans les domaines des probabilits ou des statistiques gographiques o les
territoires sont dfinis par des polygones).

Voyons un exemple simple et trivial pour commencer:

Donc partir de l on devine assez aisment la suite (ou voir les exemples dans l'aide de la
commande polygon( )). Par exemple, si nous partons de:

R Statistical Software 444/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et avec les polygones en plus:

R Statistical Software 445/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Mais ce n'est videmment pas le rsultant que nous voulons! Il faut rajouter artificiellement
des points au dbut et la fin tel que:

Ou dans un autre style super important dans la pratique:

R Statistical Software 446/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Aprs, et toujours sur la mme ide, on peut superposer plusieurs tracs de lignes remplies les
unes par dessus les autres.

Ou toujours dans les cas simples (nous reviendrons sur les distributions de probabilits plus
loin):

R Statistical Software 447/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore pour reprsenter l'volution d'un intervalle de confiance (dans le cas prsent celui
d'une proportion):

R Statistical Software 448/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou en tant plus exacte puisque ci-dessus nous avons utilis l'approximation par une loi
Normale:

R Statistical Software 449/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 450/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 86.: Diagrammes "stem-and-leaf"


R 3.4.1

Nous partons du jeu de donnes suivant et utilison la fonction native stem( ):

pour obtenir:

R Statistical Software 451/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 87.: Diagrammes "strips"


R 3.0.2

Une famille de diagramme parfois by sympathique et facilement lisible par le plus grand
nombre en utilisant la commande stripchart( ):

On peut ajouter un bruit pour voir la grossirement la densit avec l'attribut jitter du
paramtre method:

R Statistical Software 452/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 88.: Diagrammes X-Y et lignes


R 3.0.2

Commenons donc par le plus simple des graphiques points plot( ) imaginable avec une
petite couleur de fond diffrente du blanc (comme cela on apprend deux petites choses d'un
coup):

Avec la commande polygon( ) associe locator( ) nous pouvons laisser l'utilisateur cliquer
de faon interactive dans le graphique pour crer un polygone:

R Statistical Software 453/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore avec la commande native locator( ) seule en cliquant ensuite diffrents endroits
du graphe:

R Statistical Software 454/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et ensuite si nous arrtons le "clicage" par un clic droit:

Nous obtenons alors les coordonnes des points sur lesquels nous avons cliqus:

Ou encore dans les classiques scolaires de la petite cole (attention! pour ploter toute fonction
algbrique dans le plan reportez vous l'exemple de la page 197):

R Statistical Software 455/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore un graphique de type "stem":

R Statistical Software 456/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et avec avec la fonction native matplot( ):

Revenons des points:

R Statistical Software 457/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut s'amuser les relier par des droites (puisque l'index correspond dans le cas prsent
aussi l'ordre des commandes) en utilisant une technique combinant plot( ) et lines( ):

R Statistical Software 458/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous avons aussi (on ajoute un titre, des points diffrentes pour chaque type d'articles, des
couleurs en fonction du numro de client et des lgendes) en utilisant la commande
vertical.image.legend( ) du package aqfig( ):

Ce qui donne:

Ou pour revenir un cas plus simple en ajoutant un ligne de rgression linaire avec la
commande abline( ):

R Statistical Software 459/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

R Statistical Software 460/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou considrons encore l'exemple suivant prsentant le paramtre lty:

qui donne:

et ainsi de suite (il y a plus d'une quarantaine de types de traits).

R Statistical Software 461/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Un cas classique pour montrer la convergence des estimateurs (loi des grands nombres) lors
de simulations de Monte-Carlo et une application intressant de abline( ) pour crer de
simples lignes:

ou pour jouer avec la convergence l'aide du package ConvergenceConcepts et les


commandes generate( ) et law.plot2d( ):

R Statistical Software 462/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou toujours avec ce mme package voir l'volution de la convergence en 3D mais avec la


commande law.plot3d( ):

R Statistical Software 463/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande plot( ), nous pouvons aussi avoir une reprsentation sympathique dont
donnes Iris que nous avons utilis dans le cours thorique pour dcortiquer les
dveloppements mathmatiques de l'analyse en composantes principales et en associant en
plus des couleurs chaque catgorie!:

R Statistical Software 464/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et dans une version nettement plus complique (trs utile en finance):

R Statistical Software 465/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 466/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou, toujours avec les couleurs et en jouant avec notre source Ventes habituelle:

ou toujours en s'amusant avec les couleurs:

Ce qui donne:

R Statistical Software 467/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 468/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajouter des marques mineures aux axes


Il n'existe pas de commande par dfaut dans la commande plot( ) pour ajouter des marques
mineures. Il faudra installer (du moins dans le cas le plus simple), le package Hmisc.

Voici une dmonstration utilisant donc la commande minor.tick( ):

R Statistical Software 469/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Positions des axes/Inversion des axes et Dates sur les Axes


Pour dplacer les axes c'est relativement simple:

R Statistical Software 470/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant voyons plus grand

Ce qui donne:

R Statistical Software 471/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajouter des lgendes aux points


Nous pouvons galement ajouter des lgendes chaque point. Par exemple:

Donnera:

R Statistical Software 472/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Zoomer sur un sous-ensemble


En installant le package plotrix (que nous retrouverons de nombreuses fois) nous pouvons
dans certains cas faire une manipulation utile.

Ce qui donne:

R Statistical Software 473/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 474/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Points avec courbes d'iso-densit


Pour cet exemple, il vous faudra avoir tlcharg d'abord le package ggplot2. Une fois ceci
fait, nous pouvons utiliser la commande ggplot( ) avec geom_density2d( ) pour obtenir:

ou bien en version amliore:

R Statistical Software 475/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 476/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons faire mieux avec les packages MASS et RColorBrewer en associant les
noyaux de densit locale avec la commande kde2d( ) et la commande contours( ) utilisant le
dgrad de couleurs du package RColorBrewer:

R Statistical Software 477/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Points avec variation de couleurs et zone gographique


Nous allons ici utiliser la fonction spplot( ) du package sp.

D'abord nous chargeons et prparons les donnes brutes:

Ce qui donne (voir page suivante):

R Statistical Software 478/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 479/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Points avec histogrammes et lissage


En utilisant la package Hmisc et la commande histSpike( ) nous pouvons associer dans un
plot de points des histogrammes avec des fonctions de densit au plus proche sur chacun des
axes de projection:

Ce qui donne:

R Statistical Software 480/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 481/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajout de barres d'erreurs


Il manque un grand classique cependant que sont les barres d'erreurs (elles sont disponibles
dans les tableurs par dfaut) et il nous les faut absolument dans un logiciel comme R. Pour
cela, il va nous falloir associer un script notre source de donnes.

Libre vous ensuite de relier les points par des lignes comme nous l'avons dj vu plus haut.

R Statistical Software 482/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Graphiques pentes (interactions)


C'est actuellement assez laborieux faire comme graphique mais voici un exemple:

Ce qui donne:

R Statistical Software 483/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 484/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 89.: Diagrammes points catgoriels (diagramme de


Cleveland)
R 3.0.2

Nous allons voir ce type de diagramme juste histoire de le faire car dans la pratique il est trs
peu utilis. Pour cela, nous allons utiliser les donnes utilises lors de notre tude thorique de
l'analyse factorielles (mmes donnes que celles utilises dans le support de cours Minitab),
soit:

et nous obtenons en utilisant la commande dotchart( ):

R Statistical Software 485/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 486/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 90.: Diagrammes points (dot plots)


R 3.0.2

Bon ici il s'agit simplement de voir que l'on peut obtenir le mme type de diagrammes
points que celui que nous avions fait dans le cours Minitab (mtb) en utilisant le package
plotrix et la commande dotplot.mtb( ):

Donc nous voyons que comme dans Minitab... l'esthtique n'est pas des meilleures...

Sinon un autre grand classique dans les dot plot en se basant sur le fichier suivant:

R Statistical Software 487/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

avec la fonction dotplot( ) du package lattice:

R Statistical Software 488/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 489/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 91.: Diagramme tournesols (analyses de densit 2D)


R 3.0.2

L'ide du diagramme tournesol est simple: chaque fois qu'un point se superpose un autre
de coordonnes identiques, un ptale sous forme de trait est rajout et le centre de ses
"ptales" successives sont les points superposs eux-mmes.

Ou en bruitant les donnes avec la commande jitter( ):

R Statistical Software 490/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou en utilisant un estimateur local de densit associant la commande image( ) et la


commande kde2d( ):

R Statistical Software 491/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore:

R Statistical Software 492/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et en associant avec la commande contour( ):

Ou nous pouvons passer une vue 3D:

R Statistical Software 493/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

videmment comme toujours avec tout diagramme... l'intprtation peut tre dlicate (raison
pour laquelle je me rabats toujours si possible sur des indicateurs empiriques et accepts par
la communaut scientifiques comme tant robustes).

R Statistical Software 494/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 92.: Co-diagramme


R 3.0.2

La commande coplot( ) gnre en quelque sorte des projections de plot 3 dimensions sur de
multiples plans de 2 dimensions.

Par exemple, supposons que nous souhaitons comparer les factures payes et non payes en
fonction des articles et de la quantit commande.

Nous avons alors:

Nous pouvons donc conclure que les factures non payes ne sont pas distinctes pour un article
donn ou une quantit donne. Les bons ou mauvais payeurs se comportent donc vraiment de
manire alatoire et non systmatique.

Vous pouvez jouer avec ce graphique en remplaant les factures payes par une variable
numrique ainsi que les noms des articles. C'est trs efficace mais la lecture peut vite devenir
complique.

R Statistical Software 495/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Par exemple en s'amusant avec un jeu de donnes intgr R, nous obtenons uniquement avec
des valeurs numriques:

R Statistical Software 496/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 93.: Symboles disponibles pour les graphiques


points
R 3.0.2

Voici la liste des symboles disponibles pour les graphiques points prsentant le type de
symbole pch et leur taille avec cex:

ce qui donne:

R Statistical Software 497/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 498/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 94.: Diagramme d'associations


R 3.0.2

Les diagrammes d'associations sont souvent utiliss pour les tables de contingence.

Voici un exemple:

Il faut lire ce graphique dans l'optique d'un tableau de contingence avec la rgle du "toute
chose gale par ailleurs" qui nous sera donn par:

R Statistical Software 499/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ainsi, toute chose tant gale par ailleurs, les AST Intel 150 non pays sont un peu en-
dessous de la valeur laquelle on aurait pu s'attendre si toutes les choses avaient t gales
par ailleurs, les AST Intel 200 trs en-dessous, les Compaq trs au-dessus et les IBM un tout
petit peu au-dessus.

R Statistical Software 500/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 95.: Diagramme mosaiques


R 3.1.1 & 3.2.1

Considrons le fichier suivant de traitement contre l'Ulcre:

Nous souhaiterions afficher ces rsultats sous la forme d'un mosaique de barre. Pour cela,
nous utilisons d'abord la commande xtabs( ) pour faire une synthse simple et ensuite les
fonctions dotchart( ) et mosaicplot( ) pour les graphiques qui nous intressent (c'est surtout
ce dernier qui est l'lment d'intrt!):

Nous obtenons alors (voir page suivante):

R Statistical Software 501/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Toujours dans les diagrammes mosaiques considrons le jeu de donnes suivant:

R Statistical Software 502/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Pour faire un diagramme mosaque nous utiliser le commande du package treemap:

R Statistical Software 503/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 96.: Diagramme barres (frquences et autres)


R 3.0.2

Nous allons ici construire un diagramme de type carte barre reprsentant le nombre
d'occurrence des secteurs dans tout le tableau. Pour ceci, nous crivons dans un premier
temps:

et ensuite, nous utilisons la commande barplot( ) avec quelques raffinements et la commande


text( ) pour ajouter les valeurs au-dessus des barres de l'histogramme:

R Statistical Software 504/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou une petite variante toujours avec barplot( ):

R Statistical Software 505/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais les barres d'erreurs manquent!!! Et comme elles ne sont pas natives dans R, voici un
petit script pour palier ce problme (script tout fait amliorable avec un choix des valeurs
de barres d'erreurs empirique pour simplifier l'exemple):

Ce qui donne:

R Statistical Software 506/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons galement faire comme dans les tableurs des sries (pas facile deviner)
toujours avec barplot( ):

R Statistical Software 507/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore toujours avec barplot( ):

R Statistical Software 508/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ce qui donne:

R Statistical Software 509/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou une version horizontale toujours avec barplot( ):

Nous pouvons mettre videmment cela en normalis l'unit:

R Statistical Software 510/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne (mais sans l'axe en pourcentages):

R Statistical Software 511/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Avec les packages scales, reshape2 et ggplot2 et en associant de faon trs subtile les
commandes prop.table( ), as.data.frame.matrix( ), melt( ) et ggplot( ) nous pouvons faire
bien mieux quand il s'agit d'obtenir des diagrammes barres groups et normaliss:

Ce qui donne:

R Statistical Software 512/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou encore avec le package plotrix et en utilisant la commande barp( ):

R Statistical Software 513/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et considrons l'exercice de style suivant avec le package ggplot2 et la commande
geom_bar( ) qui n'est pas dnue d'intrt:

Le lecteur aura remarqu que trier le data frame par jour de la semaine n'influence pas l'ordre
des jours dans le plot (sic!).

R Statistical Software 514/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons aussi avec la commande hist( ) que nous retrouverons plus loin obtenir un
diagramme en frquences avec un nombre d'intervalles choisi dont nous colorions certains
d'entre eux:

Remarquez que nous pouvons obtenir les valeurs dtailles de l'histogramme qui sont implicitement
contenues dans la commande hist( ):

R Statistical Software 515/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons afficher aussi les quantiles en tant que lignes verticales en ajoutant le script suivant:

R Statistical Software 516/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Au niveau des graphes de types barres en "cascade" ("waterfall chart" en anglais) je n'ai rien trouv de
mieux ce jour que le package waterfall qui propose une fonction waterfallchart( ) ayant cependant
deux limitations majeures:

1) Elle ne diffrencie pas les variations positives et ngatives par des couleurs

2) Le graphique ne conserve par l'ordre d'origine des donnes dans les vecteurs il faut donc tricher en
prcdent les noms des lgendes par des numros pour avoir l'ordre dsir

3) La fonction ajoute systmatique une ligne Total qu'il n'est pas possible de supprimer ni de
renommer

En reprenant le mme exemple que dans la formation Microsoft Excel cela donne:

R Statistical Software 517/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 97.: Diagrammes bullets


R 3.4.1

Les diagrammes bullets ("cres" par Stephen Few) sont des diagrammes gauge
(speedomtre/tachymtre) mais n'ayant pas subi de transformation polaires et dont la
spcification complte est disponible ici:

http://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf

Il n'existe pas ce jour de package permettant des les crer mais voici un script R disponible
sur Internet sous licence GPL reproduit ici tel quel11:
#----------------------------------------#
# Bullet Graph
#
# Bullet graphs have been devised by Stephen Few
# A complete specification of bullet graphs can be retrieved at:
# http://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf
#
# Author: Marco Torchiano
# email: marco.torchiano@polito.it
# twitter: @mtorchiano
#
# Version: 1.1 (20 December 2014)
#
# Copyright (c) 2014 by Marco Torchiano <marco.torchiano@polito.it>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#----------------------------------------#
#
# usage:
# x: the value of the indicator to be plotted as the main bar
# ref: the reference value to be plotted as a thick line
# limits: the boundaries of the limits to be plotted as backgound
# a four element vector providing: base, 1st limit, 2nd limit,
upper limit.
# The base and limit are used for defining the scale
# width: the defaul width of the main indicator as a portion of the graph
width
# col: the color of the indicato bar
# palette: the colors for the background limits

11
http://softeng.polito.it/software/R/BulletGraph.R

R Statistical Software 518/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
#

bulletgraph.palette <- function(n,colored){


if(colored){ # this colors are up to my personal taste ;-)
if(n==2) cols = c("firebrick","dodgerblue")
if(n==3) cols = c("firebrick","orange","olivedrab1")
if(n==4) cols =
c("firebrick","orange","powderblue","olivedrab1")
if(n==5) cols =
c("firebrick","orange","powderblue","plum","olivedrab1")
if(n>5) cols = hsv((n:1 + n*0.3)/(n*1.3),.9,.8+(1:n/(n*5)))
}else{ # these are the gray levels recommended by Stephen Few
if(n==2) cols = hsv(0,0,c(.65,.9))
if(n==3) cols = hsv(0,0,c(.6,.75,.9))
if(n==4) cols = hsv(0,0,c(.5,.65,.8,.9))
if(n==5) cols = hsv(0,0,c(.5,.65,.8,.9,.97))
if(n>5) cols = hsv(1,0,seq(.4,.97,length.out=n))
}
return(cols)
}

bulletgraph <- function(x,ref,limits, name=NULL, subname="", width=0.4,


col=NULL,
palette=NULL,colored=T){
if(length(limits)<3){
stop("limits must be a vector with at least three elements")
}
if(length(x)!=1){
stop(paste("x must be a scalar",name))
}
limits=sort(limits)
if(x<limits[1] | x>limits[4]){
stop("x must be within outer limits")
}
if(ref<limits[1] | ref>limits[4]){
stop("x must be within outer limits")
}
if(width<.01 | width>1){
stop("width must be in the range [0 .. 1]")
}
if(is.null(name)) name = sys.call()[[2]]
if(is.null(palette)){
palette = bulletgraph.palette(length(limits)-1,colored)
}
if(is.null(col)){
if(colored) col="steelblue3"
else col = "black"
}
n = length(limits)
ranges = matrix(tail(limits,-1)-c(0,head(tail(limits,-1),n-2)),n-1)
barplot(ranges,col=palette,border=NA,horiz=T,
xlim=c(min(limits),max(limits)),xpd=F)
segments(ref,.3,ref,1.1,lwd=3)
barplot(x[1],width= width,names.arg=name,cex.names=1,
space=((1-width)/2+0.2)/width,
add=T,horiz=T,border=NA,col=col,las=1,xpd=F)
mtext(subname,side=2,line=1,at=0.4,cex=0.6,adj=1,las=2)
if(limits[1]!=0){
warning("Bars should be drawn on a zero-based scale: using a
jagged base to remark such non conformance.")
jit = (limits[4] - limits[1])/100

R Statistical Software 519/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
x = c(rep(c(limits[1],limits[1]+jit),6),0)
y = c(2:13/10,1.2)
polygon(x,y,col="white",border="white")
}
}

Avec l'exemple correspondant excuter:


par(mfrow=c(3,1))
par(mar=c(2,9,.1,1))
# reproducing Stephen Few example in the specification document
bulletgraph(x=270,ref=260,limits=c(0,200,250,300),
name= "Revenue 2005 YTD",subname="(U.S. $ in thousands)",colored=F)
# colored version of the above
bulletgraph(x=270,ref=260,limits=c(0,200,250,300),
name= "Revenue 2005 YTD",subname="(U.S. $ in thousands)")

# an example with non-zero basis (no recommended)


x = 0.75
ref=0.83
limits=c(0.4,.6,.9,1)
bulletgraph(x,ref,limits,width=0.6)

Ce qui donne:

R Statistical Software 520/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 98.: Diagrammes mosaque densit pour tables


R 3.2.1

Nous allons voir ic une reprsentation utilise beaucoup dans le domaine du management
(risques) et dans le domaine prdictif du data mining et utilisant le package ggplot et
particulirement la commande scale_fill_gradient( ).

Nous partons de notre jeu de donnes habituel mais rsum l'aide de la fonction
group_by( ) du package dplyr:

Aprs il suffit de faire le graphe:

R Statistical Software 521/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 522/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 99.: Histogramme (densit) avec des dates


R 3.0.2

Faisons maintenant un histogramme avec les dates (c'est plus difficile qu'avec de simples
nombres) en utilisant le fichier VentesCleanWithTime.csv qui contient pour rappel:

Alors pour ce faire:

R Statistical Software 523/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 524/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 100.: Histogrammes superposs (frquences)


R 3.0.2

Toujours dans les grands classiques, voyons comment faire de multiples histogrammes de
distributions avec la commande hist( ) et de plus superposs avec transparence:

Nous pouvons aussi nous amuser combiner un plot avec des histogrammes. Considrons le
jeu de donnes suivant:

R Statistical Software 525/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
En saisissant la srie de commandes suivantes, nous obtenons:

ce qui donne (intressant comparer avec MATLAB...!):

ou nous pouvons avoir une variante:

R Statistical Software 526/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ce qui donne:

ou encore une variante utilisant l'association de rug( ) et jitter( ):

R Statistical Software 527/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 528/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 101.: Diagrammes aires


R 3.0.2

Un grand classique du monde des tableurs qui se passe de commentaires part qu' ce jour le
package ggplot2 avec la commande geom_area( ) ne semblent pas grer les variables
catgorielles sur l'axe des abscisses (d'o le numro des jours de la semaine au lieu de leur
nom):

R Statistical Software 529/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou dans sa version normalise en utilisant le package plyr avec la commande ddply( ):

Ce qui donne:

R Statistical Software 530/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Voyons aussi comment faire des "diagrammes horizons". Pour comprendre de quoi il s'agit,
considrez d'abord le simple graphique suivant:

Avec la fonction horizonplot( ) du package extraLattice le graphique devient:

R Statistical Software 531/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc nous voyons que l'ide est est au fait de prendre:

1. La valeur absolue

2. Les points positifs sont bleus, les ngatifs sont rouges

3. Les points en-dessous/au-dessus de change ligne grise traitill est reporte dans une
couleur diffrente

Donc voici un exemple plus complet qui montre que la lecture de ce type de graphique est
loin d'tre ais:

R Statistical Software 532/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 533/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 102.: Hexabins


R 3.4.1

Les diagrammes haxabins sont des des diagrammes qui regrouppent une densit de points
sous la forme d'hexagones dont la couleur change avec la frquence des points qui s'y
trouvent. C'est une technique comme pour analyser des nuages de points lorsque le nombre de
points est trop lev.

Voyons d'abord un exemple avec GGPlot2 sans hexabin:

Donc au vu de la densit de points ce n'est pas l'idal pour un humain

Maintenant avec hexabin de ggplot2:

R Statistical Software 534/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous identifions alors beaucoup mieux en tant qu'humains o se trouve la plus grande
concentration de points.

Ou sans GGPlot2 avec le package hexabin et la fonction hexbin( ):

R Statistical Software 535/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 536/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 103.: Histogramme (frquences) 3D


R 3.0.2

Un cas classique afin de voir si nous pouvons faire en gros la mme chose que certains
tableurs. Encore une fois c'est une excellente dmonstration comme quoi dans R il faut
appliquer des recettes de cuisine car la syntaxe est impossible deviner intuitivement sans se
rfrer longtemps la documentation.

D'abord nous crons une table de contingence:

Nous installons ensuite deux packages qui sont lattice et latticeExtra (fallait deviner...):

R Statistical Software 537/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ensuite nous y allons joyeusement:

R Statistical Software 538/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou dans un tout autre style avec le package plot3d et la fonction hist3d( ):

R Statistical Software 539/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

R Statistical Software 540/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 104.: Courbe de Lorenz et indice de Gini


R 3.0.2

Le but ici va tre de vrifier que nous retrouvons la mme valeur de l'indice de Gini et la
mme courbe de Lorenz que celle calcule la main dans le cours thorique de Techniques de
Gestion.

Nous partons alors des mmes donnes:

Nous installons et chargeons le package ineq:

R Statistical Software 541/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et nous chargeons le fichier de donnes:

et ensuite nous utilisons le package ineq avec les commandes Gini( ) et Lc( ):

R Statistical Software 542/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 105.: Combinaisons de graphiques (subplots)


R 3.0.2

Avant de crer des graphiques multiples dans une mme fentre il faut comprendre la
structure de ces dernires.

Mais d'abord, comme les combinaisons de graphiques peuvent prendre de la place, il est bon
de savoir comment contrler la taille de la fentre de plot avant d'y mettre quelque chose:

Voici comment on peut s'entraner comprendre les choses en utilisant les commandes par( )
et layout.show( ):

R Statistical Software 543/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Que l'on peut dj s'amuser remplir par quelques plots vides:

R Statistical Software 544/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou toujours dans la mme ide:

R Statistical Software 545/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec une petite complication bien utile pour comprendre les choses:

R Statistical Software 546/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore en un peu plus compliqu:

R Statistical Software 547/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore en un peu plus compliqu:

R Statistical Software 548/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore (on laisse tomber les marges car tant qu'on y met pas des graphiques, nous ne
verrons pas la diffrence):

R Statistical Software 549/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dans ce qui suivra nous allons retrouver plusieurs fois des combinaisons de graphiques,
voyons un exemple simple:

ce qui donnera:

R Statistical Software 550/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 551/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 106.: Joy Plots


R 3.4.1

Il s'agit ici d'utiliser le package ggjoy et le paramtre geom_joy dans ggplot2 pour faire des
graphiques qui se passent de commentaires:

ce qui donne:

R Statistical Software 552/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou encore:

Ce qui donne:

R Statistical Software 553/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou encore:

Ce qui donne:

ou encore:

R Statistical Software 554/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 555/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 107.: Sparklines


R 3.0.2

Maintenant que nous savons faire des combinaisons graphiques (lattices), nous pouvons jouer
avec R pour faire des simili-sparklines (il existe un package pour qui se nomme sparkTable
mais malheureusement ce jour il ne peut qu'exporter le rsultat en un fichier *.html, *.tex ou
*.pdf et non pas l'afficher dans R mme).

Voici un exemple que nous laisserons au lecteur le soin de personnaliser ou amliorer (nous
mettons en entre un vecteur alatoire si l'utilisateur ne prcise rien):

Et si nous appelons la fonction 4 fois:

R Statistical Software 556/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 557/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 108.: Fonction de rpartition empirique (FRE)


R 3.0.2

Une analyse de la FRE n'a pas le problme de l'analyse par densit o se pose la question des
largeurs des intervalles. Il vaut donc mieux prendre l'habitude de lire les FRE plutt que les
FDP (fonctions de densit de probabilit).

Voici un exemple d'utilisation de la commande ecdf( ):

Nous pouvons cependant faire mieux (je ne suis pas encore arriv rsoudre le problme du
dcalage entre la box plot et la ECDF):

R Statistical Software 558/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 559/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou pour ceux qui prfrent avec la package ggplot:

Ce qui donnera:

R Statistical Software 560/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Il est possible aussi l'aide du package classInt et de la fonction classIntervals( ) d'avoir une
rsum numrique qui parfois est plus utile qu'un graphique:

ou en se basant sur les quantiles:

R Statistical Software 561/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 109.: Camemberts 2D et 3D


R 3.0.2

Commenons par un camembert tout simple en utilisant la commande pie( ):

cela donnera:

Ensuite, faisons un camembert un peu plus intressant. Rsumons d'abord nos donnes de
ventes par article:

R Statistical Software 562/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire mieux heureusement:

R Statistical Software 563/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Pour faire un camembert 3D, nous chargeons installons le package plotrix:

ce qui nous donnera avec la commande pie3D( ):

R Statistical Software 564/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 110.: Diagramme en anneaux


R 3.0.2

Pour faire un diagramme en anneaux la procdure est trs loin d'tre intuitive. Il faut dans un
premier temps avoir install le package ggplot2.

D'abord, nous allons prparer notre jeu des ventes en consquence pour faire un exemple
sympa:

Ensuite, nous crivons le code pour faire le graphe:

R Statistical Software 565/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne (pour l'esthtique par rapport Microsoft Excelon se passera de commentaires
l aussi...):

R Statistical Software 566/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Enfin voyons une autre mthode (merci Daname) ne ncessitant pas de package.
Considrons le fichier suivant:

et importons-le:

On restructure un peu:

R Statistical Software 567/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On choisit une des stratgies:

R Statistical Software 568/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et maintenant allons-y pour l'astuce simple consistant faire un fromage blanc sans bords
dans un fromage normal sans bords lui aussi:

Ce qui donne:

R Statistical Software 569/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon dans la famille des diagrammes en anneaux nous avons aussi les graphiqus en rayons
de soleil (Sunburst) avec le package sunburstR et sa fonction sunburst( ):

R Statistical Software 570/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 571/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 111.: Diagramme radar


R 3.0.2

Le diagramme radar va tre cr l'aide du package plotrix et de la commande


diamondplot( ). Il n'est pas vident de prparer la source de donnes pour ce type de
diagramme car l'entre doit tre un data frame dont les noms des catgories doivent se trouver
sur l'index de numrotation de ce mme data frame (d'o l'utilisation de la commande
row.names( )):

Ce qui donne:

R Statistical Software 572/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 573/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou encore, toujours avec le mme package:

Ce qui donne:

R Statistical Software 574/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 112.: Diagramme d'Ishikawa (cause/effets)


R 3.0.2

Pour faire un diagramme d'Ishikawa nous allons d'abord charger le package qcc qui nous sera
trs utile dans le chapitre de la matrise statistique de la qualit:

Ensuite, nous faisons un exemple (simplement reprise de l'aide du package):

R Statistical Software 575/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 576/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 113.: Diagramme radial (rose des vents)


R 3.0.2

Voici un diagramme radial fait pour reprsenter des quantits sur un intervalle de 24 heures
(le script est inclus dans le framework des participants aux cours).

PS: Merci Vincent ZOONEKYND

Ce qui donne:

R Statistical Software 577/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 578/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 114.: Diagramme de Pareto et analyse ABC


R 3.0.2

Le but ici va tre de vrifier que nous pouvons reproduire le diagramme de Pareto que nous
avions fait dans R.

Nous partons du fichier *.csv suivant:

et d'abord nous l'importons et le rsumons:

R Statistical Software 579/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Remarque: Pour une analyse ABC il suffit de calculer une colonne en pourcents du total des
frquences et d'assigner une lettre ABC chaque intervalle de notre choix:

R Statistical Software 580/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Enfin nous gnrons le diagramme de Pareto avec la commande pareto.chart( ):

R Statistical Software 581/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 582/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 583/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 115.: Diagrammes Box Plots


R 3.0.2

Il ne nous faut pas manquer le traditionnel Box Plot avec la commande boxplot( ) et nous y
ajoutons un touche de rug( )...:

ou encore (avec des intervalles de confiance de la mdiane 95%):

R Statistical Software 584/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 585/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi faire varier l'paisseur des box plot en fonction des effectifs avec le
paramtre varwidth:

R Statistical Software 586/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire plus technique aussi:

ce qui donne:

R Statistical Software 587/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 588/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diagrammes en violons
Les diagrammes en violon essayent de combiner les avantages des botes moustaches et des
estimateurs de la densit locale.

Nous installons d'abord deux packages qui sont sm et vioplot:

et nous y allons en utilisant la commande vioplot( ):

R Statistical Software 589/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire mieux aussi:

R Statistical Software 590/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 591/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diagramme pirate
Un diagramme pirate est une faon moderne de visualiser la relation entre une variable
indpendante catgorielle et une variable dpendante continue. Contrairement aux mthodes
de traage traditionnelles, comme les barplots et les boxplots, un diagramme pirate
(pirateplot) est un triptyque qui prsente des donnes brutes (toutes les donnes comme des
points), des statistiques descriptives (comme une ligne horizontale la moyenne ou toute
autre fonction que vous souhaitez) et un intervalle de densit de Bayesian 95% liss.

Avec nos donnes cela donne en utilisant le package yarrr et la fonction pirateplot( )
correspondante:

Ce qui donne:

R Statistical Software 592/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 116.: Pyramide des ges


R 3.0.2

Un grand classique dans les tableurs aussi. Dans R il faut encore une fois utiliser la package
plotrix mais cette fois-ci avec la commande pyramide.plot( ). Voici un exemple repris tel
quel du PDF du package:

Ce qui donne:

R Statistical Software 593/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 117.: Chronologie et Diagramme de Gantt


R 3.4.1

Voyons comment crer d'abord une chronologie avec la fonction timevis( ) du package
timevis:

Cela cre alors dans le navigateur:

Nous sommes videmment trs loin de ce que peut faire un outil comme Microsoft Project
(voir mon livre sur le sujet) ou mme Microsoft Visio. Mais c'est dj pas mal pour certain
besoins basiques.

R Statistical Software 594/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Passons maintenant au Gantt qui encore une fois est beaucoup moins flexible que Microsoft
Project.

Pour cela, nous allons utiliser la fonction GanttChart( ) du package PlotPrjNetworks:

Ce qui donne:

R Statistical Software 595/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 118.: Organigramme


R 3.4.1

Bon l encore on est trs loin des possibilits d'un logiciel comme Microsoft Visio mais au
cas o voici comment faire un organigramme simple avec R:

Ce qui donne:

R Statistical Software 596/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 597/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 119.: Gaufres


R 3.4.1

Voyons quelques graphiques faits avec avec la fonction waffle( ) du package waffle:

ou encore:

R Statistical Software 598/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 599/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 120.: Surface 3D


R 3.4.1

Une vieille fonction qui nous est bien connue (sinus cardinal) pour introduire la commande
persp( ) (les plot de surface 3D sont trs utiles dans l'industrie o l'on mesure des dfauts de
surfaces quelques diximes de microns ou mme moins!):

Ou avec un peu d'ombre:

R Statistical Software 600/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou dans encore inutilement plus beau:

Ce qui donne (voir page suivante):

R Statistical Software 601/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore avec un autre style visuel (voir page suivante):

R Statistical Software 602/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore en utilisant le package fields pour avoir les dgrads dans le bon sens:

R Statistical Software 603/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sinon avec le package rgl, nous pouvons animer un surface en utilisant respectivement les
commandes rgl.surface( ), plot3d( ) et spin3d( ) et rgl.snapshot( ) pour exporter en tant
qu'image:

Ce qui donne:

Remarque: Il vaut mieux faire une capture d'cran que d'exporter en tant qu'image car la
qualit de celle-ci est discutable.

R Statistical Software 604/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou sinon si nous revenons la fonction baleine bosse que nous avons rencontr lors de
l'optimisation non linaire, nous pouvons tracer les isoclines l'aide de la commande
contour( ):

ou avec la commande filled.contour( ):

R Statistical Software 605/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou en utilisant des couleurs propres au domaine de la topographie:

ou en cumulant ce que nous venons de voir avec la commande image( ):

R Statistical Software 606/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou avec un style plus propre au domaine de la gomatique avec la commande image.plot( ) de
du package fields:

R Statistical Software 607/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Surface 3D par densit de noyaux 2D


Revenons sur un exemple vu plus haut avec la fonction kde2d( ) du package MASS et faisons
en une rprsentation 3D:

Ce qui nous donne:

R Statistical Software 608/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Surface 3D anime
Nous retrouvons ici encore une fois le package animation pour exporter une surface d'une
fonction analytique exporte sous forme d'un *.gif anim:

Aprs quelques minutes, cela donne une animation de l'image suivante:

R Statistical Software 609/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Surface 3D avec points


Il peut arriver que l'on ait des points de mesures d'une surface dont l'expression analytique est
connu (ou non). Ds lors, la question est de savoir si nous pouvons mettre des points visibles
sur une surface donnes.

Pour voir cela, nous allons reprendre toujours la fonction sinus cardinal et reprsenter les
points que nous avons calculs.

Nous allons utiliser le package rgl avec les commandes surface3d( ), spheres3d( ), grid3d( )
et decorated3d( ):

Ce qui donne (voir page suivante):

R Statistical Software 610/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 611/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Graphiques 4D
Lorsque nous avons une srie de capteurs qui mesurent des donnes dans l'espace, nous avons
donc dj 3 coordonnes pour placer la magnitute de la variabl d'intrt. Mais ceci permet
seulement de la placer et non de reprsenter la magnitude. Nous parlons alors dans ce cas de
graphique 4D!

Voici un exemple d'un graphique 4D avec des coupes ("slices" en anglais) utilisant le package
plot3D et la fonction slice3D( ):

Ce qui donne:

R Statistical Software 612/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 613/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 121.: Diagramme points 3D


R 3.0.2

Plot 3D de points simple


Le but ici est de voir que nous pouvons reproduire le graphique points 3D que nous avions
fait avec Microsoft Excel et Minitab. Nous partons donc du fichier suivant:

Nous installons le package scatterplot3d:

R Statistical Software 614/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et nous y allons en utilisant la commande scatterplot3d( ) du package:

ce qui donne:

R Statistical Software 615/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Version un peu amliore (merci Alboukadel Kassambara) avec la fonction scatter3D( ) du


package plot3D:

Ce qui donne:

R Statistical Software 616/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec le package rgl et la fonction rgl.spheres( ) nous pouvons faire plus simple typiquement
lorsque l'on travaille dans le domaine de l'astrophysique ou astronomie:

R Statistical Software 617/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

R Statistical Software 618/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plot 3D de points mesurs dans le temps (splines 3D)


Lorsque l'on travaille dans l'aronautique, ou l'arospatiale ou la mcanique on a souvent
besoin de reprsenter l'volution d'un point dans l'espace et dans le temps (typiquement aussi
la position d'un drone civil en fonction du temps).

Nous partons des points mesurs suivants:

Nous avons alors:

R Statistical Software 619/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore pour rendre la rotation du diagramme interactive, nous pouvons utiliser le package
rgl avec les commandes plot3d( ), points3d( ), spheres3d( ) et segments3d( ) et enfin
planes3d( ):

R Statistical Software 620/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 621/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 122.: Diagramme bulles 2D


R 3.0.2

L aussi rien de bien technique Le but tant de voir si nous arrivons faire un diagramme
bulle comme dans n'importe quel tableur (videmment ce sera encore une fois beaucoup
moins esthtique que le rsultat obtenu dans le cours Microsoft Excel).

En reprenant les donnes du cours Microsoft Excel directement dans la console, nous
crivons:

Ce qui donne:

R Statistical Software 622/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec le package ggplot2 avec les mmes donnes:

Ce qui nous donne:

R Statistical Software 623/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Par contre avec R il est beaucoup plus facile et rapide de faire le graphique bulle suivant que
nous avions aussi construit dans Microsoft Excelavec les donnes suivantes:

Donc maintenant en utilisant toujours le package ggplot2:

R Statistical Software 624/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Cela nous donne:

R Statistical Software 625/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 123.: Diagramme bulles 3D


R 3.4.1

Pour obtenir un diagramme bulle 3D, nous pouvons utiliser le package plotly avec la
fonction plot_ly( ):

Ce qui nous donne:

Le rsultat peut certainement tre amlior mais je ne suis pas un grand fan des graphiques
donc n'hsitez pas partager vos crations!

R Statistical Software 626/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 124.: Diagramme de Rosling (bulles animes)


R 3.2.1

Suite au Buzz effectu par la prsentation de Rosling sur Internet je pense qu'il est inutile de
prciser de quoi il s'agit Donc pour voir comment reproduire cela, considrons le jeu de
donnes suivant:

o chaque pays se rpte plusieurs fois comme le montre la capture suivante:

R Statistical Software 627/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la fonction Rosling.bubbles( ) du package animation nous arrivons obtenir quelque


chose proche du de la prsentation de Rosling part que les couleurs changent chaque
itration et il n'y pas de lgendes sur les bullets donc pour l'instant c'est moins bien que
Microsoft Excel:

Ce qui donne une animation anne par anne:

R Statistical Software 628/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 629/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 125.: Intervalles de distributions


R 3.0.2

Pour ce qui est des plots des surfaces de probabilit cumule utilisant les mthodes de densit
par noyaux (nous avons vu lors de notre dcouverte des graphiques comment faire le mme
travail pour l'expression exacte de distributions lorsque nous n'utilisions pas la mthode de
densit par noyaux) et les quantiles:

S'il s'agit non pas des quantiles mais du support et que nous ne voulons pas 1 seul intervalle
mais plusieurs, voici la mthode:

R Statistical Software 630/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 631/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons plotter l'intervalle des quelques quantiles pour la simulation de la fonction de
densit:

R Statistical Software 632/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Probabilit cumule d'un intervalle d'une distribution estime par


noyaux
Voil une exemple trs important dans la pratique industrielle qui utilise la commande
KernelSmoothing.cdf( ) du package DiagTest3Grp:

R Statistical Software 633/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 126.: Diagrammes combins lattes (facettes)


R 3.0.2

Nous allons ici utiliser un package relativement courant qui est la package lattice

Voyons quelques exemples:

ou:

R Statistical Software 634/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

R Statistical Software 635/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou encore dans un autre style:

R Statistical Software 636/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Thorie des graphes


Exercice 1.: Graphe de matrice d'adjacence
R 3.0.2

Nous souhaitons voir ici si nous pouvons reproduire avec R le graphe suivant utilis dans le
cours thorique de thorie des graphes partir de sa matrice d'adjacence:

Donc d'abord nous crons la matrice d'adjacence correspondante dans R:

R Statistical Software 637/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous installons ensuite le package Rgraphviz:

Mais nous avons un message d'erreur. Pas de soucis! L'astuce va consister dfinir la source
nous mme avec la commande setRepositories( ) et de prendre BioC Software:

Alors vous pouvez installer le package:

R Statistical Software 638/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant nous chargeons le package et faisons un plot de notre graph en utilisant la


commande am.graph( ):

et bingo!!!

R Statistical Software 639/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 2.: Graphe de matrice d'adjacence et poids des sommets selon


algorithme du Google Page Rank
R 3.3.2

Nous allons voir ici si nous retombons avec R sur la mesure invariante d'un rseau tel que
dtermin dans le cours thorique.

Rapellons que nous partons de:

Ce qui donne en matrice d'adjacence dans R:

R Statistical Software 640/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et maintenant nous utilisons la fonction graph_from_adjacency_matrix( ) du package


igraph pour obtenir un objet graph:

R Statistical Software 641/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous calculons enfin la mesure invariante avec la fonction page_rank( ) toujours du
package igraph( ):

Nous ne sommes donc pas trop loin des 34 premires itrations donnes dans Microsoft
Excel!

Et finalement au besoin voici le graph:

R Statistical Software 642/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 643/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 3.: Graphe de migration


R 3.0.2

Nous allons maintenant utiliser la matrice de transition de probabilits dfinie dans le cours
thorique sur la thorie des graphes:

et correspondant la matrice d'adjacence du graphe prcdemment construit pour en faire


une reprsentation graphique sous la forme d'un graphe de migration.

D'abord nous construisons la matrice de transition correspondante dans R:

R Statistical Software 644/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait, nous chargeons les packages plyr, migest et circlize et utilisons les
circos.par( ), chordDiagram( ) et circos.trackPlotRegion( ) comme suite (ce n'est de loin
pas vident deviner):

R Statistical Software 645/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne le graphe suivant qui aprs quelques secondes d'analyse est facilement
interprter:

La qualti est mauvais il vaut donc mieux faire un export pour avoir un rsultat HD:

Ce qui donne:

R Statistical Software 646/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 647/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 4.: Flux parallles (diagrammes de Sankey)


R 3.0.2

Bon ce n'est pas lgant et il n'existe pas de package ce jour permettant d'automatis la
procdure, mais voici dj le script:
parallelset <- function(..., freq, col="gray", border=0, layer,
alpha=0.5, gap.width=0.05) {
p <- data.frame(..., freq, col, border, alpha, stringsAsFactors=FALSE)
n <- nrow(p)
if(missing(layer)) { layer <- 1:n }
p$layer <- layer
np <- ncol(p) - 5
d <- p[ , 1:np, drop=FALSE]
p <- p[ , -c(1:np), drop=FALSE]
p$freq <- with(p, freq/sum(freq))
col <- col2rgb(p$col, alpha=TRUE)
if(!identical(alpha, FALSE)) { col["alpha", ] <- p$alpha*256 }
p$col <- apply(col, 2, function(x) do.call(rgb, c(as.list(x),
maxColorValue = 256)))
getp <- function(i, d, f, w=gap.width) {
a <- c(i, (1:ncol(d))[-i])
o <- do.call(order, d[a])
x <- c(0, cumsum(f[o])) * (1-w)
x <- cbind(x[-length(x)], x[-1])
gap <- cumsum( c(0L, diff(as.numeric(d[o,i])) != 0) )
gap <- gap / max(gap) * w
(x + gap)[order(o),]
}
dd <- lapply(seq_along(d), getp, d=d, f=p$freq)
par(mar = c(0, 0, 2, 0) + 0.1, xpd=TRUE )
plot(NULL, type="n",xlim=c(0, 1), ylim=c(np, 1),
xaxt="n", yaxt="n", xaxs="i", yaxs="i", xlab='', ylab='',
frame=FALSE)
for(i in rev(order(p$layer)) ) {
for(j in 1:(np-1) )
polygon(c(dd[[j]][i,], rev(dd[[j+1]][i,])), c(j, j, j+1, j+1),
col=p$col[i], border=p$border[i])
}
text(0, seq_along(dd), labels=names(d), adj=c(0,-2), font=2)
for(j in seq_along(dd)) {
ax <- lapply(split(dd[[j]], d[,j]), range)
for(k in seq_along(ax)) {
lines(ax[[k]], c(j, j))
text(ax[[k]][1], j, labels=names(ax)[k], adj=c(0, -0.25))
}
}
}

data(Titanic)
myt <- subset(as.data.frame(Titanic), Age=="Adult",
select=c("Survived","Sex","Class","Freq"))
myt <- within(myt, {
Survived <- factor(Survived, levels=c("Yes","No"))
levels(Class) <- c(paste(c("First", "Second", "Third"), "Class"), "Crew")
color <- ifelse(Survived=="Yes","#008888","#330066")
})

R Statistical Software 648/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
with(myt, parallelset(Survived, Sex, Class, freq=Freq, col=color,
alpha=0.2))

Ce qui donnera:

Ou encore plus simple, avec le package alluvial et la fonction alluvial( ):

R Statistical Software 649/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 650/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 5.: Rseaux de relations


R 3.0.2

Considrons le fichier suivant:

De relations interbancaires. Nous le chargeons dans R:

R Statistical Software 651/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous faisons la synthse sur les partenaires car toutes les banques sont listes dans les
partenaires et nous comptons combien de fois chacun apparat en tant que partenaire ainsi les
plus importantes seront les plus reprsentatives sur le graphe final:

R Statistical Software 652/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous normalisons cela de faon empirique afin d'avoi un taille convenable sur le graph final
(normalisation faite par essais successifs) et nous construisons l'aide de la commande
graph.data.frame( ) du package igraph l'objet rseau qui sera utilis un peu plus loin pour le
graph:

R Statistical Software 653/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons ensuite vrifier si par hasard le graphe est totalement connexe (si chaque
banque est lie toutes les autres banques, ou autrement dit si chaque banque fait affaire
avec toutes les autres banques au moins une fois):

Ensuite nous faisons le plot:

Nous pouvons obtenir la liste des relations avec la commaned E( ) (pour "Edges"):

R Statistical Software 654/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire de mme en cercle mais comme il y a des milliers de relations dans le cas
prsent ce n'est videmment gure lisible...:

R Statistical Software 655/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons galement regrouper certains lments par couleurs mais lorsqu'il y a beaucop
de liaisons ces dernires sont difficilement visibles:

Nous pouvons ensuite faire quelques petits calculs lmentaires. Par exemple pour chaque
banque, connatre le nombre de liens entrants+sortants avec la commande degree( ):

R Statistical Software 656/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut avoir que les lients entrants (et respectivement sortant en mettant mode="out"):

R Statistical Software 657/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 127.: Carte de chaleur (heatmap)


R 3.0.2

Nous allons voir ici si avec R nous retrouvons le mme dendrogramme que dans le cours
Minitab en utilisant le mme jeu de donnes (rappelez-vous qu'avec Minitab nous avions
obtenu avec la distance euclidienne les mmes rsultats que ceux calculs la main dans le
cours thorique):

La commande heatmap( ) et le rsultat associ sont donns par (voir page suivante):

Ce qui donne (voir page suivante):

R Statistical Software 658/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le rsultat est esthtiquement discutable et si nous comparons Minitab:

R Statistical Software 659/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous n'obtenons pas la mme chose! Nous verrons cependant dans le chapitre data mining
lors de l'exemple du CAH quels sont les paramtres mettre dans R pour retomber sur ce que
nous avons dmontr dans le cours thorique.

Cependant on peut faire mieux que l'horrible commande heatmap( ) qui consiste utiliser la
commande pheatmap( ) en association avec les packages pheatmap et gplots:

R Statistical Software 660/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou dans un style beaucoup plus sobre et simple:

R Statistical Software 661/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sinon nous pouvons revenir du plus classique avec les packages ggplot2 et ggdendro et en
utilisant les commandes hclust( ) et ggdendrogram( ):

ou encore sans packages:

R Statistical Software 662/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et toujours sans package additionnels:

R Statistical Software 663/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou une interprtation sous forme tabulaire:

R Statistical Software 664/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 665/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 128.: Diagramme ternaire (plans de mlange)


R 3.0.2

Dans le cours d'ingnierie nous avons tudi en dtails la thorie mathmatique des plans de
mlange avec mesures aux sommets (plans de mlanges centrs) trs utiliss en chimie.

Nous allons voir ici que nous pouvons reproduire graphiquement le mlange qui nous avait
servi d'exemple comme cas pratique de la la thorie.

Nous installons d'abord le package vcd:

Et ensuite nous saisissons les donnes dans la joie en utilisant pour finir la commande
ternaryplot( ):

R Statistical Software 666/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 667/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 129.: Fractale de Mandelbrot


R 3.0.2

Dans le cours de mathmatique thorique nous avons tudis la thorie des fractales pendant
un temps significatif en utilisant Maple. Nous allons voir ci-dessous qu'il est tout fait
possible d'obtenir la mme chose avec R.

Ce qui donne:

R Statistical Software 668/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore plus fort en en anim mais en utilisant le package catools:

Ce qui donnera une animation *.gif de 20 images avec comme image finale:

R Statistical Software 669/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 670/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 130.: Exporter un graphique en tant qu'image ou pdf


R 3.0.2

Lorsque vous faites des graphiques vous pouvez certes les exporter manuellement en faisant
un clic droit et choisir une option d'export mais dans la majorit des cas, nous automatiserons
de type de procdure dans des scripts. Voici un exemple:

Nous obtenons alors:

R Statistical Software 671/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et pour exporter en PDF:

Nous obtenons alors:

et si nous ouvrons:

R Statistical Software 672/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L'export en PDF est superbe! Sachant que l'on peut mettre plusieurs graphiques sur une mme
figure de sortie, ainsi que du texte et des rsultats de calculs, on imagine aisment comme cela
peut tre utile pour automatiser du reporting en entreprise.

R Statistical Software 673/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 131.: Gostatistiques & Topographie (sciences de


l'information gographique)
R 3.0.2

Encore une fois, mme au niveau de gostatistiques, R ne vaut pas ce que l'on peut faire avec
le tableur Microsoft Excelen termes de rapidits et d'esthtique dans les cas les plus classiques
depuis la version 2010 du tableur en utilisant conjointement Power Pivot et Power Map.

Topographie
Commenons par une trivialit en utilisant la matrice volcano inclue nativement avec R:

Ce qui donnera:

R Statistical Software 674/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Imaginons maintenant que nous avons une matrice avec le type de terrain indiquant la densit
de verdure. Nous pouvons alors utiliser le script suivant:

R Statistical Software 675/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 676/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et avec les courbes de niveau planes:

Ce qui donne:

R Statistical Software 677/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou dans un autre genre:

Ce qui donne:

R Statistical Software 678/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Statistiques au niveau mondial (package rworldmap)


Le package le plus lgant que j'ai trouv ce jour pour faire des statistiques au niveau
mondial est rworldmap (dont la documentation est en plus bien faite).

Nous allons travailler directement avec le jeu de donnes intgr ce mme package:

Que l'on peut facilement exporter pour son usage personnel (ceci afin de ne pas resaisir la liste
des pays et rgions et sous rgions les plus courants) par exemple avec la commande suivante
et en faisant ensuite un coller dans un tableur:

R Statistical Software 679/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous commenons par afficher la population mondiale:

Ce qui donne:

R Statistical Software 680/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore en agrgant les donnes:

R Statistical Software 681/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 682/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
On peut aussi regrouper les donnes par quartiles:

ce qui donne:

R Statistical Software 683/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et en rajoutant juste un argument nous pouvonz zoomer sur une rgion donne du monde:

R Statistical Software 684/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et si l'on possde des donnes avec des coordonnes pour les pays, il est possible de faire un
diagramme bulle sur la map monde:

Ce qui donne:

R Statistical Software 685/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Statistiques au niveau mondial (package plot3D)


Voil une commande avec le package qui va en ravir plus d'un! Sous l'hypothse que nous
ayons une matrice dont le nombre de lignes est de 359 et le nombre de colonnes de 180
(correspondant respectivement aux angles de longitutes et latitudes) avec pour chaque
composante une valeur physique mesure, alors avec le package plot3D, nous pouvons
obtenir en utilisant la commande image2D( ) le rsultat suivant (plus besoin de MATLAB
pour cela... Yeeees!):

Maintenant toujours avec le mme package zoomons en perspective sur la rgion mise en
vidence:

R Statistical Software 686/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pas mal... mais nous allons faire un peu mieux en ajoutant un seul paramtre de rsolution:

R Statistical Software 687/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bon c'est pas mal du tout (l aussi plus besoin de MATLAB pour cela!!!!). Faisons encore
mieux en ajoutant les isoclines:

R Statistical Software 688/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 689/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Gostatistiques ponctuelles (package maps)


Le but ici va tre de dcouvrir le package maps que nous retrouverons juste plus loin et qui
permet d'avoir des cartes avec frontires des rgions/dpartements ou cantons dont nous
pouvons reprsenter des points l'aide des lattitudes et longitudes.

Commeons d'abord par rapport des notions esthtique de base:

ou encore:

R Statistical Software 690/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L'exemple ci-dessous est repris du post de l'excellentissime blog de Arthur CHARPENTIER


de Novembre 2010 avec son autorisation:

http://freakonometrics.hypotheses.org/2160

Nous utiliserons le fichier suivant qui contient la liste de 32'250 communes franais avec leur
nom et latitude/longitude (le package ne permet pas ce jour de faire la Suisse):

R Statistical Software 691/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

D'abord nous chargons le package maps:

Si nous voulons reprsenter toutes les communes, nous aurons alors:

R Statistical Software 692/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et maintenant en prenant que les villes qui comprennent l'expression "-sur-Mer" (comme quoi
les techniques de filtrage que nous avons apprises ne sont pas inutiles!):

R Statistical Software 693/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et aussi d'Arthur CHARPENTIER et du mme excellentissime blog mais de Novembre 2011:

http://freakonometrics.hypotheses.org/2308

nous pouvons contrler les couleurs des rgions (ce qui n'est pas faisable ce jour avec la
Suisse):

R Statistical Software 694/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 695/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sinon toujours avec le mme package des points sur une carte dont la diamtre dpend de
l'amplitude des donnes:

R Statistical Software 696/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 697/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Gostatistiques avec gradients (packages aqfig et maps)


Nous chargeons le package aqfig:

Considrons les donnes suivantes du package aqfig:

R Statistical Software 698/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
En utilisant les commandes plot3d.points( ) et vertical.image.legend( ) du package aqfig et
la commande map( ) du package maps:

Nous obtenons alors un grand classique:

R Statistical Software 699/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 700/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Utilisation du format NetCDF


NetCDF (Network Common Data Form) est constitu, d'une part, d'un ensemble de
bibliothques logicielles et d'autre part, d'un format de donnes auto-document ,
indpendant de l'architecture matrielle qui permet la cration, l'accs et le partage de donnes
scientifiques stockes sous la forme de tableaux. Le site internet du projet est hberg par le
Unidata program l'University Corporation for Atmospheric Research (UCAR). Ils sont par
ailleurs les mainteneurs principaux des programmes, des spcifications, etc. Il s'agit d'un
format ouvert.

Le format, l'origine, avait pour modle conceptuel le format CDF issu de la NASA mais il a
depuis diverg de faon telle qu'aujourd'hui ces deux formats ne sont plus compatibles.

Ce format est couramment utilis dans des applications de climatologie, de mtorologie et


d'ocanographie (ex., prvision mtorologique, changement climatique et applications des
S.I.G.).

Il s'agit d'un format de choix pour les entres/sorties de nombreux S.I.G. et pour l'change de
donnes scientifiques. Le site dfinit le format NetCDF comme "une interface pour un accs
aux donnes orient tableaux et une bibliothque qui fournit une implmentation de cette
interface. La bibliothque netCDF dfinit en sus un format de reprsentation des donnes
scientifiques indpendant de l'architecture machine".

Nous allons utiliser pour cet exemple le package ncdf4 et charger un jeu de donnes local
avec la fonction nc_open( ):

R Statistical Software 701/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite nous extrayons les donnes qui nous intressent:

Ensuite allons-y pour l'afficher:

R Statistical Software 702/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 703/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut zoomer avec le package ggmap:

R Statistical Software 704/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 705/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Google maps/Open maps (package ggmap)


Attention!!! Quand vous travaillez avec ce package, choisissez un rpertoire de travail qui
soit bien en lecture et criture!

Nous allons voir ici quelques possibilit du package ggmap. Commenons par apprendre
afficher des cartes tout simplement avec diffrents styles en utilisant les commandes
get_map( ) et ggmap( ):

ou avec une vue satellite:

R Statistical Software 706/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou de type carte routire:

R Statistical Software 707/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou avec un style hybride/carte routire:

ou avec un style militaire:

R Statistical Software 708/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant choisissons le lieu avec des coordonnes en latitude/longitude:

R Statistical Software 709/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Apprenons mettre un point sur un lieu de la carte avec la commande geom_point( ):

ou faire en sorte que la carte prenne tout la fentre:

R Statistical Software 710/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons aussi "piquer" des coordonnes de carte avec la commande gglocater( ) o
entre parenthse nous pouvons choisir le nombre de points cliquables selon l'exemple ci-
dessous:

Nous pouvons galement tracer des polygones avec la commande geom_poly( ) et des tracs
avec geom_path( ) ou crire des textes avec la commande annotate( ) en utilisant par
exemple comme source le fichier suivant:

R Statistical Software 711/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et le script suivant:

Nous obtenons:

R Statistical Software 712/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
En s'inspirant de l'aide du package ggmap et en utilisant le fichier suivant:

Nous pouvons indiquer des relevs sur une carte en utilisant nouveau geom_point( ):

R Statistical Software 713/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou avec des densits de releves grce des isoclines de densits locales en utilisant la
commande stat_density2d( ):

ou avec un autre visuel:

R Statistical Software 714/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore afficher des barres de donnes en des lieux prcis avec le fichier de donnes
suivant:

R Statistical Software 715/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et le script utilisant la commande geom_subplot( ):

Ce qui donnera:

R Statistical Software 716/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut aussi s'amuser avec faire des cartes bulles (remarquez les 0.9 dans le lgende qui est
mal compris par R car il s'agit de l'alpha... il faudra le masquer a priori par un rectangle
blanc):

R Statistical Software 717/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 718/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou dans un autre style en utilisant la commande stat_bind2d( ):

Ce qui donne:

R Statistical Software 719/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Au niveau mondial avec un seul point, nous pouvons faire par exemple en utilisant les
commandes map_data( ) et ggplot( ):

Passons maintenant un cas trs utile dans la meilleure dmocratie directe du monde. D'abord
tlchargez sur le site web suivant http://www.gadm.org :

R Statistical Software 720/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et tlchargez le fichier *.zip:

R Statistical Software 721/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Dcompressez tout le dossier *.zip dans un dossier unique en prservant tous les fichiers
d'une mme famille de niveau de dtails:

Ensuite, nous utilisons les packages rgdal, maptools, plyr, RColorBrewer, ggplot2 avec la
srie de commandes suivantes (merci Ahmadou Dicko!) en plusieurs tapes (car c'est un peu
long).

1ire tape on charge les packages et on lit le contenu de fichier *.shp12 en utilisant
readOGR( ) et fortify( ):

12
Les fichiers *.shp (shapefiles) sont des fichiers au format ArcView et sont donc de facto le standard pour les
fichiers SIG (bien que ce soit un format propritaire). La plupart des cartes au monde sont dans ce format.

R Statistical Software 722/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On gnre des donnes fictives pour l'exemple (on a compris le principe de l'import de *.csv):

R Statistical Software 723/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On fait quelques prparatifs sur les donnes:

Et on trace en cumulant presque tout le savoir cumul jusqu'ici concernant les cartes:

R Statistical Software 724/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne au final:

R Statistical Software 725/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Avec le package plotKML et un fichier *.gpx gnr par les GPS (ou tout autre appareil
emportant cette technologie) nous pouvons tracer le chemin parcouru par un lment mobile.

Nous partons du code XML suivant (fichier GPS_path.gpx):

Ensuite, nous crivons le code suivant dans R utilisant la commande readGPX( ):

Ce qui donne:

R Statistical Software 726/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons maintenant un package sympathique nomm leaflet qui gnre une page web html
locale interactive utilisant Google Map. Voici un exemple pris du site de l'quipe de
dveloppement qui suffit en montrer un aperu du potentiel:

R Statistical Software 727/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

Si on a une adresse internet avec une icne (une petite image), nous pouvons choisir le logo
mettre sur la carte:

R Statistical Software 728/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

R Statistical Software 729/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 730/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pavage de sphere et statistiques


Le type de diagrammes que nous allons voici ici ncessite ce jour Linux. Les exemples
excuts ci-dessous ont t fait sous Scientific Linux 7.3 avec R 3.4.1:

Avant de pouvoir excuter les commandes ci-dessous il va vous falloir installer les
composants suivant dans Scientific Linux:
yum install gdal gdal-devel
yum install proj
yum install proj-devel
yum install proj-nad
yum install proj-epsg

et aprs seulement on peut installer et charger le package de base ncessaire pour la suite
qu'est rgdal:

R Statistical Software 731/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite seulement on peut installer le package dggridR:

R Statistical Software 732/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et le package dplyr:

Assurez-vous d'installer aussi le package maps:

R Statistical Software 733/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, assurez-vous de lancer une mise jour des packages:

R Statistical Software 734/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Cartogramme

R Statistical Software 735/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Topographie Marine
Nous allons voir ici qu'il existe un package spcifique pour la topologie Marine ce qui peut
tre utile pour l'industrie de la pche, le recensement d'animaux marins, le tracage GPS ou
l'exploration ptrolire.

L'ide consiste utiliser le package marmap, les commandes sont assez intuitives pour ne
pas avoir tre explicites:

Ce qui donne:

Attention!!! Le tlchargement des cartes depuis la National Oceanic And Atmospheric


Administration:

R Statistical Software 736/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

en local peut prendre beauuuuucoup de temps suivant les latitutes et longitudes choisies.

ToDo: Reprsenter un point sur la carte, relier des points entre eux.

Nous pouvons aussi reprsenter la plante entire:

ToDo: Tourner la Terre, Enlever les courbes.

R Statistical Software 737/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Chemins (analyse qualitative de flux)


Le but de cet exemple est de montrer comment il est possible de reprsenter lgemment les
trajectaires (chemins) parcourus par un ensemble d'entits mobiles (migrations, transports,
analyse de flux) pendant une priode de temps donne, dans une rgion donn.

Nous avons les donnes suivantes de lieu de domicile et de travail d'individus incluant
diffrentes colonnes avec les moyens de transport (uniquement les trois premires colonnes
vont nous intresser):

Nous chargeons les packages ncessaires (dj connus) et les donnes d'intrt (3 premires
colonnes):

Un petite aperu du dataset:

R Statistical Software 738/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le problme c'est que ce dernier fichier ne contient pas les coordonnes des villes/communes
correspondant aux codes de zones. Pour cela nous allons utiliser le fichier suivant:

R Statistical Software 739/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et nous la chargeons aussi dans un dateset. Le tout donne jusqu' maintenant:

Ensuite, nous faisons un mappage classique avec la fonction merge( ) dj connue ce qui
donne alors:

R Statistical Software 740/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et maintenant nous passons la partie traage:

Ce qui donne visuellement (aprs une attente certaine dpendant de la puisse de l'ordinateur
car il y a quand mme prs de 2 millions de chemins/traits dessiner).

R Statistical Software 741/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Reste plus qu' exporter en PDF ou SVG pour avoir une image HD.

R Statistical Software 742/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Trajet optimal (des moindres distances)


Le package TSP contient une commande solve_TSP( ) qui partir d'un matrice des distances
permet de dterminer le trajet le plus court en distances entre de multiples points
gographiques.

Rappelons d'abord comment construire une matrice de distance et montrons ensuite comment
en faire un objet TSP avec la commande TSP( ) et en retirer quelques informations

Pour la suite nous utiliserons un matrice des distances inclue dans le package TSP qui
contient quelques informations de distances euclidiennes entre des grandes villes amricaines.

R Statistical Software 743/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons donc ce que nous pouvons en tirer:

Ce qui donne:

R Statistical Software 744/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 132.: Calendriers de densit


R 3.0.2

Voyons une petite reprsentative sympathique que certains apprcieront ( nouveau on peu
faire beaucoup mieux avec un tableur mais bon...).

Considrons les donnes suivantes d'occupation des salles de confrences d'un petit centre de
centre de formation:

Ensuite, nous allons utiliser le long script de Paul Bleicher comme une bote noire:

R Statistical Software 745/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Remarquez que ce script utilise les package lattice, chron et grid!!!

Ensuite, dans R nous aurons:

R Statistical Software 746/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 747/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 133.: Export de graphiques ggplot en format web


interactif
R 3.3.2

Avec le package ggiraph et sa commande correspondante il est possible d'obtenir des


graphiques interactifs pour le web qui sont remarquables. Voyons les exemples fournis avec
le package:

ce qui donne:

R Statistical Software 748/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore (dernier exemple):

R Statistical Software 749/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 750/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ainsi de suite. Donc on voite que les possibilits sont considrables!

R Statistical Software 751/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

12. Fonctions de distributions de probabilits


Il arrive frquemment que l'on souhaite comparer des donnes mesures dont nous faisons
l'hypothse qu'elle suive une loi de probabilit donne, avec des vraies variables alatoires
issues de cette loi. Ne serait-ce que pour faire une reprsentation graphique de l'histogramme
de chacun et de pouvoir les comparer.

Remarque: La gnration de variables alatoires est galement utile dans le cadre de


simulations de Monte-Carlo aprs avoir copier/coller ou exporter les donnes dans MS Excel.

Comme il s'agit d'une manipulation simple effectuer dans R (afficher les histogrammes de
diffrentes distributions), nous allons donc commencer par ce premier point.

D'abord signalons les conventions d'criture de R pour les fonctions de distribution (p pour la
probabilit cumule, q pour le quantile, d pour la densit et r pour raliser une valeur alatoire
au hasard):

Distribution Fonctions
Beta pbeta qbeta dbeta rbeta
Binomial pbinom qbinom dbinom rbinom
Cauchy pcauchy qcauchy dcauchy rcauchy
Chi-Square pchisq qchisq dchisq rchisq
Exponential pexp qexp dexp rexp
F pf qf df rf
Gamma pgamma qgamma dgamma rgamma
Geometric pgeom qgeom dgeom rgeom
Hypergeometric phyper qhyper dhyper rhyper
Logistic plogis qlogis dlogis rlogis
Log Normal plnorm qlnorm dlnorm rlnorm
Negative Binomial pnbinom qnbinom dnbinom rnbinom
Multinomial pmultinom qmultinom dmultinom rmultinom
Normal pnorm qnorm dnorm rnorm
Poisson ppois qpois dpois rpois
Student t pt qt dt rt
Studentized Range ptukey qtukey dtukey rtukey
Uniform punif qunif dunif runif
Weibull pweibull qweibull dweibull rweibull
Wilcoxon Rank Sum Statistic pwilcox qwilcox dwilcox rwilcox
Wilcoxon Signed Rank Statistic psignrank qsignrank dsignrank rsignrank
Tableau 1 Syntaxe des diffrentes distributions de probabilits

Pour d'autres distribution et leur package respectif voir:

R Statistical Software 752/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
http://cran.r-project.org/web/views/Distributions.html

Avant de commencer signalons au lecteur que pour chaque distribution il peut s'amuser faire
le graphique suivant trs instructif (dans le cas ci-dessous nous l'avons fait qu'avec la loi
Normale):

Et une faon lgante de gnrer des variables alatoires indpendantes:

R Statistical Software 753/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 134.: Loi discrte personnalise


R 3.3.2

Dans la gestion de projets, l'actuariat ou la fiabilit industrielle on doit parfois travailler avec
des distributions discrtes! Voyons coment grer ces dernires dans R.

Considrons:

La moyenne et l'cart-type seront trivialement donns par:

Mais on peut faire plus simple avec la commande DiscreteDistribution( ) du package


distrEx:

R Statistical Software 754/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 755/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 135.: Loi Normale


R 3.0.2

Nous allons commencer avec la loi Normale (elle reste la plus utilise ce jour) en gnrant
un vecteur Normal et ensuite en affichant son histogramme et des informations y relatives en
utilisant les commandes rnorm( ) et dnorm( ).

Commenons donc par un simple histogramme:

et pour ajuster en utilisant la commande curve( ):

R Statistical Software 756/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou encore un autre trs grand classique:

qui donne:

R Statistical Software 757/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 758/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Loi Normale avec frquences


Exceptionnellement et seulement pour la loi Normale (sinon cela commencerait tre
ennuyeux si nous le faisons pour toutes les autres lois) nous allons donner la mthode pour
avoir comme dans Minitab, le graphique non pas avec les densits mais avec les frquences:

Ou une autre manire de faire utilisant la commande density( ):

R Statistical Software 759/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il est aussi possible de travailler avec des donnes que typiquement des non statisticiens vont
vouloir ajuster quand mme une loi normale:

R Statistical Software 760/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous pouvons centrer rduire les valeurs aussi (trs utile en finance):

R Statistical Software 761/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Enfin, pour ceux qui cherchent reproduire le graphique que nous prsent dans le cours
thorique concernant la mthode par densit de noyaux, voici le script:

Ce qui donne:

R Statistical Software 762/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
videmment ce genre de manipulation avec les donnes que nous avons ci-dessus se passe de
commentaires...

R Statistical Software 763/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Loi Normale avec double axe


Minitab n'est pas capable de plotter un histogramme et une distribution avec un axe respectif
pour chacun ainsi qu'avec un chelle personnalise adapte chaque graph. Par contre avec le
tableur Microsoft Excel c'est trs simple. Pour R je suis arriv faire mieux que Minitab en
obtenant le double axe mais je ne suis pas arriv ce jour trouver une solution simple
(comme dans le tableur Excel) pour changer l'chelle du deuxime axe droite de 0 1... (si
quelqu'un une solution je suis preneur):

R Statistical Software 764/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Loi Normale avec distribution et rpartition des frquences


C'est un cas souvent demand dans le cours Statistique avec des tableurs voyons comment
faire cela avec R car c'est loin d'tre intuitif pour changer...

R Statistical Software 765/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Loi Normale bivarie


Un cas trs important en finance et en matrise statistique des processus. Nous allons pour
cela utiliser la thorique vue en cours sous forme de fonction R:

Ce qui donne:

R Statistical Software 766/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Si nous n'avons que des points dont la distribution est inconnue, nous pouvons utiliser la
commande bkde2D( ) du package KernSmooth pour chercher la meilleure densit 3D
approche par noyaux locaux:

R Statistical Software 767/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

Ellipse de confiance (Youden Plot)


Dans un autre style en utilisant le package mnormt et la commande dmnorm( ) associe
nous avons un cas trs classique beaucoup utilis dans le domaine industriel (contrle
statistique des procds) dans le cas de ctes bi-dimensionnelles:

R Statistical Software 768/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 769/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Enfin, si nous avons deux variables alatoires centres rduites corrles entre elles, nous
pouvons reprsenter les ellipses de confiance plus simplement en utilisant les donnes du
cours thorique:

R Statistical Software 770/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons alors:

R Statistical Software 771/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 772/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Loi Normale trivarie


Considrons un processus de fabrication sous contrle statistique de joints dont trois cotes
sont mesures chaque fois. Diamtre interne, externe et paisseur. Les trois cotes suivante
une loi Normale centre. videmment, ci-dessous nous gnrons les donnes mais on peut
simplement avoir un fichier *.csv avec trois colonnes (dixit trois vecteurs) avec les valeurs
mesures:

Ce qui donne:

R Statistical Software 773/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

videmment c'est une approche purement qualitative!

R Statistical Software 774/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 136.: Loi Uniforme (continue)


R 3.0.2

Nous allons voir partir de ce point comment reprsenter graphiquement les diverses
fonctions les plus connues associes des variables alatoires d'importance majeure!
Cependant avant de commencer par le premier exemple, il est important je pense de
considrer le cas suivant qui dans un mme graphique (certes un peu dense et manquant de
couleurs) rassemble les 4 aspectes possibles d'une variable alatoire normale (v.a. continue
pour rappel):

Pour la loi uniforme (continue) nous aurons en utilisant les commandes runif( ) et dunif( ):

R Statistical Software 775/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et l contrairement au support sur Minitab et SPSS nous allons faire les autres distributions
classiques vu dans le cours thorique de niveau BAC puisque les commandes ne sont pas
directement visibles.

R Statistical Software 776/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 137.: Loi Gomtrique


R 3.0.2

Voici notre premire v.a. discrte. L aussi avant de poursuivre considrez le graphique
suivant qui en un seul tenant rassemble les 4 aspect d'une variable alatoire et remarquez
surtout les arrondis (via l'utilisation de la fonction round( )) pour grer le fait que le support
concerne les valeurs entires:

Nous avons vu dans le cours thorique que la loi gomtrique (loi discrte pour rappel) tait
en ralit un simple cas particulier de la loi binomiale ngative. Voyons comment tracer aussi
cette dernire en utilisant les commandes rgeom( ) et dgeom( ):

R Statistical Software 777/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons voir qu'il y a a priori un souci ici car une densit suprieure l'unit cela n'est
normalement pas possible et le regroupement des barres (intervalles) n'est pas des plus
adquats...

Il existe encore une fois une autre manire d'avoir un plus joli rsultat (mais en ralit un peu
incorrecte puisque cela peut donner l'impression que la fonction de densit est continue) et qui
utilise la commande lines( ) et density( ) cette dernire tant une mthode d'estimation de
fonction de densit par noyaux et par dfaut utilisant une gaussienne:

R Statistical Software 778/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais l on voit que la ligne de densit devient vraiment n'importe quoi mais au moins la
densit de l'histogramme est juste! Donc bref il y a un compromis trouver (sinon on
augmente le nombre de simulation de 125 10'000 par exemple...).

Puisque la loi binomiale tend vers une loi de Poisson quand le nombre d'essais devient infini
et que la probabilit devient infiniment petite... il nous faut donc l'tudier!

R Statistical Software 779/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 138.: Loi Binomiale


R 3.0.2

Pour la loi binomiale (loi discrte pour rappel) je n'ai ce jour pas trouv mieux que ce qu'il y
a ci-dessous en utilisant les commandes rbinom( ) et dbinom( ) (c'est un peu particulier car
c'est une loi bien videmment discrte):

Il existe une autre manire d'avoir un plus joli rsultat (mais en ralit un peu incorrecte
puisque cela peut donner l'impression que la fonction de densit est continue) et qui utilise la
commande lines( ) et density( ) cette dernire tant une mthode d'estimation de fonction de
densit par noyaux et par dfaut utilisant une gaussienne:

R Statistical Software 780/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais l on voit que la ligne de densit n'est pas vraiment juste non plus mais au moins la
densit de l'histogramme est juste! Donc bref il y a un compromis trouver (sinon on
augmente le nombre de simulation de 125 10'000 par exemple...).

R Statistical Software 781/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 139.: Loi Binomiale ngative


R 3.0.2

Nous avons vu dans le cours thorique que la loi gomtrique tait en ralit un simple cas
particulier de la loi binomiale ngative (loi discrte). Voyons comment tracer aussi cette
dernire en utilisant les commandes rnbinom( ) et dnbinom( ):

Nous pouvons voir qu'il y a a priori un souci ici car une densit suprieure l'unit cela n'est
normalement pas possible et le regroupement des barres (intervalles) n'est pas des plus
adquats...

Il existe encore une fois une autre manire d'avoir un plus joli rsultat (mais en ralit un peu
incorrecte puisque cela peut donner l'impression que la fonction de densit est continue) et qui
utilise la commande lines( ) et density( ) cette dernire tant une mthode d'estimation de
fonction de densit par noyaux et par dfaut utilisant une gaussienne:

R Statistical Software 782/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais l on voit que la ligne de densit devient vraiment n'importe quoi mais au moins la
densit de l'histogramme est juste! Donc bref il y a un compromis trouver (sinon on
augmente le nombre de simulation de 125 10'000 par exemple...).

Puisque la loi binomiale tend vers une loi de Poisson quand le nombre d'essais devient infini
et que la probabilit devient infiniment petite... il nous faut donc l'tudier!

R Statistical Software 783/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 140.: Loi de Poisson


R 3.0.2

Pour la loi Poisson (loi discrte pour rappel) je n'ai ce jour pas trouv mieux que ce qu'il y a
ci-dessous et utilisant les commandes rpois( ) et dpois( ) (c'est un peu particulier car c'est une
loi bien videmment discrte):

L aussi il existe encore une fois une autre manire d'avoir un plus joli rsultat (mais en
ralit un peu incorrecte puisque cela peut donner l'impression que la fonction de densit est
continue) et qui utilise la commande lines( ) et density( ) cette dernire tant une mthode
d'estimation de fonction de densit par noyaux et par dfaut utilisant une gaussienne:

R Statistical Software 784/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais l on voit que la ligne de densit devient vraiment n'importe quoi mais au moins la
densit de l'histogramme est juste! Donc bref il y a un compromis trouver (sinon on
augmente le nombre de simulation de 125 10'000 par exemple...).

La distribution de Poisson tend vers une loi Normale dont l'cart-type est gale l'esprance
et que l'esprance (in extenso l'cart-type) deviennent trs grand. Mais nous avons dj tudi
la loi Normale comme tout premier exemple, nous n'allons donc pas y revenir.

Nous avons dmontr aussi dans le cours thorique que la loi hypergomtrique tait une
gnralisation de la loi binomiale (et donc par extension une gnralisation de la loi
gomtrique). Voyons comment l'obtenir.

R Statistical Software 785/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 141.: Loi Hypergomtrique


R 3.0.2

Donc pour la loi gomtrique (loi discrte pour rappel) en se basant toujours sur la mme
approche que les cas prcdents mais avec les commandes rhyper( ) et dhyper( ), nous
avons:

Nous pouvons voir encore une fois, qu'il y a encore une fois un souci avec le regroupement
des barres (intervalles) qui n'est pas des plus adquats....

Il existe (encore une fois...) une autre manire d'avoir un plus joli rsultat (mais en ralit un
peu incorrecte puisque cela peut donner l'impression que la fonction de densit est continue)
et qui utilise la commande lines( ) et density( ) cette dernire tant une mthode d'estimation
de fonction de densit par noyaux et par dfaut utilisant une gaussienne:

R Statistical Software 786/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bref c'est beaucoup mieux quand mme!

R Statistical Software 787/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 142.: Loi Exponentielle


R 3.0.2

La loi exponentielle (loi continue pour rappel) dcoule de plusieurs manires de la loi de
Poisson comme nous l'avons vu dans le cours thorique. Voyons donc comme l'obtenir
directement et proprement en utilisant les commandes rexp( ) et dexp( ):

ou encore le grand classique:

R Statistical Software 788/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

qui donne:

R Statistical Software 789/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 143.: Loi du khi-2


R 3.0.2

La loi du khi-2 (loi continue pour rappel) dcoule de la loi Gamma comme nous l'avons vu
dans le cours thorique. Voyons donc comme l'obtenir directement et proprement en utilisant
la commande dchisq( ) et on arrte de faire les histogrammes car on a compris le principe!:

qui donne:

R Statistical Software 790/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 791/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 144.: Loi de Student


R 3.0.2

La loi de Student (loi continue pour rappel) dcoule comme nous l'avons dmontr dans le
cours thorique du rapport entre une variable alatoire normalement distribue et la racine
care d'un variable alatoire distribue selon une loi du khi-2. Voyons donc comme l'obtenir
directement et proprement en utilisant la commande dt( ):

Ce qui nous donne:

R Statistical Software 792/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 145.: Loi de Fisher


R 3.0.2

La loi de Fisher (loi continue pour rappel) dcoule comme nous l'avons dmontr dans le
cours thorique du rapport entre deux variables alatoires indpendantes distribue selon une
loi du khi-2. Voyons donc comme l'obtenir directement et proprement en utilisant la
commande df( ):

Ce qui nous donne:

R Statistical Software 793/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 146.: Loi Log-Normale


R 3.0.2

La loi Log-Normale (loi continue pour rappel) dcoule comme nous l'avons dmontr dans le
cours thorique du logarithme d'une variable alatoire Normale (cas trs courant en finance!).
Voyons donc comme l'obtenir directement et proprement en utilisant la commande dlnorm( ):

ce qui donne:

R Statistical Software 794/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 147.: Loi de Weibull


R 3.0.2

La loi de Weibull (loi continue pour rappel) serait donc empirique comme nous l'avons
mentionn dans le cours thorique (cas trs courant en ingnierie!). Voyons donc comme
l'obtenir directement et proprement en utilisant la commande dweibull( ):

Ce qui nous donne:

R Statistical Software 795/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 148.: Loi Gamma


R 3.0.2

La loi Gamma (loi continue pour rappel) serait donc empirique comme nous l'avons
mentionn dans le cours thorique (cas trs courant dans les thories statistiques en gnral!).
Voyons donc comme l'obtenir directement et proprement en utilisant la commande
dgamma( ):

Ce qui nous donne:

R Statistical Software 796/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 149.: Loi Beta


R 3.0.2

La loi Beta (loi continue pour rappel) serait donc peu prs empirique comme nous l'avons
mentionn dans le cours thorique (cas trs courant dans la gestion de projets et certains
modles d'analyse baysienne!). Voyons donc comme l'obtenir directement et proprement en
utilisant la commande dbeta( ):

Ce qui nous donne:

R Statistical Software 797/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 150.: Petite compilation pour comparaisons


R 3.0.2

Voici si jamais une petite commande pour rassembler quelques fonctions de distribution
(ensuite vous de gnraliser en fonction de vos besoins):

R Statistical Software 798/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 151.: Diagramme quantile-quantile Normal (q-q


plot)
R 3.0.2

La commande qqnorm( ) permet de comparer des donnes la distribution Normale


empirique correspondante:

Ou avec les mmes donnes que dans le cours Minitab:

R Statistical Software 799/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 800/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
On peut faire mieux avec le package car et la commande qqPlot( ) non seulement au niveau
de la qualit du visuel mais aussi au niveau du choix des fonctions d'ajustement:

Ce qui donne:

R Statistical Software 801/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

13. Statistiques paramtriques


Nous allons donc voir dans ce chapitre si nous retrouvons les rsultats calculs la main dans
le cours thorique pour voir si les rsultats correspondent aux dmonstrations mathmatiques
dtailles et aussi vrifier s'il y a correspondance avec Minitab, SPSS et MS Excel.

Pour que les choses soient claires, nous ne reviendrons pas dans ce chapitre ni dans celui des
Statistiques non paramtriques sur le problme de la p-value et de ses utilisations fallacieuses
que nous avons longuement dveloppement lors de sances thoriques.

Exercice 152.: Puissance d'un test Z 1 chantillon en


bilatral
R 3.0.2

Calculer la puissance d'un test a priori ou a posteriori est important dans le dmarche
scientifique. Nous allons ici vrifier que nous retrouvons ou non les mmes rsultats que ceux
calculs la main dans le cours thorique ou avec Minitab et MS Excel.

Remarque: Le package que nous allons utiliser contient de nombreux calculs de puissance et
de taille d'chantillon, mais au mme titre que pour le cours Minitab, nous nous limiterons
seulement ce que nous avons dmontr mathmatiquement dans le cours thorique.

Pour cela, nous allons utiliser la commande pwr.norm.test( ) du package pwr:

Donc part que la syntaxe de la commande est pige puisque:


pwr.norm.test , n, , H 2

R Statistical Software 802/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous retrouvons bien les mme rsultats qu'avec Minitab (et donc les mmes conclusions)
simplement affiche automatiquement la courbe de puissance ce qui est bien pratique.

R Statistical Software 803/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 153.: Taille d'chantillon (effectif) d'un test Z en


bilatral
R 3.0.2

Calculer la taille ncessaire d'un chantillon a priori pour avoir une certaine puissance du test
est aussi important dans le dmarche scientifique. Nous allons ici vrifier que nous retrouvons
ou non les mmes rsultats que ceux calculs la main dans le cours thorique ou avec
Minitab et MS Excel.

Pour cela, nous allons encore une fois utiliser la commande pwr.norm.test( ) du package
pwr:

Donc part que la syntaxe de la commande est pige puisque:


pwr.norm.test , P, , H 2

Nous retrouvons bien les mme rsultats qu'avec Minitab (et donc les mmes conclusions)
simplement affiche automatiquement la courbe de puissance ce qui est bien pratique. Nous
pouvons cependant la construire nous mme rapidement avec R:

R Statistical Software 804/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bingo!

R Statistical Software 805/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 154.: Puissance d'un test t 1 chantillon en bilatral


R 3.0.2

Calculer la puissance d'un test a priori ou a posteriori est important dans le dmarche
scientifique. Nous allons ici vrifier que nous retrouvons ou non les mmes rsultats que ceux
calculs la main dans le cours thorique ou avec Minitab et MS Excel.

Pour cela, nous allons utiliser la commande pwr.t.test( ) du package pwr:

Nous retrouvons donc bien les mmes valeurs que dans Minitab et presque les mmes que
celles calcules la main dans le cours thorique.

R Statistical Software 806/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 155.: Rsolution du test t 1 chantillon en bilatral


R 3.0.2

N'ayant pas trouv de fonctions dans quelque package que ce soit pour la rsolution du test Z,
nous allons donc passer directement au t et nous sauterons le calcul de la rsolution du test p
n'ayant pas trouv de package intgrant aussi la fonction.

Donc rappelons d'abord que nous avons obtenu ci-dessus:

Nous avons alors simplement en suivant la mme ligne directrice:

Eh bien en utilisant le package OPDOE et sa fonction delta.t.test( ) nous pouvons en quelque


sorte rebrousser chemin:

R Statistical Software 807/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons bien la diffrence de 2/3 ( une petit erreur d'arrondi prs).

R Statistical Software 808/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 156.: Taille d'chantillon (effectif) d'un test t 1


chantillon en bilatral
R 3.0.2

Calculer la taille ncessaire d'un chantillon a priori pour avoir une certaine puissance du test
est aussi important dans le dmarche scientifique. Nous allons ici vrifier que nous retrouvons
ou non les mmes rsultats que ceux calculs la main dans le cours thorique ou avec
Minitab et MS Excel.

Pour cela, nous allons encore une fois utiliser la commande pwr.t.test( ) du package pwr:

Nous retrouvons donc bien les mmes valeurs que dans Minitab et que celles calcules la
main dans le cours thorique au dixime prs.

Il est intressant de comparer avec le package OPDOE et sa fonction size.t.test( ):

R Statistical Software 809/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 157.: Test d'adquation d'Anderson-Darling (ie


Agostino-Stephens)
R 3.0.2

Nous souhaitons ici simplement vrifier que nous obtenons les mmes rsultats que ceux
obtenus dans Microsoft Excelavec la mthode Monte Carlo (et in extenso vrifier les rsultats
obtenus lors de l'tude thorique du test de d'Anderson-Darling) et Minitab.

En utilisant la commande ad.test( ) et avec les mmes donnes brutes que dans le cours
thorique, nous avons en utilisant le package ADGofTest:

Donc ici nous voyons un norme avantage par rapport Minitab dj: nous pouvons choisir la
distribution selon nos dsirs!

Nous voyons cependant une diffrence significative entre R et Minitab. Mais nous en
connaissons l'origine puisque nous avons fortement critiqu certains aspect du test d'AD
pendant le cours thorique (cependant la conclusion reste la mme).

Il existe un autre package spcialis des les tests de Normalit et qui est nortest mais bon
voil il souffre d'un lger problme comme en atteste la capture d'cran ci-dessous:

R Statistical Software 810/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Accessoirement, rappelons que nous avons vu dans le cours thorique que le test d'ajustement
de Cramer-Von Mises est un cas particulier du test d'Anderson-Darling (il n'y a simplement
pas de dnominateur). Ce test existe aussi sous la commande cvm.test( ) dans le package
nortest mais il souffre du mme dfaut. Effectivement:

R Statistical Software 811/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 158.: Test de normalit de Shapiro-Wilk


R 3.0.2

Nous souhaitons ici vrifier que nous obtenons les mmes rsultats que ceux obtenus dans
Microsoft Excelavec la mthode Monte Carlo (et in extenso vrifier les rsultats obtenus lors
de l'tude thorique du test de Ryan-Joiner) et Minitab.

Rappelons que l'avantage de ce test non paramtrique de normalit (donc bas sur les rangs)
est sa simplicit mais qu'il n'est pas contre pas adapt lorsque que trop de valeurs identiques
se rptent.

En utilisant la commande shapiro.test( ) et avec les mmes donnes brutes que dans le cours
thorique, nous avons:

La sortie est complment diffrente de Minitab au niveau esthtique (c'est bien dommage!)
mais la valeur W et la p-value sont conformes en ordre de grandeur (voir mon livre Minitab
pour les valeurs numriques exacte comparer).

R Statistical Software 812/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 159.: Intervalle de confiance de la moyenne (test Z


un 1 chantillon)
R 3.0.2

Curieusement le test Z n'est pas intgr par dfaut de R. Certes il est extrmement simple de
rcrire la fonction correspondante diront certains (et c'est vrai) mais pour moi ce n'est pas un
argument car dans ce cas on peut aussi prendre le temps de rcrire toutes les tests statistiques
car ils sont tous simples! Donc soit on a un outil qui nous fait gagner du temps systmatique
pour tout soit pour rien mais pas l'entre deux. Pour cela, par exemple, je prfre de loin
Minitab.

Mais le test Z existe quand mme dans le package TeachingDemos mais seulement dans le
cas o les donnes mesures sont connues (et non pas juste le rsum).

Voyons cela avec le mme exemple que dans le cours Minitab, SPSS et Microsoft Excelen
utilisant la commande z.test( ):

Nous retrouvons donc les valeurs de Minitab mais en plus prcis et nous voyons in extenso
que les rsultats avec Microsoft Exceltaient peu prcis.

R Statistical Software 813/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 160.: Test Z de diffrence de la moyenne (test Z un


1 chantillon) en unilatral gauche
R 3.0.2

Il est connu dans un tat que les enfants d'un certain ge ont un poids de 45 kilogrammes et
un cart-type de 13 kilogrammes (esprance et cart-type de la population). Un plainte est
pose par des parents d'lves comme quoi les enfants d'une cole sont sous-aliments. Pour
cela les parents d'lves s'appuient sur le fait que 25 enfants du mme ge ont un poids moyen
de de 40.5 kilogrammes.

Vrifions si ce sous-poids est significativement infrieur comme dans le cours thorique et


voyons si nous obtenons le mme rsultat qu'avec Microsoft Excelet Minitab:

Nous pouvons donc bien constater que nous obtenons les mmes rsultats que ceux calculs
la main et que dans des logiciels comme Microsoft Excel et Minitab.

R Statistical Software 814/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 161.: Test Z de diffrence la moyenne deux


chantillons en bilatral
R 3.0.2

Au mme titre que les versions gales ou infrieures Minitab 17 il n'existe malheureusement
pas de test Z pour la diffrence de la moyenne de deux chantillons dont les cart-types de la
popluation sont connus. Donc comme aucun package contenant ce texte ne m'est connu nous
allons simplement utiliser et rcrire avec le langage de script R le relations mathmatiques
dmontres dans le cours.

D'abord dans un fichier script nous crivons:

Ensuite nous excutons ce script:

Nous chargeons les donnes du cours thorique:

R Statistical Software 815/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite nous l'intgrons dans notre fonction:

ToDo: Faire le test Z en pour la gnraliser avec un cible (target) comme dans le cours
thorique et pour pouvoir comparerer avec l'utilitaire d'analyse de Microsoft Excel.

R Statistical Software 816/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 162.: Test Z par MonteCarlo


R 3.0.2

Le but de cet exercice est plus pdagogique qu'autre chose. Imaginons effectivement que vous
connaissez les estimateurs de la moyenne et l'cart-type d'une loi Normale et la taille de
l'chantillon que vous allez mesurer.

La question pourrait tre alors simplement la suivante: si je tirais au hasard des individus
d'une telle population (simulable par du Monte Carlo en thorie), quelle est la probabilit
cumule (ou 1 la p value) que ma mesure dpasse une certaine valeur seuil.

Nous avons alors dans le cas particulier unilatral la possibilit d'utiliser la fonction
as.randtest( ) du package ade4. Ce qui donne:

R Statistical Software 817/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 163.: Intervalle de confiance de la moyenne (test t


un 1 chantillon)
R 3.0.2

L encore nous allons vrifier la conformit des rsultats avec toujours les mmes logiciels et
les calculs effectus la main suite la dmonstration mathmatique faite dans le cours
thorique.

Le test de Student 1 chantillon est lui intgr par dfaut dans R mais l encore seulement si
les donnes brutes sont disponibles (encore une fois c'est dommage mais bon...).

Nous utilisons donc la commande t.test( ):

et l nous sommes en conformit avec Minitab (mais ce dernier ne donne pas la p-value) et
Microsoft Excel(avec qui on retrouvait toutes les valeurs).

Nous retrouvons donc les bons rsultats avec les mmes conclusions.

R Statistical Software 818/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 164.: Test t-Student bilatral d'un chantillon


R 3.0.2

Comme d'habitude nous allons contrler que nous obtenons les mmes rsultats que ceux
calculs la main ou avec Microsoft Excelet Minitab aprs la dmonstration mathmatique
du test dans le cours thorique. Nous utiliserons les mmes donnes de mesures et la
commande t.test( ):

Nous retrouvons les mmes valeurs avec les mmes conclusions!

R Statistical Software 819/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 165.: Test t-Student pour donnes apparies


R 3.0.2

L encore nous allons vrifier la conformit des rsultats avec toujours les mmes logiciels et
les calculs effectus la main suite la dmonstration mathmatique faite dans le cours
thorique.

Nous utilisons donc la commande t.test( ):

Les rsultats sont donc conformes la diffrence que la p-value est extrmement prcise dans
R...

Nous retrouvons donc les bons rsultats avec les mmes conclusions.

R Statistical Software 820/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 166.: Test t-Student homoscdastique bilatral


d'galit de la moyenne
R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Minitab et toujours avec les mmes
donnes.

Nous utilisons donc la commande t.test( ):

Nous retrouvons donc les mmes valeurs que Minitab et MS Excel. la diffrence que
Minitab donne des informations que R ne donne pas et rciproquement (alors qu'avec
Microsoft Excelon pouvait bien videmment avoir toutes les informations).

Nous retrouvons donc les bons rsultats avec les mmes conclusions.

R Statistical Software 821/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 167.: Test du ratio des moyennes de Fieller


R 3.1.1

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours concernant le ratio de deux moyennes et son intervalle de confiance.

En utilisant les mmes donnes que pour l'exemple prcdent, nous obtenons (attention!!! le
"rho" de cette fonction n'est pas la corrlation mais l'hypothse nulle hummm
hummm):

Ce qui corresond peu prs aux calculs faits la main o nous avions obtenu:

2
X X a
g g 1 g
Y Y b
1,2 0.987,1.084
1 g

Malheureusement nous sommes obligs de mettre des vecteurs dans la fonction de ce package
ce qui limite son utilisation.

ToDo: Trouver une manire de contourner le faire de devoir mettre les vecteurs avec les
valeurs sources.

R Statistical Software 822/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 168.: Test t-Student htroscdastique bilatral


d'galit de la moyenne (test de Welch)
R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Minitab et toujours avec les mmes
donnes.

Nous utilisons donc la commande t.test( ):

Nous retrouvons donc peu prs les mmes valeurs que Minitab et MS Excel. la diffrence
que Minitab donne des informations que R ne donne pas et rciproquement (alors qu'avec
Microsoft Excelon pouvait bien videmment avoir toutes les informations).

Nous retrouvons donc les bons rsultats avec les mmes conclusions.

R Statistical Software 823/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 169.: Taille d'chantillon (effectif) d'un test p


(proportion) 1 chantillon en bilatral
R 3.0.2

Calculer la taille ncessaire d'un chantillon a priori pour avoir une certaine puissance du test
est aussi important dans le dmarche scientifique. Nous allons ici vrifier que nous retrouvons
ou non les mmes rsultats que ceux calculs la main dans le cours thorique ou avec
Minitab et MS Excel.

Pour cela, nous allons encore une fois utiliser la commande pwr.p.test( ) du package pwr:

Nous retrouvons donc bien les mmes valeurs que dans Minitab et toujours la mme
diffrence qu'avec ce que nous avons calcul la main dans le cours thorique.

R Statistical Software 824/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 170.: Taille d'chantillon (effectif) d'un test p


(proportion) 2 chantillons en bilatral
R 3.0.2

Calculer la taille ncessaire d'un chantillon a priori pour avoir une certaine puissance du test
est aussi important dans le dmarche scientifique. Nous allons ici vrifier que nous retrouvons
ou non les mmes rsultats que ceux calculs la main dans le cours thorique ou avec
Minitab et MS Excel.

Imaginons que nous souhaiterions mettre en vidence une diffrence de 20% dans une tude
(ou sondage) o nous nous attendons avoir 50% de proportion exprimentale (donc une
proportion de comparaison de 50-20=30%)

Pour cela, nous allons encore une fois utiliser la commande pwr.2p.test( ) du package pwr:

Nous retrouvons donc bien les mmes valeurs que dans Minitab et toujours la mme
diffrence qu'avec ce que nous avons calcul la main dans le cours thorique.

R Statistical Software 825/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 171.: Test de Poisson un chantillon


unilatral/bilatral
R 3.0.2

Nous allons voir ici si nous retrouvons encore une fois les mmes valeurs que celles calcules
dans le cours thorique la main ainsi que dans Minitab.

Nous partirons des mmes exemples que dans le cours thorique.

Nous utilisons la commande native poisson.test( ) et en bilatral pour dterminer pour une
compagnie d'aviation ayant eu 2 deux crashs en 1'000'000 de vols (vnement trs rare),
quelle est l'intervalle de confiance en bilatral 95% sachant qu'au niveau mondial le nombre
d'accidents par millions est de 0.4.

Donc l nous retrouvons les mmes valeurs que dans le cours Minitab globalement, mais par
contre pour la borne de gauche de l'intervalle, comme nous l'avons dj mentionn dans le
cours Minitab, le rsultat ne correspond pas avec nos calculs faits la main. Nous avions
cependant montr dans le cours thorique quels taient les calculs effectus en ralit dans
l'algorithme (cependant sans en trouver la dmonstration).

Maintenant procdons l'exemple unilatral fait aussi dans le cours Minitab avec les non-
conformes.

Une socit fabrique des tlvisions en quantit constante et a mesur le nombre d'appareils
dfectueux produits chaque trimestre pendant les dix dernires annes (donc 4 fois 10
mesures = 40 trimestres). La direction dcide que le nombre maximum acceptable d'units
dfectueuses est de 20 par trimestre et souhaite dterminer si l'usine satisfait ces exigences

R Statistical Software 826/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
(sous l'hypothse que la distribution des dfectueux suive une loi de Poisson) un niveau de
confiance de 5%.

Nous obtenons donc exactement le mme rsultat qu'avec Minitab!

R Statistical Software 827/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 172.: Test de Poisson de la diffrence de deux


moyenne
R 3.2.0

Nous reproduisons comme l'habitude l'exemple du cours thorique et fait avec Minitab et
la main:

Une compagnie d'aviation a eu 2 deux crashs en 1'000'000 de vols (vnement trs rare). Une
autre compagnie a eu 3 crashs en 1'200'000 vols. Quel est l'intervalle de confiance en bilatral
95% en supposant que la diffrence devrait tre nulle.

Minitab nous donnait pour info:

R n'implment pas cette mthode ce jour avec les hypothses sous-jacente du modle que
nous avons vu dans le cours thorique (hypothse de continuit, stabilit de la loi de Poisson).

Par contre, la fonction study.exact( ) du package exactmeta bien le test de Poisson de la


diffrence des moyennes mais sans correction de continuit et comme nous pouvons le voir le
rsultat est significativement diffrent de la sortie de Minitab et des calculs effectus la main
mme si la conclusion reste la mme dans ce cas particulier (j'ai par ailleurs manifest mon
scepticisme des hypothses utilises pour construire le de ce test dans le cours thorique
donc comme quoi).

R Statistical Software 828/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 829/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 173.: Intervalle de confiance de l'cart-type (test du


khi-2 de la variance)
R 2.9.0

Nous voulons dterminer l'intervalle de confiance de cette variance (c'est comme-si nous
cherchions comparer avec un ratio o nous avons 1 au dnominateur) en utilisant la fonction
sigma2.test du package sigma2tools.

Un chantillon de 9 vis a t tir d'une ligne de production et la mesure de leur diamtre en


[mm] a t reporte ci-dessous:

et tout est parfait! Nous retrouvons les mmes rsultats que dans le cours thorique et qu'avec
Microsoft Excelet Minitab.

R Statistical Software 830/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 174.: Comparaison de proportions sur une mme


population (test binomial exact)
R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Minitab et toujours avec les mmes
donnes.

Nous utilisons donc la commande binom.test( ):

Nous retrouvons donc exactement les mmes donnes que celles calcules la main et dans
Microsoft Excelet Minitab (nous parlons alors parfois de test binomial exact de Clopper-
Pearson).

Nous retrouvons donc les bons rsultats avec les mmes conclusions.

R Statistical Software 831/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 175.: Intervalle de confiance de la proportion


R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Minitab et toujours avec les mmes
donnes.

Nous utilisons donc la commande prop.test( ) avec ou sans correction de Yates:

Dans les deux cas, nous voyons que nous ne retrouvons pas le mme rsultat que les calculs
faits la main et dans Microsoft Excelpour l'intervalle de confiance (mais pour le reste c'est
OK...). Il y a une diffrence d'environ 10% en ce qui concerne les bornes c'est donc non
ngligeable.

R Statistical Software 832/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 176.: Comparaison de proportions sur 2 chantillons


indpendants
R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Minitab et toujours avec les mmes
donnes.

Nous utilisons toujours la commande prop.test( ) sans correction de Yates:

Doc nous ne retrouvons videmment pas la mme chose que dans Minitab et dans Microsoft
Excelpuisque nous y avions fait une approximation par la loi Normale alors que R fait une
approximation par la loi de Khi-2 (bon la conclusion reste toutefois le mme dans ce cas
particulier).

Si nous faisons comme Minitab immdiatement un test exact de Fisher (Minitab le fait
automatiquement), nous avons avec R en utilisant la commande fisher.test( ):

R Statistical Software 833/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le mme rsultat et la mme conclusion qu'avec Minitab et MS Excel.

R Statistical Software 834/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 177.: Test de Fisher d'galit des variances


R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Minitab et toujours avec les mmes
donnes.

Nous utilisons donc la commande var.test( ):

Nous retrouvons donc peu prs les mmes valeurs que Minitab et MS Excel. la diffrence
que Minitab donne des informations que R ne donne pas et rciproquement (alors qu'avec
Microsoft Excelon pouvait bien videmment avoir toutes les informations).

R Statistical Software 835/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 178.: Test de Levene d'galit de deux variances


R 3.0.2

Nous continuons donc avec le contrle de conformit avec les dmonstrations mathmatiques
faites en cours et les calculs faits la main et dans Microsoft Excel(Minitab n'ayant pas le test
de Levene mais de Brown-Forsythe mme s'il indique le contraire) et toujours avec les mmes
donnes.

Nous utilisons donc la commande leveneTest( ) du package car en prparant les donnes
avec une structure peut triviale:

Nous retrouvons donc exactement les mmes valeurs que celles calcules dans MS Excel.

Voyons maintenant avec la variante robuste de Brown-Forsythe pour voir si l encore nous
retrouvons les mmes rsultats (et bien videmment avec les mmes conclusions). Nous
allons devoir utiliser la commande levene.test( ) du package lawstat:

R Statistical Software 836/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous retrouvons donc bien la mme chose la diffrence que R donne la statistique et la p-
value avec plus de prcision (comme chaque fois quoi!).

R Statistical Software 837/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 179.: Robustesse de tests statistiques


R 3.0.2

Nous allons voir ici comme il est facile de mettre en oeuvre avec R ce que nous avons fait
dans le cours Microsoft Excelet qui consistait tester la robustesse de certains tests simples
ou particulirement complexes.

Nous n'allons pas ici refaire un exemple d'application pour chacun des tests (qu'ils soient
paramtriques ou non paramtriques comme nous l'avions fait dans le cours MS Excel) car ce
serait probablement plus ennuyeux qu'autre chose pour le lecteur.

Afin de gagner du temps aussi de mon ct (car je dteste recrer la roue except si ce n'est
pour faire mieux), j'ai reprise l'exemple mot pour mot, lettre par lettre du e-book de
Vincent ZOONEKYND dont le but est de tester la robustesse du test de Student la non
normalit des donnes (avec une distribution uniforme au lieu de Normale) et pour lequel il
faudrait alors normalement utiliser un test non paramtrique de type Wilcoxon U.

Donc nous y allons pour faire 1'000 tests de Student pour chantillons indpendants en
bilatral et faire la moyenne des p-value qui sont au-del de 5% (soit les vrais positifs dans le
cas prsent):

Donc nous avons 94.9% de vrais positifs. Donc le test est robuste pour une distribution
uniforme qui est non pathologique relativement la loi Normale. Ent tout cas cela donne
l'approche de la mthode pour gnraliser ensuite tout autre test.

Nous pouvons faire de mme avec l'intervalle de confiance (observez bien l'approche
smantique car c'est trs pertinent!):

R Statistical Software 838/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 839/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 180.: Transformation de Box-Cox


R 3.0.2

Ici nous allons juste contrler que nous retrouvons le mme rsultat de transformation
(empirique) de Box-Cox que dans le cours Minitab. Nous utilisons pour cela un fichier
contenant 125 mesures toutes positives dfinies dans une seule colonne et utilisons la
commande powerTransform( ) du package car:

Donc cette commande suggre que peut normaliser cette variable en la mettant la puissance
0.0318. Nous retrouvons donc la mme valeur que dans Minitab la diffrence que R est
beaucoup plus prcis et donne la p-value de l'utilit de la transformation.

Nous pouvons ensuite utiliser notre connaissance des graphiques pour observer le rsultat
qualitativement:

R Statistical Software 840/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 841/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 181.: Transformations de Johnson


R 3.0.2

Bon le but ici ne sera pas de dbattre de la justesse de ces transformations (ou de leur origine
scientifique) qui ont donc pour rappel de "normaliser"13 des donnes. Ceci a aussi dj t fait
en cours et de plus, il suffit de Googler un peu pour se faire sa propre opinion sur cette
technique "d'ingnierie statistique".

Les transformations proposes sont les mmes que pour Minitab mais avec une notation
diffrentes pour les coefficients. Donc si jamais voici un extrait du package:

Nous reprenons donc les mmes donnes que pour la transformation de Box-Cox et utilisons
la commande JonhsonFit( ) du package SuppDists:

13
Dans le sens: faire que la distribution ressemble le plus possible une loi Normale

R Statistical Software 842/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc dj nous pouvons remarquer que ce package propose SL comme tant la meilleure
transformation alors que Minitab propose SB... Pour comparaison Minitab donnait:

Et nous pouvons faire le mme type d'analyse graphique qu'avec celle vue lors de notre tude
de la tranformation de Box-Cox.

R Statistical Software 843/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 182.: ANOVA (Analyse de la Variance)


Nous le savons, le nombre d'ANOVA possibles et imaginables existe en grand nombre. Nous
allons donc ici uniquement nous concentrer sur celles tudies et dmontres en dtails dans
le cours thorique.

Avant de commencer juste en petit rappel sur la notation dans R des modles de rgression
s'avre aprs exprience indispensable:

Syntaxe Lecture
Z ~ X Y Le modle est suppos du type Z i X i Yi
Z ~ X *Y Le modle est suppos avec interactions du type Z i X i Yi X i Yi
Z ~ X /Y Le modle est suppos avec interactions imbriqu Z i X i X i Yi
Z ~ X :Y Le modle est seulement avec interactions Zi X i Yi
D'autres exemples suivront si besoin
Tableau 2 Syntaxe pour les ANOVA

R Statistical Software 844/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 1.: ANOVA un facteur fixe (ANOVA-1 canonique) empil


R 3.0.2

Imaginons une entreprise faisant les trois huit. Nous avons trois quipes qui travaillent sur une
mme machine. Nous souhaitons vrifier avec un seuil de confiance de 95% s'il y a une
diffrence de productivit moyenne entre les trois quipes sur une semaine de travail.

Nous allons vrifier que nous retrouvons bien les valeurs calcules la main dans le cours
thorique ainsi que dans le cours Microsoft Excelet Minitab en utilisant les mmes donnes:

Dj avant de sortir l'artillerie lourde une analyse qualitative peut parfois suffire:

R Statistical Software 845/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc une analyse plus pousse se justifie bien! Nous utilisons alors la commande native
aov( ) de R:

R Statistical Software 846/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous retrouvons donc bien les rsultats de tout ce que nous avons calcul dans le cours
thorique et Microsoft Excelet Minitab mais avec par contre moins d'informations.

La commande plot.design( ) nous permet aussi d'afficher les effets moyens sous une autre
forme que les box-plot:

R Statistical Software 847/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 2.: ANOVA un facteur fixe (ANOVA-1 canonique)


dsempil
R 3.1.2

Pour le cas o les donnes sont dsempiles, considrons l'exemple vu dans le cours thorique
et que nous retrouverons lors de notre tude de la rgression:

Nous devons donc restructurer les donnes pour R avec la fonction stack( ):

R Statistical Software 848/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous pouvons faire l'ANOVA 1 facteur fixe:

R Statistical Software 849/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le rsultat bien que peu explicite est cependant bien conforme aux calculs effectus dans le
cours thorique.

R Statistical Software 850/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 3.: ANOVA deux facteurs fixes (ANOVA-2 canonique) sans


rptitions avec ou sans interactions
R 3.0.2

Imaginons une entreprise faisant les trois huit. Nous avons trois quipes qui travaillent sur une
mme machine. Nous souhaitons vrifier avec un seuil de confiance de 95% s'il y a une
diffrence de productivit moyenne entre les trois quipes sur une semaine de travail
(hypothse que les moyennes sont gales).

Remarque: La variable est donc la Machine et sa modalit a trois niveaux!

Nous allons donc ici appliquer la thorie vue en cours et vrifier si les rsultats sont les
mmes que dans Minitab et MS Excel. Nous utiliserons videmment les mmes donnes:

Nous pouvons d'abord faire une analyse qualitative avec le package ggplot2:

R Statistical Software 851/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec la commande native plot.design( ):

R Statistical Software 852/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons alors d'abord en utilisant la commande native aov( ) native R pour avoir le
modle sans interactions:

R Statistical Software 853/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc les mmes valeurs qu'avec Minitab et MS Excel.

Pour le modle avec interactions (videmment impossible dans le cas prsent pour un logiciel
de communiquer les statistiques puisqu'il n'y a pas de rptitions):

R Statistical Software 854/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande native interaction.plot( ) nous pouvons avoir les diagrammes


d'interactions:

R Statistical Software 855/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et respectivement:

R Statistical Software 856/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut faire plus lgant:

R Statistical Software 857/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou pour revenir avec aux machines avec un visuel plus proche de celui de Minitab mais aussi
meilleur que ce dernier:

R Statistical Software 858/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 859/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 4.: ANOVA deux facteurs fixes (ANOVA-2 canonique) avec


rptitions (rplications) avec ou sans interactions
R 3.0.2

Imaginons une entreprise faisant les trois huit. Nous avons trois quipes qui travaillent sur une
mme machine. Nous souhaitons vrifier avec un seuil de confiance de 95% s'il y a une
diffrence de productivit moyenne entre les trois quipes sur une semaine de travail
(hypothse que les moyennes sont gales).

Remarque: La variable est donc la Machine et sa modalit a trois niveaux!

Nous allons donc ici appliquer la thorie vue en cours et vrifier si les rsultats sont les
mmes que dans Minitab et MS Excel. Nous utiliserons videmment les mmes donnes:

Nous pouvons d'abord faire une analyse qualitative avec le package ggplot2:

R Statistical Software 860/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons alors d'abord en utilisant la commande native aov( ) native R pour avoir le
modle sans interactions:

R Statistical Software 861/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc les mmes valeurs qu'avec Minitab et MS Excel.

Pour le modle avec interactions:

R Statistical Software 862/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande native interaction.plot( ) nous pouvons avoir les diagrammes


d'interactions:

R Statistical Software 863/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 864/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 5.: Comparaisons multiples du test de Student avec


correction de Bonferroni
R 3.0.2

Dans le cours thorique nous avons mentionn la possibilit d'utiliser la technique de


Bonferroni avec le test de Student. Par ailleurs, nous avons mme dmontr
mathmatiquement l'origine de la correction du niveau de seuil tel que propos par
Bonferroni. Nous n'avons pas pu mettre en oeuvre cette technique dans Minitab. Voyons
comment alors grer cela avec R.

Remarque: Nous verrons juste aprs un test quivalent considr comme plus robuste qu'est le
test de (l'tendue) Tukey HSD.

Nous partons des mmes donnes que dans le cours thorique et que l'ANOVA 1 facteur
fixe faite plus haut:

et nous utilisons la commande native pairwise.t.test( ) de R:

R Statistical Software 865/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le rsultat peut surprendre dans le cas prsent mais c'est simplement que la diffrence n'est
jamais significative et donc que les p-value sont in extenso trs proches de l'unit.

R Statistical Software 866/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 6.: Test de (l'tendue) de Tukey HSD


R 3.0.2

Ici, nous allons vrifier si les concepts dmontrs dans le cours de statistique thorique
concernant le test de Tukey sont appliqus de faon identique dans R par rapport Minitab.

Nous n'avons pas en classe dans le cours thorique simul les distributions de l'tendue
studentise plus par flemme que par manque de temps (les simulations de Monte-Carlo se
basant toujours sur le mme principe...), donc il n'y aura pas de comparaison par rapport avec
MS Excel. Nous ferons ici juste une vrification des rsultats renvoys par Minitab en
utilisant les tables des tendues studentises.

Nous partons des mmes donnes que dans le cours Minitab et que l'ANOVA 1 facteur fixe
faite plus haut:

Et ensuite nous utilisons la commande native TukeyHSD( ) de R:

R Statistical Software 867/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons bien les mmes valeurs que dans le cours Minitab avec un visuel plus sobre
et donc moins confus et donc aussi avec les mmes conclusions.

Qu'il n'y a priori pas d'option (contrairement Minitab) pour faire un test par paire
individuelles avec le taux d'erreur individuel de Fisher.

R Statistical Software 868/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 7.: Test de Levene et Bartlett d'galit des variances d'une


ANOVA canonique
R 3.0.2

L'objectif ici va tre le cas plus intressant d'application du test de Levene aux donnes d'une
ANOVA empile et de vrifier encore une fois si les rsultats sont conformes aux
simulations de Monte-Carlo effectues dans le cours thoriques et l'application numrique
effectue dans Microsoft Excelet Minitab.

Nous allons donc ici rutiliser le test de Levene testLevene( ) du package car vu plus haut
mais donc aussi le test Bartlett qui sera nouveau dans le cas prsent.

Commenons par le cas du test de Levene:

Nous retrouvons donc les mmes valeurs qu'avec Minitab (et donc avec les mmes
conclusions) ou que dans le cours thorique.

Mme si nous n'avons pas fait la dmonstration du test de Bartlett en cours puisque les dtails
de celle-ci est introuvable dans les livres et mme dans l'article d'origine de Bartlett lui-mme
(donc si quelqu'un la dmonstration dtaille qu'il se manifeste!) regardons quand mme si
nous retrouvons la mme valeur qu'avec Minitab en utilisant la fonction bartlett.test( ):

R Statistical Software 869/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc bien que ce soit beaucoup plus prcis c'est le mme rsultat que celui donn par
Minitab.

R Statistical Software 870/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 8.: ANOVA Imbrique (embote)/Hirarchique complte


R 3.1.1

Non sans mal nous avons dmontr dans le cours thorique le concept et les dveloppements
relatifs l'ANOVA hirarchique complte (full hierarchical ANOVA). Nous allons vrifier ici
que nous obtenons les mmes rsultats que Minitat et surtout du NIST lui-mme.

Donc en partant de l'exemple du lien suivant:

http://www.itl.nist.gov/div898/handbook/ppc/section2/ppc233.htm

qui contient cette ANOVA hirarchise:

Machines
1 2 3 4 5
0.125 0.118 0.123 0.126 0.118
Operator 0.127 0.122 0.125 0.128 0.129
Day 0.125 0.120 0.125 0.126 0.127
0.126 0.124 0.124 0.127 0.120
0.128 0.119 0.126 0.129 0.121
0.124 0.116 0.122 0.126 0.125
0.128 0.125 0.121 0.129 0.123
Operator
0.127 0.119 0.124 0.125 0.114
Night
0.126 0.125 0.126 0.130 0.124
0.129 0.120 0.125 0.124 0.117

Donc avec le fichier suivant:

R Statistical Software 871/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons alors trs subtilement:

Nous pouvons voir que R ne renvoie pas la ligne des totaux ni le deuxime test de Fisher mais
sinon le reste de sortie correspond bien la documentation du NIST:

R Statistical Software 872/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour combler cette lacune nous allons alors procder en deux tapes. La premire ci-dessus a
nous a permis d'obtenir le premier test de Fisher, celle ci-dessous nous permet d'obtenir la
deuxime:

Sinon la conclusion est la mme qu'avec Minitab car ce dernier nous affichait les p-value pour
les deux tests de Fisher: Les Machines sont le seul facteur significatif donc les seules
amliorations doivent tre procdes sur l'outil et non sur l'humain.

R Statistical Software 873/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 9.: ANOVA Carr Latin


R 3.1.1

R ne propose pas explicitement au mme titre que Minitab de type d'ANOVA qui dans le
cadre des plans d'expriences pourrait tre utilis pour chercher la combinaison optimale
donc il va tre difficile de l'optimiser La seule chose que nous pouvons faire a priori c'est
une analyse de la variance d'o la prsence de ce sujet dans le chapitre des ANOVA.

Nous allons comme l'habitude reproduire l'exemple du cours thorique et vrifier que nous
obtenons bien les mmes rsultats que ceux calculs la main et obtenus avec Minitab. Pour
cela, nous partons des donnes suivantes reproduisant le tableau carr latin du cours
thorique:

Considrons par exemple le cas d'une analyse de rapidit de 4 vhicules diffrents {1,2,3,4}
par 4 pilotes diffrents {I,II,III,IV} sur 4 routes diffrentes {A, B, D, C} et les valeurs
mesures sont les consommations de carburant pour parcourir une distance fixe:

Vhicules
1 2 3 4
I A B D C
19 24 23 26
II D C A B
Pilotes

23 24 19 30
III B D C A
15 14 15 16
IV C A B D
19 18 19 16

Dans R nous importons un fichier CSV structur comme le montre la capture d'cran ci-
dessous:

R Statistical Software 874/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Remarquons que nous pouvons reconstruire le carr latin (bon ici il est transpos mais cela ne
change rien sur le fond):

R Statistical Software 875/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons faire une analyse qualitative avec les botes moustache:

Nous pouvons dj constater ci-dessous que les pilotes on une influence certaine alors que
pour les autres rien n'est moins sr ce que nous verifierons avec les tests de Fisher:

R Statistical Software 876/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant nous faisons l'ANOVA du carr Latin:

Nous retrouvons bien les valeurs calculs la main! Avec les mmes conclusions: Seuls les
pilotes influencent significativement le temps coul!

R Statistical Software 877/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 10.: ANCOVA (Analyse de la Covariance)


R 3.1.1

Notre but ici est de vrifier si nous robtenons bien les rsultats des calculs effectus la
main dans le cours thorique et ce avec quel niveau de dtails.

D'abord, nous reprenons les donnes du cours thorique qui sous forme esthtique est donne
pour rappel par:

Mthode A Mthode B
Sujet Xa Ya Sujets Xb Yb
a1 5 20 b1 7 19
a2 10 23 b2 12 26
a3 12 30 b3 27 33
a4 9 25 b4 24 35
a5 23 34 b5 18 30
a6 21 40 b6 22 31
a7 14 27 b7 26 34
a8 18 38 b8 21 28
a9 6 24 b9 14 23
a10 13 31 b10 9 22
Moyenne 13.1 29.2 18.0 28.1

Ce qui nous donne dans R:

R Statistical Software 878/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite nous utilisons pour simplifier la procdure la commande ancova( ) du package HH


pour obtenir:

R Statistical Software 879/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

C'est un peu basique comme rsum puisqu'il n'y aucun test post-hoc mais bon sinon nous
retrouvons bien les rsultats calculs dans le cours thorique main avec la mme conclusion!

Pour avoir la partie de la rgression de Minitab nous utilisons subtilement la commande


contrasts( ) conjointement avec aov( ) et lm( ):

R Statistical Software 880/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 881/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 11.: MANOVA


R 3.1.1

Nous allons nouveau contrler que nous obtenons bien certain lments calculs la main
dans le cours thorique.

D'abord nous prparons le jeu de donnes en consquence:

Ensuite, nous calculons les moyennes de chacun de variables dpendantes pour chacun des
groupes:

Nous obtenons bien les caluculs effectus la main.

R Statistical Software 882/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, rien ne nous empche de faire une analyse graphique visuelle:

Nous pouvons dj constater qu'entre les varibles dpendantes ET entre les variables
indpendantes il y dans les deux cas des variations qui semblent tre trs fortes.

Pour la suite, nous utilisons la foncation native manova( ) de R:

R Statistical Software 883/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc conformment ce que nous pouvions nous attendre, nous rejetons l'hypothse nulle.

R Statistical Software 884/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 183.: ACP (Analyses en Composantes Principales)


paramtrique
R 3.0.2

Nous allons ici vrifier que nous retrouvons les rsultats de Minitab et obtenus avec Microsoft
Excelavec les relations obtenues lors des dmonstrations mathmatiques de la mthode dans
le cours thorique. Nous reprenons donc les donnes partielles des Iris de Fisher (histoire de
faire original...):

Remarque: Rappelons que l'ACP est trs utilise aussi en finance!

Nous avons donc en utilisant la commande prcomp( ):

R Statistical Software 885/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc part la premire ligne que nous n'avons pas calcule dans le cours thorique (et que
Minitab ne donne pas), le reste est parfaitement conforme aux calculs faits la main et dans
Microsoft Excelainsi que dans Minitab.

Ensuite, nous pouvons plotter les valeurs propres ("scree plot14"):

14
Pour rappel il s'agit d'un "scree plot" (en anglais "scree" se sont les boulis qui descendent des montagnes).

R Statistical Software 886/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou plus classiquement:

R Statistical Software 887/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui est parfaitement conforme ce que nous avons obtenu dans les autres cours.

Nous pouvons aussi obtenir la matrice des vecteurs propres (aussi parfaitement conforme):

Nous pouvons galement ploter le diagramme de double projection avec la commande


biplot( ):

R Statistical Software 888/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc ici, contrairement Minitab, nous retrouvons les valeurs telles que calcules dans le
cours thorique la main pour les points par contre pour les vecteurs propres cela est diffrent
de ce que nous avons calcul dans le cours thorique ET diffrent de ce que Minitab ou
MATLAB retournent...

Ou dans un autre style avec la commande ggbiplot( ) package ggbiplot:

R Statistical Software 889/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 890/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ACP (Analyses en Composantes Principales) paramtrique vs SVD


(Dcomposition en Valeurs Singulires)
Nous avons vu dans le cours thorique que l'ACP est intimement lie la SVD. Au fait l'ACP
tant une SVD sur les donnes centres. Voyons cela explicitement avec R!

Donc d'abord revoyons l'ACP identique celle d'avant la diffrence que nous ne centrons
(center=F) ni rduisons (scale=F) les donnes:

Et maintenant effectuons la dcomposition en valeurs singularires:

R Statistical Software 891/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

C.Q.F.D. Nous obtenons bien la mme chose!

R Statistical Software 892/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 184.: Analyse en Composantes Indpendentes (ICA)


WP
R 3.4.1

Donc voici un algorithme dont nous n'avons pas pu voir la dmonstration mathmatique dans
le cours thorique et qui permet contrairement l'ACP qui cherche maximiser la variance,
lui cherche minimiser l'information mutuelle (cf. Thorie de l'information).

D'abord nous chargeons le package fastICA et crons deux signaux ainsi que la matrice de
mlange:

Ensuite nous mixons les deux signaux:

R Statistical Software 893/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite on utilise l'ICA pour retrouver au mieux les signaux d'origine avec la fonction
fastICA( ):

R Statistical Software 894/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et on affiche le rsultat:

R Statistical Software 895/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 896/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 185.: Analyse factorielle exploratoire (AFE)


R 3.0.2

Le but va tre ici de vrifier comme l'habitude que les rsultats calculs la main (et donc
les conclusions y relatives) sont conformes aux dmonstrations mathmatiques faites dans le
cours thorique avec l'exemple particulier que nous avions choisi ainsi que de vrifier s'ils
sont conformes ce que nous avions dans Microsoft Excelet Minitab.

Nous utiliserons la commande fa( ) du package psych qui ncessite lui-mme le chargement
du package GPArotation pour contrler le type de rotation.

D'abord nous montrons les donnes que nous utilisons et la matrice de covariance y relative:

R Statistical Software 897/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

AFE avec mthode ACP sans rotation!


Ensuite, nous lanons l'AFE (ou plus simplement dit "l'analyse factorielle") sans rotation
(rotate="none") avec la mthode factorielle ACP (fm="pa"):

Nous retrouvons donc presque les mmes rsultats que dans le cours thorique et
Minitab/MS Excel. C'est principalement la communalit qui diffre et scores des facteurs
quelques pourcents.

Par contre nous n'avons pas dmontr ni parl dans le cours thorique de toutes les
informations donnes en-dessous des deux tableaux ni de ce paramtre u2 que renvoie R et
qui semble (mais vrifier...) tre simplement 1-h2. De plus les noms choisis par R pour les
colonnes ne sont pas des plus subtils... Il en sera de mme pour les deux autres mthodes que
nous allons voir ci-dessous et qui ont toutes deux dcortiques dans le cours thorique.

R Statistical Software 898/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

AFE avec mthode ACP et rotation VariMax!


Maintenant lanons l'AFE (ou plus simplement dit "l'analyse factorielle") avec rotation
varimax (rotate="varimax") toujours avec la mthode factorielle ACP (fm="pa"):

Donc encore une fois quelques % prs non significatif, nous pouvons considrer les rsultats
identiques ceux de Minitab et Microsoft Excelainsi qu' ceux obtenus dans le cours
thorique.

R Statistical Software 899/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

AFC Analyse Factorielle des Correspondances


Nous allons ici reprendre les valeurs numriques du cours thoriques dont pour rappel la
dmonstration mathmatique et l'origine proviennent entirement de l'ouvrage Analyse de
donnes avec R de F. Husson, S. L et J. Pags (ISBN: 978-2-7535-0938-2).

Nous partons du fichier suivant:

Nous chargeons les donnes en tant que table et nous retrouvons bien la table du cours
thorique:

Le test du chi-2 est donn par:

R Statistical Software 900/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite pour les profils lignes nous avons:

R Statistical Software 901/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et les profils colonnes:

R Statistical Software 902/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous faisons maintenant le plot de l'AFC:

On peut masquer les donnes de colonnes:

R Statistical Software 903/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou masquer les donnes de lignes:

R Statistical Software 904/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons normaliser les donnes en s'occupant d'abord de l'analyse liminant les
colonnes:

R Statistical Software 905/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Idem pour les lignes:

R Statistical Software 906/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le tableur des valeurs propres et le graph correspondant sont donns par:

R Statistical Software 907/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le tableuar des contributions et celui des qualits de reprsentation des ligens et des colonnes
sont obtenus par:

R Statistical Software 908/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Les inerties des lignes et des colonnes sont obtenus directement tandis que les distances au
carr doivent tre recalcules en utilisant la marge ligne et la marge colonne:

R Statistical Software 909/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 186.: Copulas Gaussiens et Student bivaris


R 3.1.1

Nous avons tudi dans le cours thorique les distributions bivaries de la loi Normale et
mentionn les diffrentes variantes des distributions de Student.

Le but ici va tre de gnrer des variables alatoires Normales bivaries dans un premier
temps et de calculer ensuite le meilleur ajustement.

Dans un premier temps nous faisons comme dans le cours thorique en simulant les
ralisations 10'000 variables alatoires uniformes qui sont donc l'inverse d'une distribution
Normale centre rduite bivarie dont le coefficient de corrlation est -0.5 avec la fonction
normalCopula( ) du package copula.

Voici une premire reprsentation pas forcment trs utile (opinion trs personnelle):

Et la page suivante une reprsentation beaucoup plus intressante et remarquez que nous
retrouvons ce que nous avons construit la main dans le cours thorique avec le tableur
Microsoft Excel:

R Statistical Software 910/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons afficher les courbes d'iso-densit:

R Statistical Software 911/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, "amusons-nous" faire de l'ingnierie inverse o depuis les points simuls et en


imposant que nous avons connaissance que c'est un copula Normal centr rduit de dimension
2 (bivari) quel est le valeur du coefficient du corrlation estim l'aide de la fonction
fitCopula( ):

R Statistical Software 912/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou en termes de probabilit cumule:

R Statistical Software 913/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou la densit sous forme de perspective 3D:

Ou la probabilit cumule sous forme de perspective 3D:

R Statistical Software 914/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 915/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

14. Statistiques non paramtriques


Nous allons donc voir dans ce chapitre si nous retrouvons les rsultats calculs la main dans
le cours thorique pour voir si les rsultats correspondent aux dmonstrations mathmatiques
dtailles et aussi vrifier s'il y a correspondance avec Minitab, SPSS et MS Excel.

Exercice 187.: M-estimateurs


R 3.0.2

Comme c'est lmentaire, nous avons dj trait cela la page 142

R Statistical Software 916/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 188.: Rgression quantile linaire (globale)


R 3.0.2

Donc comme vu dans le cours de mthodes numriques, la rgression quantile (uni ou


multivarie) non censure qui fait partie des techniques de rgressions non paramtriques
(avec la rgression boostrap) et qui de mon point de vu est plus une technique numrique
qu'une technique purement statistique sur le fond...

Nous allons ici comparer le rsultat donn par le package quantreg par rapport aux trois
situations calcules avec Microsoft Excel dans le cours thorique:

La rgression linaire paramtrique ordinaire


La rgression linaire OLS des quantiles
La rgression linaire de la dviation absolue des quantiles par optimisation (LAD)

Remarque: Malheureusement le package nlrq de R qui faisait de la rgression quantile non


linaire ne semble plus tre maintenu.... Le lecteur intress pourra aussi avec le package
quantreg faire une rgression quantile par bootstrapping.

Rappelons que cette technique est trs utile en finance et dans le domaine biomdical.
Cependant on lui prfre dans les cas non linaires l'interpolation par spline. Voici par
exemple un cas typique de l'interpolation quantile par spline que nous avons presque tous
connus en tant petit quand nous allions chez le docteur pour mesurer notre taille en fonction
de notre ge:

R Statistical Software 917/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 918/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Bon ce rappel tant fait, nous partons du mme jeu de donnes fictifs que dans le cours
thorique:

Maintenant, nous faisons une rgression linaire quantile de la mdiane la commande rq( ) du
package quantreg et regardons ce que nous obtenons par rapport ce que nous avions obtenu
dans Microsoft Excelpour la mdiane:

R Statistical Software 919/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc c'est pas mal du tout par rapport Microsoft Excel! Il en est de mme pour d'autres
quantiles!

Rappel: Il n'y a pas ce jour de mthodes tablies pour calculer correctement l'erreur
standard des rsidus ou un R2 d'une rgression quantile!! Mais si on veut vraiment par
exemple comparer l'erreur standard entre les deux modles:

R Statistical Software 920/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme quoi ce n'est pas toujours le non-paramtrique qui est le meilleur

Maintenant, nous faisons plot de la rgression linaire OLS paramtrique avec des rgressions
linaires quantiles pour diffrents quantiles:

R Statistical Software 921/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme nous pouvons le constater et l'avions fait observer dans le cours de mthodes
numriques, des rgressions quantiles peuvent donc bien se croiser!

R Statistical Software 922/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 189.: Estimateur de Theil-Sen (rgression mdiane)


R 3.3.2

Comme nous l'avons vu dans le cours thorique, cette technique empirique est trs simple
comprendre et mettre en place. Nous allons voir ici qu'elle est disponible dans R bien
videmment et surtout la comparer la rgression quantile vue juste prcdemment.

Donc d'abord nous chargeons le jeu de donnes:

Et ensuite nous utilisons la fonction mblm( ) du package mblm:

R Statistical Software 923/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons faire un plot tout simple:

Ce qui est beaucoup plus intressant par contre c'est que nous pouvons fait un plot de la
densit des pentes:

R Statistical Software 924/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et de la densit des ordonnes l'origine:

R Statistical Software 925/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 190.: Test d'ajustement (indpendance) du khi-2


R 3.0.2

L encore nous allons vrifier la conformit des rsultats avec toujours les mmes logiciels et
les calculs effectus la main suite la dmonstration mathmatique faite dans le cours
thorique.

Nous utilisons donc la commande chisq.test( ):

Nous obtenons donc la mme chose que les calculs effectus avec Minitab, Microsoft Excelet
la main.

De mme si nous spcifions le vecteur des attendus:

R Statistical Software 926/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 927/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 191.: Ajustement d'une loi de Poisson par le Khi-2


R 3.2.0

Nous voulons nouveau vrifier les calculs effectus la main dans le cours thorique (avec
l'aide de MS Excel) et comparer aussi les rsultats avec Minitab.

Donc d'abord, R a comme Minitab pas la possibilit ce jour d'imposer l'esprance de loi de
Poisson donc il va en calculer l'estimateur.

Donc d'abord nous importons le jeu de donnes histoire de pas l'crire la main:

R Statistical Software 928/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous installons le package vcd et utilisons la fonction goodfit( ) de ce dernier pour
dans un premier temps avoir un tableau de frquences observes et thoriques:

Bon c'est bien joli mais ceci c'est conforme aux calculs faits la main mais allons au point qui
nous intresse:

R Statistical Software 929/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous avons bien les mmes rsultats qu'avec Minitab et nous sommes trs proches du calcul
effectu " la main".

R Statistical Software 930/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 192.: Test d'indpendance du Khi-deux d'une table


de contingence
R 3.0.2

L encore nous allons vrifier la conformit des rsultats avec toujours les mmes logiciels et
les calculs effectus la main suite la dmonstration mathmatique faite dans le cours
thorique.

Nous utilisons donc toujours la commande chisq.test( ):

Les rsultats sont donc conformes la diffrence que la p-value est extrmement prcise dans
R...

R Statistical Software 931/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 193.: Test exact de Fisher


R 3.0.2

Mme si nous l'avons vu prcdemment, nous allons toutefois refaire l'exemple vu dans le
cours thorique et que nous avions contrl la main avec Microsoft Excelet Minitab.

Nous prenons les donnes suivantes (les mmes que dans le cours thorique) avec la
commande fisher.test( ):

Nous avons alors:

R Statistical Software 932/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous nous retrouvons avec la mme p-value que dans Minitab et Microsoft Excel la
diffrence que les autre informations n'taient pas donnes par Minitab.

Le test exact de Fisher peut bien videmment tre utilis en machine learning pour mesurer la
performance de classification binaire!

R Statistical Software 933/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 194.: Test de McNemar


R 3.0.2

Nous allons ici encore une fois recalculer l'exemple vu dans le cours thorique et que nous
avions contrl la main avec Microsoft Excelet Minitab.

Nous utilisons alors la commande native mcnemar.test( ) de R:

Nous pouvons faire quelques graphes dont je ne suis vraiment, mais alors vraiment pas un
fan!

Comme le four fold avec la fonction fourfoldplot( ):

R Statistical Software 934/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou le plot d'agrment avec la fonction agreementplot( ) du package vcd:

R Statistical Software 935/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 936/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 195.: Test d'ajustement du khi-deux avec correction


de Yates
R 3.0.2

Bon nous n'allons nous pas nous tendre sur cette technique empirique qui est sujet dbat et
que de plus nous n'avons pas valid avec les techniques de Monte-Carlo dans le cours
thorique et qui n'est pas disponible dans Minitab.

Rappelons que cette technique ne serait approximativement valable que pour des tableaux de
contingences 2 2 dont certaines observations sont infrieures aux 5 units et l'ensemble des
observations infrieures 20 units (d'aprs les tests qui auraient t faits par plusieurs
personnes de la communaut des praticiens de la statistique).

Pour cet exemple nous allons reprendre la petite table utilise pour le test de Fisher.
videmment c'est erron de la faire puisque les diffrentes cases de ce tableau de contingence
sont dpendantes entre elles. Mais bon... c'est juste pour montrer que R va voir qu'il y a un
faible nombre d'observations et va donc in extenso appliquer la correction de Yates.

Nous utilisons donc nouveau la commande chisq.test( ):

Nous pouvons forcer l'interdiction d'utiliser la correction de Yates:

R Statistical Software 937/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 938/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 196.: Coefficient de corrlation de Spearmann


R 3.2.1

Le lecteur pourra se rfrer pour ce dernier la page 1008.

R Statistical Software 939/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 197.: Coefficient de corrlation de concordances des


rangs de Kendall
R 3.0.2

Nous avons donc deux experts qui ont nots des vins. Les notes sont ranges dans l'ordre
croissant des notes et selon le numro d'tiquette d'identifiant du vin (bref le mme exemple
que nous avons utilis aprs avoir fait les dmonstrations mathmatiques de cet indicateur
dans le cours thorique).

Nous avons alors en utilisant la commande cor( ) avec le paramtre kendall:

Le rsultat est juste mais c'est dommage qu'il n'y ait pas d'intervalle de confiance ni de p-
value. Pour cela nous utilisons la fonction native:

R Statistical Software 940/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec la commande Kendall( ) du package Kendall:

Par contre pour la p-value nous sommes loin du compte (mme si la conclusion reste la
mme...).

R Statistical Software 941/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 198.: Kappa de Cohen


R 3.0.2

Encore une fois, le but est d'appliquer les calculs et dmonstrations faits la main pendant le
cours thorique de mthodes numriques et de vrifier que nous retrouvons les mmes valeurs
avec R (et comparer par la mme occasion avec Minitab).

Nous utilisons les mmes donnes que dans le cours thorique:

Et nous utilisons la commande kappa2( ) du package irr:

R Statistical Software 942/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous retrouvons donc la mme valeur de Kappa et de Z que ce que nous avons calcul la
main et obtenu avec Minitab. Par contre la p-value est double dans R par rapport celle de
Minitab. Cela signifie simplement que Minitab fait le test en bilatral alors que R le fait en
unilatral (ce dernier choix me semble personnellement plus pertinent).

Le Kappa de Cohen peut bien videmment tre utilis en machine learning pour mesurer la
performance de classification binaire!

R Statistical Software 943/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 199.: V de Cramr (mesure d'association)


R 3.0.2

Nous partons des mmes donnes que dans le cours thorique:

et nous utilisons la commande assoctats( ) du package vcd:

Et nous n'obtenons pas du tout le mme rsultat que dans le cours thorique ou avec Minitab
mais c'est normal. Effectivement pour robtenir la mme chose, il nous faudra crire:

R Statistical Software 944/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et voil!

Le V de Cramr peut bien videmment tre utilis en machine learning pour mesurer la
performance de classification binaire!

R Statistical Software 945/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 200.: tude de la cohrence avec l'alpha de


Cronbach
R 3.0.2

Comme l'habitude, le but va tre de vrifier ici que nous retombons sur les calculs faits la
main dans le cours thorique suite la dmonstration mathmatique de l'origine de l'alpha de
Cronbach.

Nous allons pour cela utiliser la commande cronbach.alpha( ) du package ltm:

Donc nous retrouvons bien les mmes rsultats que ceux calculs la main et que Minitab.

R Statistical Software 946/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 201.: Test de la somme des rangs signs de Wilcoxon


pour 2 chantillons apparis
R 3.0.2

Nous voulons appliquer le test des rangs signs de Wilcoxon pour 2 chantillons apparis
comme dmontr dans le cours de statistique thorique bien que celui-ci ne soit pas disponible
explicitement dans Minitab et ce afin de comparer au rsultat calcul avec Microsoft
Exceldans le cadre de l'approximation par une loi Normale.

Nous utiliserons pour cela les mmes donnes brutes que dans le cours thorique avec la
commande wilcox.test( ) et d'abord sans approximation:

Nous retrouvons donc exactement les mmes valeurs que dans Minitab (messages
d'avertissement excepts) mais qui comme nous le savons ne correspondant pas ce que nous
avons calcul la main. Donc faisons l'approximation:

R Statistical Software 947/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que cela ne change rien. Certes la valeur V est la mme que dans le cours
thorique mais toujours pas la p-value.

Certes la conclusion est toutefois la mme que dans le cours thorique.

R Statistical Software 948/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 202.: Intervalle de confiance de la mdiane (via test


du signe 1 chantillon)
R 3.0.2

Nous avons effectu une srie de mesures de valeurs continues.

Nous souhaiterions simplement connatre l'intervalle de confiance de la mdiane, le but tant


aussi de contrler que R utilise bien la mthode que nous avions mentionne dans le cours de
statistique thorique et que nous avions mis en pratique la main, dans Microsoft Excelet
dans Minitab.

Nous utilisons la commande SIGN.test( ) du package BSDA o la valeur test par dfaut du
paramtre md est nul si pas spcifi mais la seule chose qui nous intresse ici est l'intervalle!:

Nous retrouvons donc exactement la mme sortie que Minitab.

R Statistical Software 949/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 203.: Test du signe binomial (dixit: test de la mdiane


pour 2 chantillons apparis)
R 3.0.2

Nous avons effectu deux sries de mesures avec deux mthodes diffrentes.

Nous souhaiterions savoir la diffrence sont significatives ou pas. Le but tant aussi de
contrler si nous avons un rsultat diffrent de celui calcul la main en cours et dans
MS Excel.

Nous utilisons la commande SIGN.test( ) du package BSDA o la valeur test par dfaut du
paramtre md est nul si pas spcifi:

Nous retrouvons toutes les valeurs vues dans le cours de statistique thorique et que dans le
cours Minitab. Nous rejetons donc au vu de la p-value (infrieure 5%) que la diffrence n'est
pas significative.

Nous pouvons aussi construire l'quivalent partir du test binomial exact mais en focalisant
uniquement sur la p-value du rsultat renvoy:

R Statistical Software 950/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 951/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 204.: Test de Mood (test des mdianes)


R 3.0.2

Le but du test de Mood n'est pas de contrler si des donnes apparies peuvent tre
considres comme gales ou non en se basant sur leur mdiane (test des signes), mais
simplement de vrifier sur la base d'un tableau de contingence du Khi-deux, si le nombre de
valeurs au-dessus ou en-dessous de la mdiane de deux chantillons est significativement
diffrente et proviennent donc de deux populations diffrentes.

Attention!!! Dans R il existe un test appel test.mood( ) mais cela n'a rien voir avec le test
de Mood des mdianes. Contrairement Minitab, je n'ai pas trouv de test de Mood des
mdianes intgr R ou un package particulier ce jour.

Nous allons voir un exemple et montrer que nous pouvons l'obtenir intgralement partir du
test du signe et du Khi-deux.

R Statistical Software 952/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous retrouvons donc bien les mmes valeurs que dans le cours thorique et qu'avec Minitab
la diffrence que ce dernier donne quelques informations visuelles plus intressantes et que
la manipulation est beaucoup plus simple.

Il existe aussi un test de la mdiane dans le package coin et la commande median_test( ).


D'abord il faut prparer les donnes:

Ce qui donne:

R Statistical Software 953/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et ensuite:

R Statistical Software 954/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que bien que la conclusion soit la mme, le test fait une approximation par la loi
Normale.

Il y a cependant un petit avantage, nous avons automatiquement un intervalle de confiance et


nous constatons que ce dernier n'est pas trs loign de celui renvoy par Minitab.

R Statistical Software 955/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 205.: Test de la somme des rangs signs de Wilcoxon


pour 1 chantillon
R 3.0.2

Encore une fois, nous souhaitons comparer les dmonstrations faites dans le cours de
statistiques thorique avec l'application numrique approxime dans Microsoft Excelet exact
avec Minitab pour comparer avec le rsultat obtenu avec R.

Nous allons utiliser la commande native wilcox.test( ) de R:

Nous retrouvons bien la valeur V gale 26 que Minitab ne nous donnait pas directement. La
p-value est sensiblement diffrente de celle de Minitab et de celle calcule dans le cours
thorique (et rappelons que celle calcule la main dans cours thorique tait aussi
sensiblement diffrente que celle donne par Minitab). Contrairement Minitab, nous avons
cependant un intervalle de confiance ce qui est bien pratique. Concernant l'estimation
ponctuelle de la mdiane, nous retrouvons bien la mme valeur.

R Statistical Software 956/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 206.: Test de la somme des rangs de


(Wilcoxon)Mann-Withney pour deux chantillons
indpendants
R 3.0.2

Comme d'haaaabitudeeee (en chantant...) le but est de voir si nous retrouvons les rsultats
numriques calculs avec Microsoft Excelen utilisant les relations dmontres dans le cours
de statistique thorique.

Par contre nous n'allons par reprendre les mmes valeurs qu'en dans le cours thorique car
l'exemple y tait trop petit (pour des raisons pdagogiques). Nous allons encore une fois
utiliser la commande native wilcox.test( ) de R:

Nous retrouvons la mme p-value, le mme intervalle de confiance et la mme diffrence


ponctuelle que dans le cours thorique et Minitab. Par contre, nous remarquons que
contrairement au cours thorique et Minitab la somme W n'est pas la mme. Ceci n'est pas
grave car nous avons vu dans le cours thorique que nous pouvions prendre la variable que
nous voulions comme base de calcul. Cependant dans le cours thorique, nous avions calcul
respectivement W comme valant 210 pour Y et 114 pour X alors que R donne 119. Cela est
tout fait normal puisque dans le cours thorique nous avions dcid de ne pas faire de
correction empirique concernant les valeurs doubles (oui... il y deux fois la valeur 45 dans les
mesures 2).

R Statistical Software 957/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 207.: Test de la somme des rangs signs de Wilcoxon


pour 2 chantillons apparis
R 3.0.2

Nous voulons appliquer le test des rangs signs de Wilcoxon pour 2 chantillons apparis
comme dmontr dans le cours de statistique thorique. Rappelons que celui-ci ne n'tait pas
disponible explicitement dans Minitab mais que faisant plusieurs manipulations nous avons
tout de mme pu l'obtenir et le comparer au rsultat calcul avec Microsoft Exceldans le cadre
de l'approximation par une loi Normale. Nous allons ici vrifier la correspondance avec R.

Pour cela, nous allons encore une fois utiliser la commande native wilcox.test( ) de R:

Donc part l'intervalle de confiance que Minitab ne donnait pas, nous retrouvons les mmes
valeurs que dans ce dernier. La seule diffrence rside toujours dans la p-value qui est
significativement diffrence que celle obtenue la main dans le cours thorique.

R Statistical Software 958/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 208.: Test d'ajustement de Kolmogorov-Smirnov


R 3.0.2

Cas 1 chantillon
Nous souhaitons ici simplement vrifier que nous obtenons les mmes rsultats que ceux
obtenus dans Microsoft Excelavec la mthode Monte Carlo (et in extenso vrifier les rsultats
obtenus lors de l'tude thorique du test de Kolmogorov-Smirnov) et Minitab.

En utilisant la commande ks.test( ) et avec les mmes donnes brutes que dans le cours
thorique, nous avons pour le test de Kolmogorov-Smirnov dans le cas particulier d'un test de
Normalit:

Donc ici nous voyons un norme avantage par rapport Minitab dj: nous pouvons choisir la
distribution selon nos dsirs!!

Nous n'avons pas la mme valeur de D que Minitab (qui tait 0.212) par contre elle
correspond celle calcule dans le cours thorique la main (idem pour la p-value). En ralit
avec R il y a un petit pige pour retomber sur ce que fait Minitab, il faut crire (ds lors cela
quivaut la variante dite pour rappel de "test d'ajustement de Lilliefor"):

R Statistical Software 959/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et l tout est bon!

Nous pouvons faire une double vrification en utilisant le test de Lilliefor explicitement via le
package nortest et la commande lillie.test( ):

Bien que la valeur D soit la mme, la p-value est trs diffrente! Il faudrait investiguer pour
savoir d'o vient cette diffrence. Peut-tre dans la manire de calculer l'cart-type??? A
suivre...

Cas 2 chantillons
Nous avons mentionn dans le cours thorique l'extension triviale de pouvoir gnraliser le
test de Kolmogorov-Smirnov deux chantillons empiriques. Voyons si R propose cela (nous
n'avais pas fait de calcul la main). Considrons le jeu de donnes suivant:

R Statistical Software 960/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous souhaitons savoir si leur distribution sont significativement diffrentes:

Il semblerait donc que non!

R Statistical Software 961/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 209.: Meilleur ajustement au sens de la maximisation


de la log-vraisemblance
R 3.0.2

Dans le package MASS il y a une commande fitdistr( ) et qui va chercher avec les techniques
classiques d'optimisation non linaire maximiser la log-vraisemblance. Voyons cela avec les
quantits de notre fichier des ventes d'articles en utilisant un script qui excutera les
optimisations de plusieurs distributions d'un seul coup:

R Statistical Software 962/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 210.: Test de Mantel-Haenszel-Cochran


R 3.0.2

Encore une fois nous allons vrifier que nous retrouvons bien le mme rsultat que ce que
nous avons obtenu dans le cours thorique lors des calculs la main ou dans Minitab.

Nous partons des donnes suivantes:

Ensuite, nous utilisons la commande mantelhaen.test( ):

R Statistical Software 963/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc les mmes valeurs que celles calculs dans le cours thorique ainsi que
dans Minitab et donc avec les mmes conclusions!

Au niveau de la conclusion, la p-value tant beaucoup plus petite que les valeurs
traditionnelles critiques (10%, 5%, 1%) nous mettons donc en vidence le fait qu'il y a une
diffrence significative entre le groupe de contrle et de test travers les diffrentes strates.

R Statistical Software 964/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 211.: Test de Grubbs (test des valeurs aberrantes de


Grubbs)
R 3.0.2

Nous allons ici vrifier validit du test de Grubbs qui est implment dans R que nous avons
vu dans le cours thorique et dont nous avons appris calculer les valeurs critiques la main
pour n'importe quelle distribution. Nous allons aussi comparer le rsultat ce que renvoie
Minitab.

Nous utilisons alors la commande grubbs.test( ) du package outliers:

Nous retrouvons donc la mme valeur de G que celles calcules la main par Monte-Carlo
dans Microsoft Excelet que dans Minitab ( partir de la version 17 pour ce dernier). Par contre
pour les p-value nous en sommes des kilomtres (il y a 50% de diffrence).

Au fait c'est un pige car il faut ajouter un paramtre pour retrouves les valeurs que nous
connaissons (la fonction faisant un test unilatral par dfaut):

R Statistical Software 965/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 212.: Test de Dixon (test des valeurs aberrantes de


Dixon)
R 3.0.2

Nous allons ici vrifier validit du test de Dixon qui est implment dans R que nous avons
vu dans le cours thorique et dont nous avons appris calculer les valeurs critiques la main
pour n'importe quelle distribution. Nous allons aussi comparer le rsultat ce que renvoie
Minitab.

Nous utilisons alors la commande dixon.test( ) du package outliers qui par dfaut fait un test
en bilatral (contrairement la fonction grubbs.test):

Nous retrouvons donc exactement les mmes valeurs que celles calcules la main par
Monte-Carlo dans Microsoft Excelet que dans Minitab ( partir de la version 17 pour ce
dernier).

Le point qui est dommage cependant c'est que contrairement Minitab, nous ne pouvons pas
choisir le niveau de confiance (du moins ce jour).

R Statistical Software 966/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 213.: Test de Friedman (ANOVA canonique non


paramtrique par les rangs)
R 3.0.2

Nous allons nous baser sur l'exemple pratique fait aussi en cours pour appliquer la pseudo-
dmonstration (gure convaincante) que nous avons tudie concernant ce test. Nous allons
comparer le rsultat obtenu aussi par rapport Minitab.

Nous utilisons pour cela la commande friedman.test( ) native R:

Nous retrouvons donc exactement les mmes rsultats avec les mmes conclusions que dans
le cours thorique.

R Statistical Software 967/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 214.: Test de Kruskal-Wallis (ANOVA canonique 1


facteur non paramtrique)
R 3.0.2

Au mme titre que dans le cours thorique et Minitab nous allons prendre par hommage
l'excellent exemple original de l'article de Kruskal-Wallis:

Nous utilisons alors la commande kruskal.test( ) native de R:

R Statistical Software 968/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc part le faire que nous avons moins d'informations que dans le cours thorique et
qu'avec Minitab, les rsultats donns sont en parfait adquation.

R Statistical Software 969/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 215.: Test d'Armitage (test du chi-2 pour tendances


dans les proportions)
R 3.2.1

Nous partons de la mme table (en dimensions et en contenu!) que celle utilise pour la
dmonstration dans le cours thorique (exemple reprise de Wikipedia):

Genotype aa Genotype Aa Genotype AA Somme

Contrles 20 20 20 60

Cas 10 20 30 60

Somme 30 40 50 120

L'utilisation de la fonction native prop.trend.test( ) donne:

Nous voyons que les poinds par dfaut sont discutables Dans le cas ci-dessus nous rejetons
l'hypothse nulle comme quoi toutes les entres de la table son proportionnelles en faveur de
l'hypothse alternative comme quoi il y a une influence de tendance entre les deux variables
catgorielles.

Dans le cadre de la gntique, les poids sont slectionns en coformit avec le mode
d'hritage. Par exemple, pour tester si l'allle a est dominante sur l'allle A, nous choisirons
alors les poids tels que:

R Statistical Software 970/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L il n'y a donc pas d'association significative entre le nombre de cas et le type d'allle sous
l'hypothse que l'allle a est prdominante.

Si l'allle a est rcessive, nous choisissons alors les poids tels que:

L il y a donc une association significative entre le nombre de cas et le type d'allle sous
l'hypothse que l'allle a est effectivement rcessive.

R Statistical Software 971/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Si les allles a et A sont codominants alors ce sont les poids dfaut de la fonction R qui
s'appliquent et qui comme nous l'avons vu sont donc:

R Statistical Software 972/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 216.: Test G2


R 3.2.2

Nous avons vu dans le cours thorique que le test G2 est un petit bijou du mlange entre la
thorie de l'information, les dveloppements limits et les statistiques! Il s'agissait d'une
premire excursion sur le fait que la thorie de l'information (entropie) peut engrer elle seule
une grande partie de nos connaissances statistiques.

Pour vrifier si nous obtenons les mmes calculs que ceux effectus la main nous utilisons
le mme jeu que pour le test d'austement du khi-2. Pour cela, nous utilisons la fonction
G.test( ) du package RVAideMemoire:

R Statistical Software 973/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

15. Rgressions
Ce chapitre est ddi aux diffrentes techniques de rgressions. Rappelons que nous avons vu
dans le cours thorique qu'il y en un relativement grand nombre. Nous allons passer ici en
revue que celle dont nous avons tudis et dmontrs les dveloppements mathmatiques
pendant le cours thoriques.

Avant de commencer juste en petit rappel sur la notation dans R des modles de rgression
s'avre aprs exprience indispensable:

Syntaxe Lecture
Y~A Y 0 1 A Droite
Y ~ 1 A Y 1 A Droite affine
Y ~ A I ( A ^ 2) Y 0 1 A 2 A2 Rgression quadratique (ou autre en
changeant l'exposant)
Y ~ A B Y 0 1 A 2 B Modle multilinaire sans intractions
Y ~ A: B Y 0 1 AB Modle unique avec interaction
Y ~ A* B Y 0 1 A 2 B 3 AB Modle non quadratique avec
interactions
Y ~ ( A B C) ^ 2 Y 0 1 A 2 B 3C Modle multivarit avec interactions.
Une criture quivalente est:
4 AB 5 AC 6 BC Y ~ A* B *C A : B : C
Tableau 3 Syntaxe des diffrentes rgressions

Exercice 217.: Rgression linaire univarie par moindres


carrs ordinaires (modle Gaussien)
R 3.0.2

Pour ce nous allons d'abord utiliser les mmes donnes15 que dans le cours Microsoft Excelet
Minitab (nous allons aussi passer sous silence la problmatique des valeurs manquantes):

15
Rappel!!! Normalement pour pouvoir appliquer le modle Gaussien de rgression linaire il faut pour chaque
point d'abscisse plusieurs mesures en ordonnes (au moins 10).

R Statistical Software 974/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sans package dans un premier temps, nous avons en utilisant la fonction lm( ):

noter que nous aurions aussi pu crire:

y<-lm(Ventes ~ ., data=mydata) o le point permet d'indiniquer que nous prenons


toutes les autres variables restantes.
ou encore y<-lm(Ventes ~ 0+Mois, data=mydata) pour forcer l'ordonne l'origine

Avec un grand classique en plus au niveau de la reprsentation visuelle:

R Statistical Software 975/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Au niveau des statistiques de la rgression nous avons simplement:

R Statistical Software 976/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour extraire le coefficient de corrlation seul il suffit d'crire (nous verrons un peu plus loin
comment extraire d'autres informations):

Pour obtenir la somme des carrs des erreurs il suffit d'utiliser la fonction deviance( ):

R Statistical Software 977/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons galement directement chantilloner les donnes d'origines pour faire une
rgression sur un sous-ensemble:

Et avec la package ggplot2 nous traons d'abord la meilleure droite de rgression selon la
mthode des moindres carrs avec l'intervalle de confiance 95% en utilisant la commande
stat_smooth( ) du package ggplot2:

R Statistical Software 978/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons bien la mme chose que dans le cours Microsoft Excelet Minitab.

Nous pouvons aussi ploter les rsidus en utilsisant l'attribut res:

R Statistical Software 979/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui est intressant aussi et trs important c'est de vrifier l'homoscdasticit des rsidus.
Nous pouvons faire cela visuellement avec la commande suivante:

R Statistical Software 980/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bon videmment... dans le cas prsent comme nous n'avons qu'une seule mesure par point
d'abscisse il est presque impossible de dire quoi que ce soit de qualitativement srieux!

Avec la fonction outlierTest( ) du package car nous pouvons identifier les valeurs
"abrrantes" et au besoin les liminer. Redonnons d'abord le modle avec tous les points:

R Statistical Software 981/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant allons-y pour l'limination des valeurs abrrantes et refaire la rgression:

R Statistical Software 982/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le lecteur peut r-itrer la procdure avec le mme jeu de donnes et verra alors qu'liminer
les valeurs abrrantes est scientifiquement parfois aberrant!

Avec la commande predict( ), nous pouvons nous faire des projections avec intervalle de
confiance pour une ou plusieurs valeurs:

R Statistical Software 983/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire mieux en associant intervalle de confiance et de prdiction comme nous
l'avions fait dans le cours Microsoft Excel et Minitab:

Ce qui donne:

R Statistical Software 984/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et donc nous retrouvons bien la mme chose que dans les cours Microsoft Excelet Minitab.

Maintenant passons l'aspect un peu plus technique en utilisant la commande lm( ):

R Statistical Software 985/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons la mme chose que dans Microsoft Excelet Minitab la diffrence qu'il y a
des informations manquantes avec R qui sont intressantes dans la pratique et que la mise en
page n'est pas des meilleures...

Nous pouvons cependant faire mieux pour rcuprer les valeurs manquantes:

R Statistical Software 986/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi afficher un graphique un peu similaire celui de Minitab mais plus
technique incluant le leverage (niveau de levier) et la distance de Cook:

R Statistical Software 987/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire un test de l'homoscdasticit sur la rgression des rdisus puisque si ces
derniers satisfont les hypothses, la droite passant par les rsidus devrait avoir une pente nulle
(ou non significative) ainsi qu'une ordonne l'origine nulle. Or, dans le cas prsent:

R Statistical Software 988/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Revenons maintenant du ludique. Si nous avons un jeu de donnes du type suivant o


certaines valeurs d'abscisse se rptent:

R Statistical Software 989/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons alors de faon lgante reprsentater indique l'amplitude variation de chaque
point dans le cadre d'une rgression loess+linaire avec l'ellipse de confiance avec le script
suivant o nous avons mis en rouge les paramtres avec lesquels on joue normalement en
fonction du jeu de donnes:
do.it <- function(df, type="confidence", ...) {
require(ellipse)
lm0 <- lm(y ~ x, data=df)
xc <- with(df, xyTable(x, y,digit=1))
df.new <- data.frame(x=seq(min(df$x), max(df$x), 1))
pred.ulb <- predict(lm0, df.new, interval=type)
pred.lo <- predict(loess(y ~ x, data=df), df.new)
plot(df$x, df$y, cex=xc$number*2, xlab="x", ylab="y", ...)
abline(lm0, col="red")
lines(df.new$x, pred.lo, col="green", lwd=1.5)
lines(df.new$x, pred.ulb[,"lwr"], lty=2, col="red")
lines(df.new$x, pred.ulb[,"upr"], lty=2, col="red")
lines(ellipse(cor(df$x, df$y), scale=c(sd(df$x),sd(df$y)),
centre=c(mean(df$x),mean(df$y))), lwd=1.5, col="green")
invisible(lm0)
}

mydata<-
read.csv("c:/tmp/RegressionLineaireRepetition.csv",header=T,sep=";")
df<-data.frame(x=mydata$Mois,y=mydata$Couts)
do.it(df, pch=19, col=rgb(0,0,.7,.5))

Ce qui donne:

R Statistical Software 990/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et en prenant la moyenne des points (attention!!! Il n'est pas possible d'avoir le vrai rayon des
cercles pour l'cart-type ds le moment o les deux axes n'ont pas les mmes chelles):
mydata<-
read.csv("C:/tmp/RegressionLineaireRepetition.csv",header=T,sep=";")
mydata.mean<-aggregate(mydata[2],by=list(mydata$Mois),FUN=mean)
mydata.sd<-aggregate(mydata[2],by=list(mydata$Mois),FUN=sd)
mydata<-merge(mydata.mean,mydata.sd,by="Group.1")
colnames(mydata)<-c("Mois","Moyenne","StDev")
mydata[is.na(mydata)]<-1
mydata

do.it <- function(df, type="confidence", ...) {


require(ellipse)
lm0 <- lm(y ~ x, data=df)
df.new <- data.frame(x=seq(min(df$x), max(df$x), 1))
pred.ulb <- predict(lm0, df.new, interval=type)
pred.lo <- predict(loess(y ~ x, data=df), df.new)

R Statistical Software 991/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
#Attention essayer de faire des disques de vrais rayons n'a pas de sens
#ds le moment que l'axe X et Y n'ont pas la mme chelle!!!
plot(df$x, df$y, cex=df$stdev/500, xlab="x", ylab="y", ...)
abline(lm0, col="red")
lines(df.new$x, pred.lo, col="green", lwd=1.5)
lines(df.new$x, pred.ulb[,"lwr"], lty=2, col="red")
lines(df.new$x, pred.ulb[,"upr"], lty=2, col="red")
lines(ellipse(cor(df$x, df$y), scale=c(sd(df$x),sd(df$y)),
centre=c(mean(df$x),mean(df$y))), lwd=1.5, col="green")
invisible(lm0)
grid()
}

df<-data.frame(x=mydata$Mois,y=mydata$Moyenne,stdev=mydata$StDev)
do.it(df, pch=19, col=rgb(0,0,.7,.5))

Ce qui donne:

R Statistical Software 992/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Effet de levier (leverage) et distance de Cook


Dans le cours thorique nous avons mentionn qu'il existait de nombreuses techniques
empiriques pour mesurer l'influence d'un point. R propose quelques classiques ce propos et
dans le cadre de ce prsent support de cours nous allons nous concentrer sur le seul dont nous
avons dmontr l'origine mathmatique dtaille dans le cours thorique et dont de toute
faon la Distance de Cook et le DFITS dcoulent: l'effet de levier Hi.

D'abord voyons comment imprimer le graph de l'effet de levier seul:

Nous pouvons aussi obtenir directement l'effet de levier avec la commande hatvalues( ):

R Statistical Software 993/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 218.: Rgression linaire univarie par moindres


carrs ordinaires avec M-estimateurs
R 3.1.2

Nous avons tudi dans le cours thorique quelques M-estimateurs avec un regard trs
critique sur le choix de ces derniers. Voyons comme il est possible avec R de faire une
rgression robuste base par dfaut sur le M-estimateur de Tukey l'aide de la fonction rlm( )
du package MASS en reprenant les mmes donnes que l'exemple prcdent:

comparer avec le modle non robuste o nous avions obtenu pour rappel:

R Statistical Software 994/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 995/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 219.: ANOVA de la rgression linaire (bivarie)


facteurs fixes
R 3.0.2

Considrons les donnes suivantes du cours thorique:

Et procdons une ANOVA 1 facteur fixe:

ou en passant donc par la rgression linaire:

R Statistical Software 996/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et maintenant comparons avec ce que nous avons vu dans le cours thorique:

R Statistical Software 997/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et ensuite nous procdons une rgression de tableau avec une analyse d'ANOVA pour voir
que nous retombons bien sur nos pattes et avec les mmes proprits que celles discutes dans
le cours thorique:

R Statistical Software 998/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 220.: Rgression linaire univarie par moindres


carrs ordinaires (modle Gaussien) avec plot 2D/3D du
modle sous-jacent
R 3.0.2

Dans la littrature (la bonne de qualit!), nous voyons souvent les rgressions linaires
univaries reprsentes avec la loi Normale la verticale. Comme c'est une fonctionnalit
souvent demande voici typiquement le code avec l'aimable autorisation de
Arthur CHARPENTIER pris de son billet de blog du mois d'octobre 2011:

http://freakonometrics.hypotheses.org/2280

Donc avec des donnes bidons cela donne d'abord au niveau des commandes.

Ce qui donne visuellement:

R Statistical Software 999/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

De mme en perspective 3D et provenant toujours du mme blog:


attach(cars)
n=2 #choix empirique
X=cars$speed
Y=cars$dist
df=data.frame(X,Y)
vX=seq(min(X)-2,max(X)+2,length=n)
vY=seq(min(Y)-15,max(Y)+15,length=n)
#on cre la box 3D vide (remarquez l'astuce!)
mat=persp(vX,vY,matrix(0,n,n),zlim=c(0,.1),theta=-30,ticktype="detailed")
#mat va servir de matrice de projection pour la suite

#du classique:
regmdl=glm(Y~X,data=df,family=gaussian(link="identity"))
#on prpare x pour dessiner les lignes
x=seq(min(X),max(X),length=500)

#pas vident deviner... mais logique une fois qu'on la vu!


regLine=trans3d(x,predict(regmdl,newdata=data.frame(X=x),type="response"),
rep(0,length(x)),mat)
sdgig=sqrt(summary(regmdl)$dispersion) #scalaire (valeur unique)
y1=qnorm(.95,predict(regmdl,newdata=data.frame(X=x),type="response"),sdgig)
y2=qnorm(.05,predict(regmdl,newdata=data.frame(X=x),type="response"),sdgig)

#maintenant on dessine tout cela!

R Statistical Software 1000/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
#en faisant attention l'ordre pour ne pas craser ce
#qui a t dessin auparavant
C=trans3d(c(x,rev(x)),c(y1,rev(y2)),rep(0,2*length(x)),mat)
polygon(C,border=NA,col="yellow")

lines(regLine,lwd=2)

upLine=trans3d(x,y1,rep(0,length(x)),mat)
lines(upLine,lty=2)

lowLine=trans3d(x,y2,rep(0,length(x)),mat)
lines(lowLine,lty=2)

C=trans3d(X,Y,rep(0,length(X)),mat)
points(C,pch=19,col="red")

#maintenant on dessine les gaussiennes en perspective


n=8
vX=seq(min(X),max(X),length=n)
mgig=predict(regmdl,newdata=data.frame(X=vX))
sdgig=sqrt(summary(regmdl)$dispersion)

#partie pas vidente deviner!


for(j in n:1){
stp=251
x=rep(vX[j],stp)
y=seq(min(min(Y)-
15,qnorm(.05,predict(regmdl,newdata=data.frame(X=vX[j]),type="response"),
sdgig)),max(Y)+15,length=stp)
z0=rep(0,stp)
z=dnorm(y, mgig[j], sdgig)
C=trans3d(c(x,x),c(y,rev(y)),c(z,z0),mat)
polygon(C,border=NA,col="light blue",density=40)
C=trans3d(x,y,z0,mat)
lines(C,lty=2)
C=trans3d(x,y,z,mat)
lines(C,col="blue")
}

Ce qui donne:

R Statistical Software 1001/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous pouvons videmment faire de mme avec d'autres distribution (pensez au modles de
rgressions linaires gnralises Binomiaux, ou Poissons).

R Statistical Software 1002/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 221.: Rgression non linaire univarie par moindres


carrs ordinaires (modle Gaussien)
R 3.0.2

Nous pouvons faire comme nous l'avons vu dans le cours thorie une rgression uni ou
multivarie non linaire par moindres carres ordinaires.

En utilisant toujours les mmes donnes:

et en supposant un modle exponentiel amorti, nous avons avec la commande nls( ):

R Statistical Software 1003/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

Ensuite, si nous voulons prdire de nouvelles valeurs:

Tir de l'ouvrage Biostatistcal Analysis and Design using R de Murrey Logan voici un
excellent petit rsum des cas classiques des fonctions utilises avec nls( ):

R Statistical Software 1004/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1005/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 222.: Coefficient de corrlation de Pearson et test


associ
R 3.0.2

L encore, nous allons vrifier que nous retrouvons les mmes rsultats que les calculs faits
la main aprs la dmonstration mathmatique dans le cours thorique du test et que dans
Minitab et ce avec les mmes donnes en utilisant la commande cor.test( ):

Nous retrouvons donc les mmes valeurs la diffrence que R donne des informations plus
pertinentes et plus prcises que Minitab (du moins par dfaut).

Nous pouvons l'aide de la commande rcorr( ) du package Hmisc faire de multiples


affichages de p-values du test de Pearson d'un coup. Voyons cela:

R Statistical Software 1006/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1007/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 223.: Coefficient de corrlation de Spearman


(Spearman rho)
R 3.0.2

Nous allons partir ici des mmes donnes que celles utilises dans le cours thorique pour
encore une fois vrifier que nous retombons sur la mme chose ou pas et le comparer au
rsultat renvoy par Tangra.

D'abord en utilisant les commands cor( ) et rank( ) et ensuite en spcifiant la mthode

et mme si nous n'avons pas dmontr dans le cours thorique comment faire le test
d'hypothse classique, voici la commande si ncessaire:

R Statistical Software 1008/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 224.: Rgression linaire multiple (avec ou sans


interactions)
R 3.0.2

Maintenant faisons la mme rgression linaire multiple que dans le cours thorique et
Minitab avec la commande lm( ) en utilisant les donnes ci-dessous:

Allons y d'abord sans interactions:

R Statistical Software 1009/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc les mmes donnes qu'avec Minitab et MS Excel.

Agrmentons un peu ceci avec les analyses habituelles qualitatives:

R Statistical Software 1010/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et le package car en utilisant la commande scatterplotMatrix( ) qui montre la distribution de


chaque variable, l'interpolation linaire avec chaque autre variable et aussi une rgression
LOESS (voir plus loin):

R Statistical Software 1011/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La vracit de ce diagramme est facilement vrifiable avec Microsoft Excel(mais dans un


temps beaucoup plus long...).

Si nous voulons mettre en place des interactions, la syntaxe sera:

R Statistical Software 1012/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons videmment aussi trs facilement faire des prvisions nouveau avec la
commande predict( ):

R Statistical Software 1013/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Importance relative des variables explicatives


Comme nous le savons chaque rgression il est possible d'associer une ANOVA et chaque
variable nous pouvons associer la fraction du carr des erreurs qu'elle prend en compte par
rapport au carr des erreurs total! Avec un simple ratio il est alors possible de dfinir une
importance relative de chaque coefficient. Cependant il existe de nombreuses autres
techniques empiriques pour dfinir une importance relative. Voyons un exemple avec le
package realimpo!

D'abord le standard:

et l'ANOVA correspondante:

R Statistical Software 1014/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc selon l'ANOVA, le CoutA reprsente 36% du total du Sum Sq et CoutB 11.5%, CoutC
16.9% (somme de 64.54% pour les trois variables).

Si nous utilisons la fonction calc.relimp( ) du package spcialis relimpo (relative


importance):

R Statistical Software 1015/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons le 64.54% par contre pour les cots les importances relatives sont en
importance inverse. Cela est d au modle empirique utilis (car il en existe plus d'une
dizaine).

R Statistical Software 1016/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Facteur d'Inflation de la variance (VIF)


Encore une fois nous allons contrler les calculs faits la main dans le cours thorique et
obtenus aussi avec Microsoft Excelen utilisant toujours les mmes donnes:

Nous utilisons pour cela la commande vif( ) du package car:

Nous retrouvons effectivement les valeurs calcules manuellement en cours et donc les
mmes conclusions.

Nous pouvons faire rapidement le calcul que Minitab ne fait pas qui consiste dans la rgle
empirique que la racine carre du VIF si plus grande que 2 alors il y a multiconlinarit:

R Statistical Software 1017/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1018/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Analyse de la sensibilit par coefficients de rgression standardiss


Encore une fois nous allons contrler les calculs faits la main dans le cours thorique et
obtenus aussi avec Microsoft Excelen utilisant toujours les mmes donnes:

Pour cela nous allons utiliser la fonction src( ) du package sensitivity( ) qui nous donnera les
coefficients de rgression standardiss ainsi que le package boost pour faire du boosting dans
le but d'obtenir les intervalles de confiance:

R Statistical Software 1019/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et le graphique associ:

R Statistical Software 1020/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1021/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Rgression pas pas ascendante ou descendante


Ici nous allons encore une fois vrifier que nous retrouvons les mmes rsultats que dans le
cours Minitab et R et ainsi qu'avec les calculs faits la main suite la prsentation de cette
technique empirique dans le cours thorique.

Premire mthode (descendante package MASS)


Nous utilisons pour cela la commande stepAIC( ) du package MASS:

Nous voyons que nous avons moins d'options que dans Minitab ce qui est bien dommage car
les options proposes par ce dernier sont trs pertinentes. Cependant dans R, nous avons le
AIC (Akaike Information Criterion) et que nous n'avons pas ce jour dans Minitab ce qui est
bien dommage.

Nous voyons cependant que le meilleur modle rsultant est le mme car R s'arrt ds que le
modle se dgrade (le but tant de minimiser l'AIC d'o le nom de la commande...).

Petit interlude: l'AIC (1973) une mesure empirique d'une pseudo-distance entropique entre la
distribution de probabilits vraie et celle estime et appel divergence de Kullback-Leibler:

R Statistical Software 1022/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

p ( x)
DS ( p, q) p( x) log p( x) log p( x) p( x) log q( x)
q ( x)

et nous remarquons de suite que si p ( x) q ( x) la distance entropique est alors nulle. Akaike
s'est concentr sur le deuxime terme uniquement car il contient la distribution suppose:

p( x) log q( x)
Ce dernier est par construction toujours ngatif puisque nous prenons le log d'une valeur
toujours infrieur l'unit! Ensuite aprs quelques manipulations mathmatiques discutables
(probabilits conditionnelles, approximations de Taylor, convergence en loi, etc.) nous
arrivons :


AIC (k ) 2 L 2k

qui ne marche donc que pour des gros chantillons vu les hypothses des dveloppements
sous-jacents.

Dans tous les cas slection de modles qui utilisent le mme nombre de mesures k, il faut
donc privilgier le modle qui a la plus petite valeur (donc si c'est ngatif, plus c'est ngatif
mieux c'est). Rappelons que le maximum de vraisemblance L dcrit par construction d'autant
mieux un modle que ce dernier est grand! Dans le cas de modles qui n'utilisent pas le mme
nombre de points de mesure k la slection est ma connaissance plus dlicate cause de la
prsence du +2k

Depuis il y a eu d'autres modles comme le TIC (Takeuchi's Information Criterion) dvelopp


en 1976 et le BIC (Baysien Information Criterion).

Premire mthode (ascendante package MASS)


Mme commande et mme principe qu'avant:

R Statistical Software 1023/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc bien le mme rsultat que dans Minitab et qu' la main (ou que dans
MS Excel). Le seul point qui est un peu dommage c'est que R s'arrte la premire tape.
Cela aurait t bien d'en montrer plusieurs comme le fait Minitab.

Deuxime mthode (descendante sans package)


Nous allons utiliser la commande drop1( ) native de R:

R Statistical Software 1024/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc ici l'aide des p-value on voit que c'est CoutC qui est le plus significatif, ensuite CoutB
et ainsi de suite. Nous voyons aussi en face l'AIC ce qui est toujours utile.

On peut ensuite s'amuser enlever la variable la mois significative:

et ainsi de suite...

Deuxime mthode (ascendante sans package)


Nous allons utiliser la commande add1( ) native de R:

R Statistical Software 1025/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L nous voyons que c'est CoutB qui est le plus significatif. C'est donc toujours conforme
Minitab et aux calculs faits la main. Nous pouvons donc ensuite, nous amuser ajouter cette
variable au modle:

et ainsi de suite...

Troisime mthode (ascendante sans package)


Nous allons utiliser la commande step( ) native de R qui permet d'obtenir automatiquement
les squences de la deuxime mthode vue prcdemment:

R Statistical Software 1026/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Quatrime mthode (meilleur sous ensemble sur R2 ou Cp de Mallows avec


package leaps)
Nous allons ici utiliser la commande leaps( ) du package leaps. Cela nous donne en nous
basant sur le coefficient de corrlation ajust comme critre maximiser:

R Statistical Software 1027/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc le meilleur modle au sens du coefficient de corrlation ajust est celui qui contient les
trois variables explicatives.

Bien que la conclusion soit la mme que dans Minitab, le lecteur pour test que si nous ne
forons pas l'ordonne l'origine comme tant nulle, la commande leaps( ) n'arrive pas
s'excuter (contrairement Minitab o nous pouvons forcer ou non l'ordonne l'origine).

Sinon en nous basant sur le critre de Mallows:

R Statistical Software 1028/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme quoi... comme on dit toujours: il n'y a pas de bons modles. Il n'y a que des modles
meilleurs que les autres!

Quatrime mthode (meilleur sous ensemble sur R2, Cp de Mallows, AIC et BIC
avec package biology)
En utilisant le package biology et sa fonction Model.selection( ) mais ne fonctionnant que
dans les versions antrieures R 2.9.0 et pour lequel il faut passer par l'installation du fichier
zip biology.zip:

Nous obtenons:

R Statistical Software 1029/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1030/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Recherche automatique de la meilleure rgression polynomiale


Avec le package glmulti et la fonction du mme nom nous pouvons dans la version x86 de R
demander chercher le meilleur modle quadratique avec interactions ou non. Pour cela, nous
crivons:

R Statistical Software 1031/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 225.: Rgression polynomiale


R 3.0.2

Nous poursuivons en faisant la mme rgression polynomiale que dans le cours thorique et
Minitab avec la commande lm( ):

Nous retrouvons l encore une fois les mmes rsultats qu'avec Minitab et le cours thorique.
La diffrence tant qu'avec Minitab nous avons automatiquement une srie de graphiques
rcapitulatifs du modle.

Nous pouvons cependant complter avec le package ggplot2 comme nous l'avons fait avant:

R Statistical Software 1032/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou avec une syntaxe alternative quivalente:

Nous pouvons aussi comparer plusieurs modles en mme temps:

R Statistical Software 1033/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons revenir sur un cas plus compliqu comme nous l'avons fait avec Minitab pour
vrifier les possibilits de R. Nous allons donc utiliser les mmes donnes que dans le cours
Minitab:

R Statistical Software 1034/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Interpolation de Lagrange
Nous allons voir que nous pouvons effectuer des interpolations de Lagrange comme celles
tudies dans le cours thorique. Le script n'est de loin pas trivial. Il utilise les packages
polynom et ggplot2 et particulirement la fonction poly.calc( ) du premier package:

Ce qui donne visuellement:

R Statistical Software 1035/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 226.: Rgression non linaire gnrale


R 3.0.2

Le but ici va tre de reprendre l'exemple fait dans le cours Microsoft Excelutilisant la
mthode de Gauss-Newton et aussi la comparer avec ce que nous avions obtenu avec Minitab
16. Nous partons donc des donnes suivantes:

Ensuite, nous utilisons la commande native pour y rpliquer le modle thorique suppos:

R Statistical Software 1036/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous remarquons donc que le nombre d'itrations est infrieur celui de Minitab. Par contre
nous avons moins d'information concernant l'erreur du modle que ce que donne Minitab ou
Microsoft Excelde faon automatique. Avec un plus pour Minitab qui donne l'intervalle de
confiance au lieu de la valeur critique de la distribution de Student!

Sinon nous retrouvons exactement les mmes valeurs de coefficients qu'avec Minitab et la
mme erreur rsiduelle.

R Statistical Software 1037/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 227.: Rgression linaire/polynomiale 3D


R 3.0.2

Bon cet exercice n'est que pour les paillettes car avoir un modle seulement deux variables
explicatives est super limitatif (c'est toujours le problme des graphes car en dehors de la 2D
et de la 3D... c'est fini!).

Nous travaillons nouveau avec le fichier contenant les Cots:

Et maintenant nous jouons avec la commande scatter3d( ) et lm( ) des package car et rgl.

D'abord nous tentons de voir ce qu'un modle purement linaire avec deux variables
explicatives donne:

R Statistical Software 1038/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Soit graphiquement:

Nous pouvons faire mieux et optionnellement sans utiliser le package car et en affichant aussi
l'ellipsode de contrle:

R Statistical Software 1039/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

Avec un modle quadratique seul avec interactions:

R Statistical Software 1040/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Soit graphiquement:

R Statistical Software 1041/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et en mlangeant les deux (par contre ce moment l on ne peut plus avoir les projections des
points sur le modle):

R Statistical Software 1042/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bref c'est joli mais trs limite puisque trois dimensions et de toute faon c'est aussi peu
prcis (un bon tableau avec des chiffres en statistisques a reste toujours la base!).

R Statistical Software 1043/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 228.: Support Vector Regression


R 3.2.1 x86

Il parat assez vident que SVM peut aussi tre utilis pour la rgression linaire ou non
linaire et performe bien souvent bien mieux que les techniques paramtriques classiques.
Voyons comment avec un exemple particulier univari.

Commenons avec le cas classique:

Ce qui donne:

R Statistical Software 1044/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et en utilisant le SVM, le rsultat est bien videmment meilleur:

R Statistical Software 1045/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1046/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 229.: Analyse de la corrlation canonique


R 3.1.1

Nous utilisons le jeu de donnes du cours thorique:

En utilisant la fonction rcc( ) du package mixOmics nous obtenons:

R Statistical Software 1047/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il s'agit bien des valeurs obtenues dans le cours thorique. Nous retrouvons les mms
corrlations qu'avec MATLAB mais pas les mmes coefficients (ceux-ci-dessus tant centrs
rduits au contraire de MATLAB).

R Statistical Software 1048/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 230.: Rgression logistique (logit) variable


catgorielle (qualitative) binaire (dixit: scoring)
R 3.0.2

Comme nous l'avons vu dans le cours de statistique thorique, le problme d'une rgression
linaire simple (bivarie) ou multiple variable explique de type binaire c'est que le modle
thorique peut prendre toute valeur dans ce qui est videmment une aberration puisque
dans le cas d'une variable explique de type 0/1, le modle thorique ne doit jamais donner
une valeur infrieure 0 et suprieure 1. Or c'est malheureusement ce que fera une rgression
linaire

Pour cela nous avons dmontr qu'il tait possible d'utiliser une autre technique mathmatique
qui nous assurait que la condition susmentionne soit satisfaite. Nous allons reprendre le
mme exemple mais au lieu de faire les calculs la main, nous les faisons donc avec R (et les
comparer accessoirement avec R).

Nous utiliserons le mme jeu de donnes:

Nous utilisons la commande native glm( ) et nous remarquons que nous obtenons les mmes
rsultats que dans Minitab (avec la mme diffrence que dans le cours thorique et pour les
mmes raisons):

R Statistical Software 1049/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons construire un petit data frame avec les donnes du modle:

R Statistical Software 1050/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire un plot des points mesurs, des points abscisses mesures avec la thorie
ainsi que d'un lissage:

R Statistical Software 1051/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons galement avoir la courbe ROC l'aide de la commande roc( ) du package
pROC( ):

R Statistical Software 1052/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La courbe ROC est identique Minitab et celle calcule dans le cours thorique la
diffrence que pour Minitab nous avons du laborieusement aller chercher une macro sur le
site web de l'diteur du logiciel.

Nous pouvons aussi avoir un intervalle de confiancce l'aide du bootstrapping avec la


commande ci.se( ) du mme package (voil un fonction bien utile qu'il manque bon nombre
de logiciels statistiques pour la courbe ROC):

R Statistical Software 1053/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande coords( ) du package pROC nous pouvons obtenir le meilleur cut-off:

Nous pouvons avec la commande matrixConfusion( ) du package caret afficher la matrice


de confusion et autres informations utiles comme la spcificit et la sensibilit:

R Statistical Software 1054/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc la mme chose qu'avec Tanagra et qu'avec les calculs effectus la main
dans le cours thorique.

R Statistical Software 1055/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Odds ratio et Risque Relatif


Dans le cours thorique de mthode numrique nous avons introduit le concept de rapport des
cotes et de risque relatif. Dans le chapitre de Statistiques nous avons dmontr comment
obtenir leur intervalle de confiance.

Nous allons vrifier dans un premier temps si nous obtenons les mmes rsultats que ceux
calculs la main et dans un deuxime temps comparer l'odds ratio et son intervalle de
confiance avec ce qui tait donn par Minitab (ce dernier ne denant aucune information sur le
risque relatif) et le risque relatif et son intervalle de confiance ce qui tait donn par
MedCalc.

Nous importons donc d'abord les mmes donnes que dans le cours thorique, nous les
mettons sous forme de table de contingence et en faisons un petit barplot( ) classique:

Ensuite, nous utilisons la commande epi.2by2( ) du package epiR:

R Statistical Software 1056/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Rappel: Un odds ratio de 3.30 signifie pour rappel dans le cas prsent que ceux traits au
placebo prsentent un facteur de 3.30 d'exposition supplmentaire au risque cardiaque par
rapport ceux traits l'aspirine.

Nous avons donc avec ce package un odds ratio de 3.30 au lieu du 3.32 tel que calcul la
main et avec Minitab et un intervalle de confiance de [1.48,7.89] au lieu de [1.55,7.14] tel que
calcul la main et avec Minitab. La diffrence est donc raisonnable...

Pour le Inc risk ratio qui n'est en fait que el risque relatif, nous avons donc une valeur de 1.5
(au lieu du 2.21 tel que calcul la main et avec MedCalc) et un intervalle de confiance de
[1.19,1.89] (au lieu de [1.266,3.869] tel que calcul la main et avec MedCalc). Par contre
ici la diffrence est trs suprenante! Si quelqu'un en connat la raison...

R Statistical Software 1057/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 231.: Rgression orthogonale (rgression de Deming)


R 3.0.2

Nous allons encore une fois vrifier ici si les calculs effectus la main et dans Microsoft
Excelsuite aux dmonstrations mathmatiques d'une partie des lments de la rgression de
Deming effectues dans le cours thorique.

Pour cela, nous utiliserons les 39 lignes suivantes (prises en partie de l'aide Minitab) qui
correspondent la mesure de la pression sanguine avec deux instruments de 39 individus
(chaque individu ayant mesur sa pression sanguine une fois avec l'ancien et une fois avec le
nouvel instrument):

En utilisant alors la commande Deming( ) du package MethComp:

Nous voyons alors que bien que la pente soit trs proche de ce que nous avons obtenu avec
Minitab, au niveau de l'Intercept il y a prs de 20% de diffrence!

R Statistical Software 1058/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
De plus, nous n'avons pas d'intervalle de confiance ce qui enlve tout utilit l'analyse telle
quelle est prsente ci-dessus. Heureusement, les auteurs proposent une rgression
orthogonale par bootstrapping. Nous avons alors:

Et l nous sommes beaucoup plus proches des rsultats donns par Minitab ce qui est heureux
et de plus, nous avons les intervalles de confiance avec donc les mmes conclusions.

Nous pouvons aussi ploter les trois modles de rgressions (pour voir les diffrences quand
celles-ci sont ventuellement significatives):

Ce qui nous donne:

R Statistical Software 1059/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1060/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 232.: Rgressions linaires gnralises (GLM)


R 3.0.2

Nous allons ici vrifier si nous retrouvons bien les diffrents rsultats calculs la main et
obtenus dans le cours thorique aprs avoir fait la dmonstration dtaille de certains modles
GLM particuliers (nous ne reviendrons donc pas sur le cas gaussien dj trait plus haut).

Rgression de Poisson log-linaire (rgression des vnements rares)


Nous allons reprendre ici l'exemple fait dans le cours thorique utilisant le mme jeu de
donne que dans le cours Microsoft Excelet Minitab et videmment avec les mmes critiques
et hypothses:

Ensuite, nous utilisons la commande native glm( ) de R:

R Statistical Software 1061/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc en ce qui concerne les coefficients nous obtenons les mmes valeurs que dans le cours
thorique. Pour le reste... nous ferons confiance R...

Nous pouvons si besoin tre plus prcis en indiquant le type de lien.

R Statistical Software 1062/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et nous pouvons plotter un petit rsum important concernant la validit du modle:

R Statistical Software 1063/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Rgression GLM Ngative binomiale (NB-2)


Nous prenons donc le mme jeu de donnes que dans le cours thorique et Microsoft
Exceldont voici un chantillon:

et ensuite nous utilisons la command glm.nb( ) du package MASS pour obtenir:

R Statistical Software 1064/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous nous retrouvons donc avec les mmes rsultats des coefficients et de l'ordonne
l'origine que dans le cours thorique et qu'avec SAS. Aprs pour les autres informations...
c'est une autre histoire!

R Statistical Software 1065/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons faire un plot pour juger qualitativement du modle.

On peut faire un plot du modle. Voyons cela (si vous avez des propositions d'amlioration,
n'hsitez pas me contacter!). D'abord montrons que nous pouvons obtenir les valeurs des
moyennes d'absence du modle thorique pour chaque genre pour les notes moyennes:

R Statistical Software 1066/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous pouvons faire cela pour toute l'tendue par genre et par note avec un graphe:

R Statistical Software 1067/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donnera:

R Statistical Software 1068/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc il est rassurant de voir que plus les absences sont faibles, meilleure est la note...

R Statistical Software 1069/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Recherche automatique de la meilleure rgression de Poisson


Avec le package glmulti et la fonction du mme nom nous pouvons dans la version x86 de R
demander chercher le meilleur modle de Poisson (ce package ne fait pas encore le modle
binomial ngatif mais il fait par contre le modle logit!). Pour cela, nous crivons:

R Statistical Software 1070/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
En crivant simplement:

Nous obtenons une longue liste de rsultats, dont:

R Statistical Software 1071/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 233.: Rgression (linaire) par moindres carrs


partiels (rgression linaire PLS univarie: PLS1)
R 3.0.2

Le but va tre ici de vrifier si nous obtenons ou pas les rsultats des calculs vu dans le cours
thorique lors de la lecture du l'ouvrage de M. Tenenhaus16 sur la rgression PLS univarie
(PLS1), c'est--dire la rgression sur des variables explicatives corrles avec une unique
variable expliquer.

Nous utiliserons les mmes donnes que les calculs effectus la main et que dans le cours
Minitab:

16
Michel Tenenhaus, Rgression PLS, dition Technip, ISBN 2-7108-0735-1, Pages 75-83

R Statistical Software 1072/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous utilisons ensuite la fonction plsreg1( ) du package plsdepot qui comme nous pouvons le
voir ci-dessous nous laisse accs un certain nombre d'information pertinentes:

Nous allons demander voir celles qui correspondent aux calculs faits la main dans le cours
thorique et par Minitab:

Tout correspond bien!

R Statistical Software 1073/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 234.: Modlisation par quations structurelles (SEM)


R 3.1.1

Il faut considrer cet exercice comme un brouillon prendre avec des pincettes. Il existe
effectivement de nombreuses mthodes numriques et plusieurs packages pour rsoudre les
SEM.

Le but ici va tre de comparer les rsultats des packages sem et lavaan par rapport au solveur
Microsoft Excel en se basant sur le modle de Klein qui pour rappel est:


Ct 10 11 Pt 12 Pt 1 11 Wt p Wt g 1t
I t 20 21 Pt 22 Pt 1 12 K t 1 2t
Wt p 30 31 At 31 X t 32 X t 1 3t
X t Ct I t Gt
Pt X t Tt Wt p
Kt Kt 1 I t

D'abord nous chargeons les donnes o la majorit des variables sont prsentes:

R Statistical Software 1074/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme certaines variables dcales (lag) sont absentes, nous allons les crer:

Nous rsolvons maintenant la premire quation structurelle en utilisant la fonction tsls( ) du


package sem:

R Statistical Software 1075/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La deuxime:

R Statistical Software 1076/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et enfin la troisime:

R Statistical Software 1077/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous mettons les valeurs d'intrt les unes ct des autres:

Maintenant procdons de mme avec la fonction sem( ) du package lavaan qui est bien plus
complet en paramtres que le package sem:

R Statistical Software 1078/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 1079/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et pour la suite:

R Statistical Software 1080/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et enfin:

R Statistical Software 1081/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Soit pour rsumer les paramtres qui nous intressent:

R Statistical Software 1082/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons donc constater des diffrences considrables entre les deux mthodes dont
voici un rsum et une comparaison avec MS Excel:

Coefficient sem lavaan Solveur XL


10 16.55475577 19.567 15.1386
11 0.01730221 0.568 0.052837
12 0.21623404 0.759 0.258205
11 0.08108270 2.424 0.811929
20 20.27820896 20.626 -4.10789
21 0.15022183 0.380 0.580019
22 0.61593458 0.433 0.222549
12 -0.15778764 -0.164 -0.0406
30 1.50029689 -257.265 4.801374
31 0.43885907 0.434 0.140841
31 0.14557382 0.153 0.531118
32 0.13039569 0.134 -0.00441
SCE 30827.9981 9208909.048 63.2049
somme des carres des erreurs

Je pense que cela se passe de tout commentaire. Il serait intressant de comparer avec un
logiciel payant (je le ferai quand j'en aurai un sous la main).

R Statistical Software 1083/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

16. Interpolations
Les techniques d'interpolation sont contrairement aux techniques de rgression des outils
mathmatiques permettant d'ajuster au mois un courbe selon plusieurs critres empiriques
(comme pour les rgressions) mais dont le but n'est pas ensuite de pouvoir faire des
projections (extrapolations) en avant et en arrire.

Exercice 235.: Interpolation par splines


R 3.0.2

Les cas les plus courants d'interpolation sont les splines qui sont utilises pour les courbes de
taux en finance. Voyons donc un exemple de cela.

Pour l'exemple nous prenons les donnes de la banque fdrale amricaine:

http://www.federalreserve.gov/datadownload/Choose.aspx?rel=H.15

tlchargables en fichier *.csv:

Nous avons alors avec beaucoup d'astuce d'abord en prenant la dernire date:

R Statistical Software 1084/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On simplifie un peu l'affichage...:

Et nous allons sur la dernire ligne droite en utilisant les commandes bs( ) ou ns( ) qui sont
diffrentes modles de splines disponibles dans le package splines:

R Statistical Software 1085/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il n'est pas possible (et cela n'a pas de sens mathmatiquement parlant ma connaissance) de
faire des projections (extrapolations) avec des interpolations par splines au-del du domaine
de dfinition d'origine.

R Statistical Software 1086/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 236.: Interpolation locale par pondration (LOESS)


R 3.0.2

Bon ici nous n'allons pas trop insister car c'est de l'ingnierie numrique et comme nous
l'avons vue dans le cours thorique de Mthodes Numriques o nous avons implment le
code VBA du NIST dans Microsoft Excelil existe de nombreux algorithmes LOESS (LOcally
Weighted regrESSion) diffrents qui donnent des rsultats sensiblement diffrents.

Nous allons donc ici juste nous concentrer sur la mise en application de la mthode et le
rsultat visuel sans le commenter.

Les donnes unidimensionnelles seront:

Ensuite vient les commandes:

R Statistical Software 1087/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme nous allons le montrer maintenant, ce modle ne permet (du moins ma


connaissance) pas d'extrapoler mais uniquement d'interpoler:

R Statistical Software 1088/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou un autre cas dont nous avons longuement discut dans le cours thorique en considrant
les donnes suivantes:

Et en utilisant la fonction qplot( ):

Ce qui donne:

R Statistical Software 1089/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

comparer avec un tableur:

R Statistical Software 1090/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 237.: Interpolation Multivariate Adaptive Regression


Splines (MARS)
R 3.1.2

Nous avons alors pour rsum:

R Statistical Software 1091/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Si on veut les valeurs interpoles nous utilisons la fonction predict( ) du package:

Nous pouvons aussi choisir les donnes interpoless voulues ou mme extrapoles toujours
avec la mme fonction:

R Statistical Software 1092/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1093/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

17. Sondages
Pour tudier les sondages, nous partons du fichier suivant ayant principalement des variables
catgorielles:

R Statistical Software 1094/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1095/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1096/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1097/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1098/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

18. Fiabilit/Survie
Exercice 238.: Analyse de donnes censures selon modle non
paramtrique de Kaplan-Meier
R 3.0.2

Le but ici va tre nouveau de vrifier si nous obtenons bien les mmes rsultats que ceux
calculs la main dans le cours thorique lorsque nous avons tudi la dmonstration de
l'estimateur de survie de Kaplan-Meier.

Nous partons du tableau vu en cours mais adapt aux exigences de Minitab et R (il n'est
vraiment pas ais de deviner que c'est sous cette forme que les choses doivent tre
reprsentes):

Ensuite, en utilisant le package Survival, nous utilisons la commande survfit( ) avec Surv( )
de la manire suivante:

R Statistical Software 1099/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

le ~1 signifiant qu'il n'y a pas de facteur explicatif particulier supplmentaires (comme l'ge,
le sexe ou autre).

Ce qui donne graphiquement (je n'ai pas trouv comme dsactiver les deux intervalles de
confiance sachant que nous n'en avons pas fait la dmonstration mathmatique dans le cours
thorique):

comparer avec Minitab (on apprciera donc dans R l'indication des donnes censures qui
sont a priori absentes dans Minitab):

R Statistical Software 1100/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bon les graphiques c'est bien joli mais nous voulons des chiffres! Nous crivons alors:

et nous retrouvons tous les chiffres calculs la main dans le cours thorique (except pour
les deux dernires colonnes puisque nous n'avons pas dmontr mathmatiquement comme
obtenir l'intervalle de confiance).

Et en crivant simplement:

R Statistical Software 1101/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons la mdiane visible dans le coin du graphique de Minitab.

R Statistical Software 1102/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 239.: Ajustement de Weibull pour donnes censures


droite
R 3.1.1 & R 2.12.2

Nous allons ici vrifier si nous retrouvons les rsultats des calculs faits dans Microsoft Excel
suit la dmonstration faite dans le cours de Statistique thorique.

Nous partons donc des mmes donnes que celles pour l'analyse de Kaplan-Meier puisque ce
sont celles que nous avons aussi utilises pour le calcul dans Microsoft Excel aprs avoir fait
le calcul la main de l'estimateur de maximum de vraisemblance de la loi de Weibull deux
paramtres avec donnes censures droite:

R Statistical Software 1103/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous utilisons nouveau le package survival avec la fonction survreg( ). Puisque cette
dernire renvoie une paramtrisation peu connue dans le cadre de la survie nous allons devoir
les transformer:

Donc pour le paramtre de forme nous obtenons 1.35 ( comparer avec Microsoft Excel o
nous avions obtenu 1.18 et Minitab o nous avions obtenu 2.50) et pour le paramtre d'chelle
33.76 ( comparer avec Microsoft Excel o nous avions obtenu 27.16 et Minitab o nous
avions obtenu 26.02).

R Statistical Software 1104/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant pour obtenir au moins le graphique d'ajustement comme le font au minimale les
logiciel commerciaux et sans passer son temps recrer la roue avec un script il va falloir
d'abord tlcharger la version 2.12.2 de R disponible sur cette page:

http://cran.r-project.org/bin/windows/base/old/

et ensuite tlcharger en local le package weibulltoolkit disponible ici:

http://www.foxgo.net/10/post/2011/10/weibull-toolkit-for-r.html

Une fois l'installation de R 2.12.2 effectue ainsi que celle du fichier Zip:

R Statistical Software 1105/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

En enlevant le paramtre is.plot.legend=FALSE nous obtenons une lgende un peu


envahissante:

R Statistical Software 1106/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou sinon avec l'ensemble des packages abrem suivants qui ne ncessitent pas de tlcharger
une vieille version de R:

Et en les installant ce jour (dbut 2015) aussi manuellement, nous avons:

Ce qui donne (trs intressant de comparer avec la prcdente approche):

R Statistical Software 1107/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 240.: Rgression modle de hasard proportionnel


de Cox
R 3.0.2

Nous allons reprendre ici exactement le mme exemple hasard proportionnel non stratifi
dpendant du temps que celui fait dans le cours thorique aprs la dmonstration
mathmatique (pnible) des notions fondamentales de ce modle....

Nous allons pour cela utiliser la commande coxph( ) du package survival:

Nous retrouvons donc le mme rsultat qu' la main (et que pour MedCalc) pour le
coefficient. Pour le reste, cela sort ce jour du contenu du cours thorique!

Et au nivau graphique:

R Statistical Software 1108/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1109/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

19. Plans d'exprience


Le but ici va tre de voir dans quelle mesure nous pouvons reproduire dans R les plans
d'exprience vu dans le cours thorique et comparer les rsultats au logiciel Minitab que nous
avons utilis dans le cours de Gnie Industriel.

Remarque: ce jour (dbut 2014), R est trs loin des possibilits des logiciels comme JMP
ou Minitab pour les plans d'exprience mais rien ne dit que dans quelques annes...

Exercices 241.: Gnrer un plan factoriel complet (sans


package)
R 3.0.2

Nous allons ici gnrer un plan d'exprience complet pour pouvoir prendre nos mesures avec
la commande expand.grid( ):

Ensuite, n'oubliez pas que vous pouvez diter directement les donnes dans R avec la
commande edit(monplan). Ce sera tout pour le besoin le plus lmentaire imaginable...

R Statistical Software 1110/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 242.: Constructions de plans d'expriences


R 3.0.2

Dans cet exercice, le lecteur n'aura pas besoin d'ouvrir de fichiers car le seul objectif ici est de
vrifier que R propose les plans d'exprience de base que nous avons tudis dans le cours
thorique de Gnie Industriel sur le mme sujet avant de passer des exemples concrets.

Concernant le fait d'aller plus loin avec les plans d'exprience, vous avez en gros deux
alternatives:

1. Vous installez et chargez le package RcmdrPlugin.DoE:

Ce qui vous donnera une interface WYSIWYG:

R Statistical Software 1111/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

2. Installer et utiliser le package DoE.base et toute faire en ligne de commande:

Pour les raisons dj cites au dbut de ce e-book, je vais privilgier la deuxime mthode.

R Statistical Software 1112/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plans factoriels
Plan factoriel complet gnral
Nous allons commencer par gnrer le mme plan factoriel complet gnral que dans le cours
thorique de Gnie Industriel en utilisant donc la commande fac.design( ) du package
DoE.base:

C'est juste mais la sortie est moins pertinente qu'avec Minitab.

R Statistical Software 1113/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Analyse conjointe
Nous avons vu dans le cours thorique que l'analyse conjointe consiste simplement dans le cas
linaire faire un plan d'exprience factoriel complet mais appliqu au domaine du Marketing
afin de trouver les combinaisons optimales des proprits d'un produit qui maximise la
prfrence des consommateurs.

Donc d'abord partir du package conjoint nous crons rapidement un plan factoriel complet
des trois proprits (Marque, Couleur, Prix) qui nous intressent dans cette tude l'aide de la
fonction caFactorialDesign( ):

Ds lors en associant les prfrence chacune des ces combinaisons nous avons:

R Statistical Software 1114/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il s'agit donc d'une simple rgression linaire (logique) mais dont la forme communique peut
perturber plus d'un non spcialiste:

1. Certains niveaux de facteurs sont absents et ceux qui ont tudi la thorie savent
pourquoi et les autres non

2. Les valeurs optimales des variables ne sont pas donnes automatiques

Nous avons aussi avec la fonction caImportance( ) du mme package les importances
relatives des trois facteurs dans l'ordre d'entre (mme si en amplitude nous somme trs loin
des valeurs obtenues dans le cours thorique 63.02%, 5.76%, 31.22% l'ordre d'importance au
moins correspond):

R Statistical Software 1115/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1116/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plan factoriel ( deux niveaux) fractionnaire


Maintenant voyons comment gnrer un plan fractionnaire (dans le cas prsent ce sera un plan
factoriel fractionnaire comme celui vu en cours) o nous laissons le soin R de choisir les
meilleurs gnrateurs (alias). Nous allons utiliser la commande FrF2( ) du package FrF2:

Nous voyons dj dans la fentre de sessions que nous avons le mme gnrateur et les
mmes alias que ceux vus en cours.

Avec la commande aliasprint( ) on peut avoir les alias (qui sont donc les mmes que Minitab
et que dans le cours thorique):

R Statistical Software 1117/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Le package qualityTools permet selon mon opinion d'obtenir un rsultat plus propre d'abord
avec laf fonction fdo.frac( ):

R Statistical Software 1118/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et avec la fonction aliasTable( ) nous pouvons obtenir les alias et avec confounds( ) les
confusions et nous voyons bien que nous retombons sur les mmes que dans le cours
thorique:

R Statistical Software 1119/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plan factoriel ( deux niveaux) de screening (rsolution III)


Maintenant voyons le vrai intrt d'un logiciel pour la base des plans d'exprience. Comme
nous l'avons mentionn dans le cours de statistique thorique, au-del de 4 facteurs il devient
pnible de dterminer la matrice d'Hadamard pour les plans fractionnaires et les alias
optimaux. Alors voyons comment R nous facilite la tche.

Nous ferons comme dans le cours thorique et avec Minitab, nous allons prendre 5 facteurs et
choisir le complet, le rsolution V et le rsolution III (comme le rappelle le schma suivant de
Minitab):

ou le schma quivalent donn par l'interface DOE WYSIWYG:

R Statistical Software 1120/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1121/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou encore par la fonction fracChoose( ) du package qualityTools:

qui lors du clic sur un des cas permet de rcupere le plan dans l'espace de travail R.

Commenons donc par le plan factoriel complet 5 facteurs de 2 niveaux:

R Statistical Software 1122/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il n'y a donc ici videmment aucun alias:

Ensuite, nous crons un plan factoriel fractionnaire de rsolution V:

R Statistical Software 1123/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons bien les 16 essais comme dans le cours thorique et Minitab par contre les alias
ne son pas communiqus.

Maintenant voyons le plan factoriel fractionnaire de rsolution III (plan de screening) Il est
trs intressant de voir comment les alias vont tre choisis:

R Statistical Software 1124/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le tableau et les alias sont conformes Minitab mais la manire dont ils sont indiqus est trs
vague (contrairement Minitab) et peut porter confusion.

R Statistical Software 1125/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plan factoriel de Plackett-Burman


Maintenant, voyons les plans de Plackett-Burman que nous avons aussi tudi dans le cours
de statistique thorique. Faisons l'exemple avec le plus petit nombre de facteurs o ces plans
commencent tre vraiment intressants comme nous l'avons vu dans le cours. Nous avons
alors en utilisant la commande pb( ) du package FrF2:

Nous observons donc que la fentre de session n'affiche pas les alias (ce qui est dommage
puisque les plans de Plackett-Burman sont des plans rsolution III comme nous l'avons dit
en cours). Il n'est pas non plus possible de les obtenir avec la command aliasprint( ).

Le plan obtenu ci-dessus n'est pas le mme qu'avec Minitab et ne correspond donc pas
l'algorithme de Plackett-Burman que nous avons vu dans le cours thorique. Donc creuser...

Le plan obtenu est lui plutt surprenant. Nous n'avons que 4 colonnes pour les facteurs de
base. Certes il n'est pas utile d'en avoir plus mais cela aurait t sympathique de pouvoir
choisir...

R Statistical Software 1126/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plan factoriel de Taguchi


Maintenant, pour en finir avec la base des plans d'exprience, voyons encore les plans de
Taguchi. Pour cet exemple, nous allons utiliser le magnifique package qualityTools et la
commande taguchiDesign( ) qui y est intgre. Nous avons alors pour construire le mme
plan de Taguchi que dans le cours thorique et Minitab:

Voici si jamais la liste des plans de Taguchi tels qu'indiqus dans l'aide de la commande (juste
pour info et en comparaison Minitab):

L4_2 for three two-level factors


L8_2 for seven two-level factors
L9_3 for four three-level factors
L12_2 for 11 two-level factors
L16_2 for 16 two-level factors
L16_4 for 16 four-level factors
L18_2_3 for one two-level and seven three-level factors
L25_5 for six five-level factors
L27_3 for 13 three-level factors
L32_2 for 32 two-level factors
L32_2_4 for one two-level factor and nine four-level factors
L36_2_3_a for 11 two-level factors and 12 three-level factors
L36_2_3_b for three two-level factors and 13 three-level factors
L50_2_5 for one two-level factor and eleven five-level factors
L8_4_2 for one four-level factor and four two-level factors

R Statistical Software 1127/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L16_4_2_a for one four-level factor and 12 two-level factors


L16_4_2_b for two four-level factors and nine two-level factors
L16_4_2_c for three four-level factors and six two-level factors
L16_4_2_d for five four-level factors and two two-level factors
L18_6_3 for one six-level factors and six three-level factors

Ce que nous pouvons directement obtenir dans R:

Donc contrairement Minitab ce package donne la table de Taguchi complte ce qui est plus
confortable intellectuellement. Profitons donc pour comparer par rapport ce que nous avions
dans le cours thorique en dsactivant la randomization:

C'est donc parfaitement conforme!

R Statistical Software 1128/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant, voyons si nous retrouvons ce plan de Taguchi avec le plan factoriel "classique"
comme nous l'avons fait dans le cours thorique et Minitab en spcifiant les gnrateurs. Nous
crivons alors avec le package FrF2:

Ce qui part l'ordre, est parfaitement conforme au tableau obtenu dans le cours et o l'criture
est beaucoup plus logique et intuitive mon got que dans Minitab:

R Statistical Software 1129/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Analyse et comparaison d'un plan d'exprience identique en factoriel complet


gnral et factoriel 2 niveaux
Avant de passer au gros exercice fait la main dans le cours thorique et dans Minitab il va
tre utile de commencer par un cas hyper simpliste qui avait consist rsoudre la main (et
aussi dans Minitab) le systme suivant:

Ce qu nous avait donn sous forme matricielle:

La solution dtermine avec la vitesse et pression seule avait donc t de:

Vrifions cela avec R et comparons deux packages.

Package FrF2

D'abord nous construisons le plan factoriel (complet):

R Statistical Software 1130/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous rajoutons les distances:

Et nous lanons l'analyse:

R Statistical Software 1131/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous voyons que bien qu'ayant dfini un plan factoriel complet gnral, les coefficients:

y 32577.5 372.5 x1 112.5 x2 382.5 x12

sont donns par rapport un modle aux variables codes (-1,1). Je n'ai pas trouv la
possibilit comme sur Minitab de pouvoir choisir si le modle final devait tre donn en
variables codes ou non.

Donc on ne pourra pas comparer le plan factoriel gnral complet au plan factoriel gnral au
plan factoriel complet 2 niveaux puisque ce deuxime nous est impos!

R Statistical Software 1132/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Package qualityTools

Nous crons le plan avec la fonction facDesign( ):

Ensuite, nous passons d'abord une analyse qualitative avec les fonctions wirePlot( ) et
contourPlot( ):

et nous voyons que le fait qu'on ne puisse pas bouger les lgendes, changer les axes, tourner
les graphes est une dsavantage majeur par rapport Minitab:

R Statistical Software 1133/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L'analyse qualitative est bien videmment conforme l'intutition.

Maintenant voyons ce que nous pouvons obtenir au niveau du modle linaire:

Nous obtenons le mme rsultat qu'avant ce qui est plutt rassurant!

R Statistical Software 1134/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons demander la fonction steepAscent( ) du package qualityTools de chercher le
maxima mme en dehors des limites codes mais videmment au vu du modle ci-dessus il
est vident que le maxima est l'infini en vitesse et une pression qui tend vers zro...
comme quoi il faut toujours se mfier des modles en dehors de leur domaine de dfinition:

R Statistical Software 1135/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plans de surfaces (quadratiques)


Plans composites centrs
Bon nous n'avons rien dmontr dans le cours thorique par rapport ce type de plans dont la
construction est relativement trs beaucoup empirique et faut aussi d'avoir une dmonstration
mathmatique pdagogique et lgante sous la main.

Nous allons comme dans le cours Minitat considrer les plans CC comme des black box avec
des valeurs en entres et en sortie dont nous connaissons les hypothses d'utilisation.

Voyons d'abord ce que nous pouvons obtenir avec la fonction rsmChoose( ) du package
qualityTools:

Nous avons alors:

R Statistical Software 1136/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

comparer avec Minitab...:

R Statistical Software 1137/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Analyse d'un plan composite centr


Le but va tre ici de construire et d'analyse le mme plan composite face centr qu'avec
Minitab.

Pour cela nous commenons par utiliser la fonction rsmDesign( ) avec les paramtres ad hoc
pour retomber sur le mme plan que dans le cours Minitab:

ou dans l'ordre en utilisant la commande randomize( ):

R Statistical Software 1138/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons dj mettre maintenant les noms des facteurs et leurs niveaux rels en utilisant
les commandes names( ), highs( ) et lows( ):

R Statistical Software 1139/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant, nous importons les valeurs mesures des deux rponses d'intrt qui sont les
mmes valeurs que dans le cours Minitab.

R Statistical Software 1140/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Pour cela, nous utilisons la fonction read.csv( ) comme l'habitude mais particulrement la
fonction response( ) du package qualityTools:

Ensuite, nous pouvons faire une rgression quadratique classique:

R Statistical Software 1141/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
L nous pouvons dj constater qu'il est trs dommageable que ce package utilise les units
codes pour faire la rgression plutt que les unites relles... donc perte de temps en
perspective par rapport Minitab pour exploiter cette rgression et aussi pour faire une
comparaison directer avec Minitab.

Ensuite vient la partie graphique o nous pouvons constater que les rsultats sont trs
similaires Minitab (difficile de dire s'ils sont parfaitement identiques).

Nous commenons avec les facteurs Taux et la Temprature:

R Statistical Software 1142/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1143/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous poursuivons avec les facteurs Temps et Temprature:

R Statistical Software 1144/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1145/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et jettons un coup d'oeil aux courbes de nivaux avec les facteurs Additif et Temprature:

R Statistical Software 1146/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant dfinissons les contraintes de dsirabilit pour chacune des rponses et prenons
les options le plus proches de celles de Minitab l'aide de la fonction desirability( ):

Nous pouvons reprsenter graphiquement la dsirabilit:

R Statistical Software 1147/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Faisons un petit rsum pour contrler si jusqu'ici tout est bien dfini:

R Statistical Software 1148/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant avec la fonction optimum( ) du package qualityTools nous allons pouvoir
vrifier si nous retombons sur la mme rponse que Minitab:

et nous pouvons conster que nous en sommes trs loin...

ToDo: Voir si c'est un bug ou une erreur de manipulation de ma part

R Statistical Software 1149/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plans de mlanges
Plan de mlange centr du simplexe
Le but va tre de vrifier ici (comme l'habitude) les calculs appliqus relatifs aux
dmonstrations mathmatiques faites dans le cours thorique relativement aux plans de
mlanges avec points aux sommets et comparer aussi accessoirement les rsultats obtenus
avec Minitab.

Nous allons utiliser la commande mixDesign( ) du package qualityTools:

La construction du plan de mlange tant faite, faisons en quelques analyses avec d'abord un
rsum:

R Statistical Software 1150/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous appliquons le classique modle linaire gnralis gaussien avec interactions:

R Statistical Software 1151/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Alors nous retrouvons bien les valeurs des coefficients calculs la main mais chose
curieuse... R (comme Minitab) n'arrive pas calculer l'erreur ni les intervalles de confiance et
la p-value alors que nous avons dmontr qu'un tel calcul tait possible (et nous l'avons fait!).
Raison pour laquelle... (encore une fois!) il est important de rappeler qu'il faut toujours
plusieurs progiciels de statistiques pour faire des tudes srieuses et un peu plus sres.

Faisons maintenant une ANOVA du modle quadratique complet:

R Statistical Software 1152/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons voir que celle-ci est plus intressant qu'avec Minitab o nous n'avions qu'un
rsum objectivement peu exploitable (Minitab faisant la somme des termes linaires et la
somme des termes quadratiques dans le tableau de l'ANOVA).

Finissons par un plot (le rendu est meilleur que Minitab mais les finitions prennent ce jour
plus de temps que dans Minitab) en utilisant respectivement les commandes contourPlot3( )
et wirePlot3( ) du package qualityTools (ce qui nous permet d'viter d'expliciter les termes
d'interactions car il les prendra en compte automatique)

R Statistical Software 1153/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et pour la surface de rponse:

R Statistical Software 1154/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons donc beaucoup moins d'options que dans Minitab mais pour du gratuit c'est quand
mme extraordinaire.

R Statistical Software 1155/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

20. Ingnierie de la qualit (Six Sigma/SPC)


Le but de ce chapitre va tre de vrifier si nous pouvons nous dbarrasser de Minitab en
utilisant R pour le domaine de l'ingnierie de la qualit et l'application de la mthode Six
Sigma dans la matrise statistique des processus (SPC: Statistical Process Control).

La majorit de ce chapitre (si ce n'est la totalit en ralit) se satellise autour du package qcc.

Exercice 243.: Rendement Global Combin et DPU/DPMO


R 3.1.0

Nous avons tudi dans le cours de gnie industriel la notion de rendement global combin et
de DPU/DPMO dans le cadre de processus auxquels nous appliquons l'approche Six Sigma.

Voyons ce que le package Six Sigma nous propose avec la commande ss.ca.yield( ) dans le
cas d'un procd de fabrication o sur un total de 1915 units produites nous avons la
respectivement aux trois premires tapes du processus 3, 5 et 12 lments dfectueux et nous
avons chaque tape respectivement rinject 1, 2 et 4 lments retouchs (corrig):

Contrlons la premire valeur le taux d'efficacit du processus (Yield):

R Statistical Software 1156/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
tout est ok, c'est logique... c'est trivial!

Contrlons la deuxime valeur qui est le taux d'efficacit avec retouches (FTY: First Time
Yield):

C'est conforme aussi, logique et trivial!

Voyons comment le package SixSigma calcule la troisime valeur qui est le rendement global
combin (RTY: Rolled Troughput Yield):

La dfinition utilise n'est donc pas commune... puisqu' chaque tape il reprend la quantit
initiale. Dommage... (du moins ma connaissance).

Bon pour le DPU c'est simple:

R Statistical Software 1157/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais l encore... la dfinition prise par le package SixSigma n'est pas forcment des plus
judicieuses puisque normalement le DPU est le ratio du nombre total d'lments dfectueux
sur le nombre total d'unit de production observes...

Et pour le DPMO:

L aussi la dfinition utilise est discutable.

Raison pour laquelle il est toujours important de rappeler dans les rapports la dfinition
utilise dans votre entreprise!

Voir par exemple (outre le support du cours thorique), le site suivant pour un dfinition assez
courante:

http://www.isixsigma.com/dictionary/dpo/

R Statistical Software 1158/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 244.: Fonction de cot de perte de qualit de Taguchi


R 3.1.0

Nous allons vrifier ici que nous retrouvons donc les mmes valeurs que celles calcules la
main dans le cours thorique de Gnie Industriel.

Rappelons le le contexte:

Dans un projet, une tche de 4 jours a une marge totale de 2 jours. Si nous sortons de cette
marge, le projet va prendre du retard pour un cot de 1200.-/jour.

Quel est le cot rel associ 1, 2 et 3 jours de retard selon le modle de Taguchi?

Ds lors, en utilisant la commande ss.lf( ) du package SixSigma, nous obtenons:

Soit exactement les mmes valeurs que celles calcules la main!

Maintenant voyons un cas de calcul avec la situation vue dans le cours thorique, appele "le
nominal est le meilleur.

Nous importons d'abord les donnes:

R Statistical Software 1159/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous utilisons la commande ss.lfa( ) du package SixSigma ce qui nous donne la
sortie suivante dans un premier temps:

Ce qui correspond bien aux calculs faits la main dans le cours thorique. Nous avons aussi
automatiquement le graphique suivant donn par R qui correspond aussi ce qui a t vu dans
le cours thorique:

R Statistical Software 1160/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1161/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 245.: Analyse SixPack (+ analyse capabilits +


intervalles de confiance des capabilits)
R 3.0.2

Encore une fois, nous allons contrler que nous obtenons les mmes donnes que celles
calcules manuellement dans le cours thorique, ainsi qu'avec Microsoft Excelet Minitab.

La fonction que nous allons utiliser ici n'est plus disponible depuis la version 2.2 du package
qcc (on se demande bien sous la pression de qui...). Il faut donc dcompresser le fichier:

que je vous mets disposition pendant le cours et tlchargeable ici:


http://cran.r-project.org/src/contrib/Archive/qcc/

y prendre les fichiers suivants:

Nous travaillerons avec les mmes donnes brutes, c'est--dire:

Ensuite, nous utilisons les commandes qcc.groups( ) pour prparer les donnes:

R Statistical Software 1162/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous sommes obligs de choisir au moins une carte de contrle pour l'analyse six
pack. Nous prendrons alors une carte X-barre en utilisant la commande qcc( ):

avec le graphique associ:

R Statistical Software 1163/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc part l'esthtique qui est relativement mdiocre mais amliorable en changeant le code
source, nous retrouvons exactement les mmes rsultats que ceux calculs dans le cours
thorique et dans Minitab except pour le LCL et l'UCL o il y a une diffrence de quelques
pourcents.

Et c'est maintenant que vient la commande qui a disparue dans les nouvelles versions du
package. Nous allons donc utiliser la commande process.capability( ):

R Statistical Software 1164/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

avec le graphique:

R Statistical Software 1165/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L aussi les rsultats ne sont pas tout fait les mmes que ceux calculs dans le cours
thorique et que ceux calculs la main mais il y a toutefois un avantage trs intressant avec
R: nous avons les intervalles de confiance pour tous les indicateurs de capabilit :-)

Et avec la commande process.capability.sixpack( ) qui a aussi disparue dans les dernires


versions du package qcc, nous avons:

Avec le graphique associ (la encore on est loin derrire la qualit esthtique de Minitab o de
la pertinence des informations que donne ce dernier sur le graphe SixPack:

R Statistical Software 1166/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant, voyons ce que nous obtenons avec la fonction pcr du package qualityTools:

et avec le graphique est le indicateurs (dont nous voyons que ces derniers ne respectent pas la
notation d'usage... d'o l'importance de suivre les normes pour ne pas se mlanger les
pinceaux):

R Statistical Software 1167/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

comparer avec le graphique obtenu avec Minitab les donnes calcules la main dans le
cours thorique!

R Statistical Software 1168/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 246.: Constantes de Hartley et autres constantes des


cartes de contrle
R 3.1.0

Lors de notre tude des statistiques de rangs nous avons dmontr qu'une constante mergait
qui dpendant du nombre de rangs et qui nous tait indispensable pour construite un certain
nombre de cartes de contrle.

Plutt que de faire rfrence des tables, le package SixSigma contient une commande
ss.cc.getd2( ) qui nous permet de rcuperer la valeur de la constante de Hartley pour un
certain nombre de rangs (taille d'chantillon). Nous allons vrifier ici dans un premier temps
que nous obtenons bien les valeurs obtenues dans le cours thorique pour la premire
constante de Harley d 2 :

R Statistical Software 1169/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

De mme pour la deuxime constante de Harley d 3 avec la commande ss.cc.getd3( ):

De mme pour la constante c4 dont nous avons dmontr l'origine dans le cours thorique de
Gnie Industriel:

R Statistical Software 1170/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1171/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 247.: Carte de contrle par attributs p (proportion)


R 3.0.2

Dans le cadre de contrle de lots nous avons obtenus les mesures suivantes:

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1172/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs. Sympa!!!

R Statistical Software 1173/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 248.: Carte de contrle par attributs de type np


(frquences)
R 3.0.2

Dans le cadre de contrle de lots nous avons obtenus les mesures suivantes:

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1174/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs.

R Statistical Software 1175/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 249.: Carte de contrle par attributs de type c


R 3.0.2

Dans le cadre de contrle de lots nous avons obtenu les mesures suivantes:

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1176/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs.

R Statistical Software 1177/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 250.: Carte de contrle par attributs de type u


R 3.0.2

Dans le cadre de contrle de lots nous avons obtenu les mesures suivantes:

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1178/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs.

R Statistical Software 1179/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 251.: Carte de contrle par mesures X barre-S


simple
R 3.0.2

Dans le cadre de contrle d'une production sous contrle statistique nous avons obtenu les
mesures suivantes (chaque ligne est pour rappel une journe de mesures):

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1180/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs.

R Statistical Software 1181/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Courbe d'efficacit
Nous avons vu dans le cours thorique comment calculer l'erreur de type II d'une carte de
contrle de type X-barre. Le but ici est de vrifier que nous retrouvons les mmes rsultats
sous les mmes hypothses.

Pour cela, nous utilisons la fonction oc.curves( ) du package qcc:

et nous obtenons alors:

Ce qui correspond parfaitement aux calculs faits la main.

R Statistical Software 1182/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 252.: Carte de contrle par mesures S barre-S simple


R 3.0.2

Dans le cadre de contrle d'une production sous contrle statistique nous avons obtenu les
mesures suivantes (chaque ligne est pour rappel une journe de mesures):

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1183/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs.

Malheureusement il n'est pas possible ma connaissance de combiner dans une seule fentre
la CC X barre-S et la CC S barre-S et ce mme avec la commande par(mfrow=c(2,2))
contrairement Minitab...

Il ne semble pas possible non plus, contrairement Minitab, d'avoir une abscisse base sur
des dates (timbres).

R Statistical Software 1184/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 253.: Carte de contrle par mesures R barre-R


simple
R 3.0.2

Dans le cadre de contrle d'une production sous contrle statistique nous avons obtenu les
mesures suivantes (chaque ligne est pour rappel une journe de mesures):

Et nous utilisons encore une fois la commande qcc( ):

R Statistical Software 1185/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc les mmes valeurs et la mme carte que dans le cours de statistique
thorique et Microsoft Excelainsi que Minitab.

Cependant avec un plus: R dtecte les anomalies de squences sous la dnomination Number
violating runs.

Malheureusement il n'est pas possible ma connaissance de combiner dans une seule fentre
la CC X barre-R (n'existe pas ce jour) et la CC R barre-R et ce mme avec la commande
par(mfrow=c(2,2)) contrairement Minitab...

Il ne semble pas possible non plus, contrairement Minitab, d'avoir une abscisse base sur
des dates (timbres).

R Statistical Software 1186/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 254.: Carte de contrle EWMA avec chantillons


R 3.0.2

Dans le cadre de contrle d'une production sous contrle statistique nous avons obtenu les
mesures suivantes (chaque ligne est pour rappel une journe de mesures):

Et nous utilisons encore une fois la commande ewma( ):

R Statistical Software 1187/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc quasiment les mmes valeurs que dans le cours thorique de
statistiques et que le cours Microsoft Excelet Minitab. Effectivement, nous y avions fait une
approximation en ce qui concerne les limites de contrle (indpendantes du temps t) et la
valeur du point de dpart d'o la petite diffrence.

R Statistical Software 1188/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 255.: Carte de contrle CUSUM


R 3.0.2

Dans le cadre de contrle d'une production sous contrle statistique nous avons obtenu les
mesures suivantes (chaque ligne est pour rappel une journe de mesures):

Et nous utilisons encore une fois la commande cusum( ):

R Statistical Software 1189/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons alors plusieurs curiosits. Bien que le forme de la carte CUSUM soit conforme,
impossible de dfinir a priori un V-masque et il semblerait qu'une deuxime ligne de mesures
est reprsente dans la carte de contrle (Ligne d'origine inconnue!). Les limites ne sont pas
non plus conformes ce que nous avons calcul dans le cours thorique ou mme obtenu avec
Minitab (le package prend le modle des limites fixes que Minitab propose aussi mais cela
serait toutefois mieux d'avoir le V-masque puisque c'est l'intrt principal de cette carte selon
moi).

La commande ne demande in extenso pas non plus les valeur de h et (ou in extenso de K).

A priori il vaudrait mieux mettre cette carte de ct ce jour... Donc affaire suivre!

R Statistical Software 1190/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 256.: Carte de contrle G


R 3.0.2

Nous reprenons les mmes donnes que dans le cours thorique et que dans le cours Minitab:

Et nous faisons une analyse:

R Statistical Software 1191/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons alors graphiquement:

R Statistical Software 1192/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L'allure de la carte est conforme ce que nous avons fait dans Microsoft Excelet Minitab.

Nous avons:

La limite suprieure qui est de loin infrieure celle de 278.2 donne par Minitab
mais elle correspond parfaitement la valeur calcule la main dans le cours
thorique
La valeur centrale de 39.23 qui est bien suprieure celle de 28.3 calcule par Minitab
mais elle correspond parfaitement la valeur calcule la main dans le cours
thorique

R Statistical Software 1193/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1194/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 257.: Carte de contrle multivarie T2 de Hotelling


R 3.1.2

Nous allons vrifier ici si nous retrouvons les mmes valeurs que dans le cours thorique et
que Minitab. Nous partons donc des mmes donnes:

Ensuite, nous lanons une analyse quantitative:

R Statistical Software 1195/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons la mme matrice de variances-covariances, la mme limite LCL mais par
contre la limite UCL diffre considrablement et en plus nous ne savons pas pour quel niveau
de confiance il est calcul?!

Qualitativement nous avons:

R Statistical Software 1196/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui est le mme graphique que celui obtenu la main part la limite suprieure qui est trs
loin de celle calcule la main ou de Minitab!

Pour ceux qui veulent l'ellipse de contrle correspondant, ils peuvent se rendre la page 768.
Mais au besoin voici une version simplifie ici mme:

R Statistical Software 1197/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 1198/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1199/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 258.: tude R&R (reproductibilit/rptabilit) pour


donnes continues
R 3.0.2

Une tude R&R mesure l'erreur de prcision en faisant mesurer par exemple une pice par
plusieurs fois et par des personnes diffrentes.

tant donn que cette pice ne change pas de taille, une variation dans les rsultats doit
reprsenter la rptabilit de la mesure et sa reproductibilit par diffrentes personnes.

Cette tude est trs simple et base sur l'ANOVA deux facteurs avec rptition dont on peut
dduire les donnes de l'tude R&R partir du tableau de l'ANOVA (TAV). Pour plus
d'exemples, le lecteur pour se rfrer la norme ISO/TR 12888:2011.

Considrons donc les donnes suivantes qui correspondent une ANOVA deux facteurs
avec rptition (il s'agit des mmes valeurs numriques que l'exercice de l'ANOVA deux
facteurs sans rptition vu plus haut mais dtourn).

Nous reprenons donc les donnes du cours Minitab pour vrifier la concordance:

et du package SixSigma17, nous utilisons la commande ss.rr( ):

17
Voir aussi la fonction gageRRDesign( ) du package qualityTools

R Statistical Software 1200/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc les mmes valeurs que dans le cours Minitab. Le graphique nous donne
quant lui (attention!! parfois il faut excuter la commande ss.rr( ) plusieurs fois pour que le
graphique s'affiche sans erreurs):

R Statistical Software 1201/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La lisibilit du graphique n'est pas des meilleures sur un petit cran mais part cela, nous
retrouvons bien les mmes informations que celles renvoyes par Minitab.

R Statistical Software 1202/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 259.: Coefficient de corrlation intra-classe ICC1


R 3.1.1.

Le but comme ici est comme l'habitude de vrifier les calculs obtenus la main dans le
cours thorique suite la dmonstration mathmatique de l'origine du coefficient de
corrlation intra-classe ICC1.

Nous pardons donc des mmes donnes que dans le cours thorique:

Nous utilisons le package psych pour faire l'analyse avec la fonction ICC( ) et le package
reshape2 avec la fonction acast( )18 pour restructurer les donnes:

18
Le "a" de acast( ) signifie "array" car la fonction dcast( ) du mme package renvoie un "data frame".

R Statistical Software 1203/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons donc besoin d'un array (le "a" de acast( )) mais si un jour vous veniez avoir
besoin d'un data frame vous pouvez utiliser dcast( ):

Une fois ceci fait, nous lanons l'analyse:

R Statistical Software 1204/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons bien pour le ICC1 celui du calcul fait la main suite la dmonstration
mathmatique faite dans le cours thorique. Pour les autres ainsi que les intervalles de
confiance il faudra attendre la rdaction d'une dmonstration mathmatique lgante pour
qu'elle soit prsente en classe.

R Statistical Software 1205/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Il est d'usage de prsenter un ICC avec son graphique classique utilisant la fonction dotplot( )
du package lattice:

Voil resultat superbe obtenu!

R Statistical Software 1206/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 260.: tude de l'instrumentation de type I


R 3.0.2

Bon revoil le sujet qui fait mal et dont nous avons pas mal parl dans le cours thorique de
MSP bien que la mathmatique (empirique) sous-jacente soit triviale.

Nous travaillons avec le mme jeu de donnes:

Et nous restons avec le package qualityTools en utilisant la commande cg( ):

R Statistical Software 1207/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

Bon ce n'est pas surprenant on retrouve un tout petit pourcentage prs les mmes valeurs
qu'avec Minitab mais rappelez-vous une chose. Dans l'tat actuel, trois logiciels (Minitab, R
et QIMacros) utilisent trois dfinitions diffrentes ( ce jour) de la capabilit de gabarit. Donc
le jour o il y aura une norme internationale qui mettra tout le monde d'accord on en
rediscutera.

R Statistical Software 1208/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 261.: Plan d'chantillonnage par attributs


R 3.0.2

Bon ce sujet est comme nous le savons dlicat tant donn qu'il existe plusieurs normes
nationales qui sont utilises l'instar des normes internationales ISO Nous avons dj pu le
vrifier avec Minitab o nous avions un cart d'environ 3% pour la taille de l'chantillon entre
les calculs thoriques et le logiciel et un cart de 7% pour le nombre d'lments dfinissant si
le lot est rejeter ou non.

Alors d'abord rappelons juste que dans Minitab nous avions pour les paramtres d'entres ci-
dessous (pour un plan par attributs!):

Ce qui nous avait donn:

R Statistical Software 1209/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec le package AcceptanceSampling il n'est pas possible de trouver le plan avec la mme
approche. Ce package exige que nous utilisions les probabilits d'acceptation et les
pourcentages de dfaillance. C'est--dire que nous supposons que nous avons l'avanc les
donnes suivantes:

Dans R, il nous faut alors utiliser la fonction find.plan( ) du package AcceptanceSampling et


nous pouvons comaparer le modle binomial au modle hypergomtrique trs facilement par
la mme occasion:

R Statistical Software 1210/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

o:

PRP signifie Producer Risk Point, le premier argument est le niveau de qualit auquel
nous voulons valuer le plan (AQL) et le second la probabilit minimale d'acceptation
du plan.
CRP signifie Consumer Risk Point, le premier argument est le risque de qualit auquel
nous voulons valuer le plan (RQL) et le second la probabilit maximale d'acceptation
du plan.

Nous retrouvons alors des valeurs "relativement" proches du plan propos par Minitab:

R Statistical Software 1211/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

21. Mthodes brutes d'infrences


Le but ici va tre de voir la puissance de frappe de R par rapport des logiciels de simulations
numriques comme Matlab, @Risk (inutile de mentionner les tableurs qui dans ces cas
business rels avec plus d'une dizaine de variables sont complments hors course).

Nous allons voir comment utiliser les mthodes de Monte-Carlo (mthodes pseudo/stratifies
ou de Faur), du Bootstrapping, du Jacknife et du Latin Hypercube que dont nous avons
tudi les bases thoriques dans le cours.

Exercices: Monte-Carlo
Comme nous l'avons mentionn dans le cours thorique, un l'aspect central des mthodes de
Monte-Carlo est surtout relatif la gnration de variables alatoires indpendantes ou non.

Mthode classique (variables pseudo-alatoires)


Nous retrouverons les mthodes de Monte-Carlo lors de l'tude des mthodes de scripting
dans R (programmation) partir de la page 1557.

Nous allons ici utiliser la puissance du C++ derrire R et la simplicit de sa syntaxe pour
reproduire en quelques secondes un exercice pour lequel il nous a fallu un peu plus de 45
minutes mettre en place dans le tableur MS Excel:

Avec un premier petit graph l'aide de nos connaissances cumule sur les graphiques:

R Statistical Software 1212/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et une deuxime petit graph encore plus important dans ce cas business:

Ce qui donne:

R Statistical Software 1213/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ainsi de suite avec tous les graphs que l'on veut en quelques secondes. Personnellement je
trouve donc R plus intressant et plus puissant que n'importe que tableur et mme plus rapide
que @Risk.

R Statistical Software 1214/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mthode de squence quasi-alatoire de Sobol


Nous avons mentionn dans le cours thorique que ces nombres pseudo-alatoires dont
l'origine est empirique permet souvent une meilleure convergence des calculs et nous en
avions fait l'exprience avec du VBA dans Microsoft Excel avec par exemple les nombres
quasi-alatoires de Faur. Nous allons voir ici un autre type empirique de nombre quasi-
alatoire que sont les squences de Sobol en utilisant la fonction sobol( ) du package
randtoolbox:

Ce qui donne visuellement:

R Statistical Software 1215/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mthode de squence quasi-alatoire Latin Hypercube


Nous avons aussi tudi thoriquement le principe mathmatique empirique des jeux de
variables alatoires Latin Hypercube qui n'ont normalement qu'un intrt qu' partir d'un
nombre de variables alatoires suprieur 1. videmment, au mme titre que la squence quasi-
alatoire de Sobol il ne sera pas possible de vrifier la conformit avec la gnration fait dans
Microsoft Excel mais voyons le principe puisque dans la pratique l'enjeur est important (des
logiciels comme @Risk utilisant ce type de simulation).

Nous allons pour cela utiliser la fonction randomLHS( ) du package lhs:

Ce qui donne:

R Statistical Software 1216/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mthode d'acceptation/rejet
Comme nous l'avons vu dans le cours thorique il s'agit d'une mthode dont l'algorithme
permettant de gnrer des variables alatoires d'une fonction de densit difficilement
inversible est trs simple mettre en place.

L'ide trs acadmique mais nanmoins plus raliste qu'avec l'exemple pris dans la formation
MATLAB est de gnrer un vecteur de variables alatoires d'une distribution beta de
paramtres 6 et 3:

Nous avons alors trivialement:

R Statistical Software 1217/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne visuellement:

R Statistical Software 1218/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1219/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 262.: Jacknife


R 3.0.2

Le but ici va tre de mettre en pratique la technique jacknife mentionne dans le cours
thorique de Mthodes Numriques une petite rgression univarie.

Nous allons de suite voir avec cet exemple pourquoi la taille de l'chantillon a une importance
plus grande avec le Jacknife qu'avec le Boostrap que nous verrons juste aprs:

Cela donne donc:

R Statistical Software 1220/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou en utilisant directement la commande jackknife( ) du package bootstrap:

et pour le jacknife d'une simple somme:

R Statistical Software 1221/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et pour avoir une petit histogramme vite fait mal fait:

R Statistical Software 1222/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices: Bootstrap
Nous allons voir ici une des techniques de statistatistiques dites par "permuations" que nous
avons trait dans le cours thorique. Et comme l'habitude par difficult croissante!

Bootstrapping univari
R 3.0.2

Nous allons ici mettre en oeuvre avec une facilit extrme l'exemple d'infrence par mthode
brute que nous avions mis en place avec MS Excel.

Nous partons du mme jeu de donnes et allons aussi faire de l'infrence sur la mdiane en
utilisant les commandes boot( ) et boot.ci( ) du package boot:

Donc comme nous pouvons le voir pour la partie percentile que nous avions calcul avec
Microsoft Excelnous ne sommes pas loin puisque nous avions obtenu (7.00, 29.5).... mais pas
sans peine!

Nous pouvons avoir un petit complment graphique:

R Statistical Software 1223/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et ainsi de suite pour toute autre statistique possible et imaginable!

R Statistical Software 1224/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Rgression Bootstrap
Nous allons faire une rgression bootstrap multivarie de notre fameux jeu de donnes:

Nous allons faire un bootstrap sur tous les coefficients avec un intervalle de 95%:

Ensuite nous lanons l'analyse quantitative:

R Statistical Software 1225/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et la qualitative de la constante:

R Statistical Software 1226/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Du premier coefficient:

et ainsi de suite jusqu' index=4.

R Statistical Software 1227/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

22. Dcisionnel
Bon pour l'instant pour tre honnte je n'ai pas trouv grand-chose au niveau dcisionnel dans
R donc ce chapitre a un contenu qui est ngligable. Cependant et comme l'habitude cela
permet de vrifier des rsultats calculs la main dans le cours thorique.

Exercice 263.: Business Process Analysis


R 3.4.1

Pour tudier les fonctions de business process analysis, nous allons nous baser sur les
packages bupaR, xesreadR et processmapR (tous du mme auteur!) et en utiliser un fichier
*.xes (eXtensible Event Stream19) avec le contenu suivant:

Donc nous chargeons d'abord les packages et ensuite le fichier *.xes d'exemple l'aide de la
fonction read_xes( ):

19
Il s'agit du format normalis des logiciels qui stockent en temps rel ou manuellement les tapes d'avancement
de processus business.

R Statistical Software 1228/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons d'abord le graphique suivant nomm bien videmment dotted_chart:

R Statistical Software 1229/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Qui par Case_ID donne donc la rpartition dans le temps du type d'activits identifies ou
dclenches.

Ensuite, on a la commande activity_dashboard:

R Statistical Software 1230/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Qui donne bien l'impression de lancer un tableau de bord R Shiny:

R Statistical Software 1231/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et la commande resource_dashboard:

Qui donne une multitude de graphiques (dont certains sont redondants):

R Statistical Software 1232/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1233/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1234/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1235/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1236/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore avec la commande rework_dashboard:

R Statistical Software 1237/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

Et pour la commande performance_dashboard:

R Statistical Software 1238/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne (nous n'avons pas reprsent les graphiques vides!):

R Statistical Software 1239/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande process_map( ):

R Statistical Software 1240/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

Ou encore avec la commande trace_explorer( ):

R Statistical Software 1241/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et la commande activity_presence:

R Statistical Software 1242/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et la commande resource_matrix:

R Statistical Software 1243/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et la commande precedence_matrix:

R Statistical Software 1244/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1245/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 264.: Analyse Procdurale Hirarchique


R 3.1.1

Bon il s'agit ici d'analyse une matrice de prfrence un niveau qui pour rappele est bas sur
troix choix d'un facteur A:

[Choix A] 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 [Choix B]

[Choix A] 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 [Choix C]

[Choix B] 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 [Choix C]

Ce qui donne sous forme de matrice:

Facteur A Choix A Choix B Choix C


Choix A 1 1/3 5
Choix B 3 1 7
Choix C 1/5 1/7 1

D'abord vrifions qu'il y a une faible inconsistance a priori en analysant avec R les trois
valeurs propres:

Donc c'est tout jusque l! Poursuivons avec la fonction ahp( ) du package pmr:

R Statistical Software 1246/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc avec R les valeurs calcules approximativement avec un logiciel
comme Microsoft Excelexcept pour l'indice de Koczkodaj que nous n'avons pas tudi dans
le cours thorique.

Ceux qui me connaissent savent que lorsque je le peux montre l'article original des auteurs
comme exemple de base dans mes cours. Donc dans le cas prsent prenons le premier
example de l'article de Gale & Shapley (1962 et prix Nobel en 2012):

R Statistical Software 1247/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La solution est ici triviale mais le but est de voir si l'algorithme converge vers la solution
triviale (qui est la diagonale). Nous avons alors en utilisant le package matchingMarkets la
fonction daa( ). Nous avons alors (voir la capture unique la page suivante):

R Statistical Software 1248/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le rsultat est bien conforme!

R Statistical Software 1249/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 265.: Problmes des mariages stables (algorithme de


satisfaction de Lloy Shaply)
R 3.2.1

Nous allons ici monter une implmentation de l'algorithme des mariages stables dont les
applications sont courantes dans l'affectation des tudiantes des coles en fonction des
prfrences des uns et des autres. Ce modle est un cas acadmatique de l'application de la
thorie des jeux est il est trs connu car outre le fait qu'il soit trs utilis dans la pratique, il est
trs simple apprhender et de plus un de ses fondateurs (Lloy Shaply) est prix Nobel
d'conomie pour des travaux relatifs ce type de problmatique.

Ce problme consiste trouver, tant donn n hommes et n femmes, une faon stable de les
mettre en couple. La stabilit signifie que chaque femme et chaque homme prfre rester avec
son conjoint prsent plutt que d'tre avec quelqu'un d'autre. Un exemple de situation instable
serait que Monsieur Dupont prfre Madame Durand Madame Dupont, et Madame Durand
prfre Monsieur Dupont Monsieur Durand.

Plus formellement, on se donne deux ensembles A et B ayant chacun n lments. On se donne


aussi, pour chaque lment de A et B, une fonction de prfrence, qui classe les lments de
l'autre ensemble. On cherche alors associer de faon bijective les lments de A avec ceux
de B, pour qu'il n'existe pas a A et b B tels que a prfre b l'lment qui lui est
associ, et b prfre a l'lment qui lui est associ.

Reste suivre

R Statistical Software 1250/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 266.: Chanes de Markov Discrtes (Discrete Time


Markov Chain (DTMC))
R 3.2.1

Nous avons vu dans le cours thorique que les chanes de Markov discrtes (dans le temps)
pouvaient tre trs utiles en biologie (dynamique des populations) en thorie des graphes
associes aux probabilits (probabilit de passage d'un tat l'autre) ainsi qu'en maintenance
et mtorologie. Bien que leur application soit bien plus vaste considrons l'tude d'un cas
trivial inspir 99% du blog de Nicole M. Radziwill:
http://qualityandinnovation.com/2015/12/08/a-discrete-time-markov-chain-dtmc-sir-model-in-r/#comments

D'abord nous dfinissons la matrice de transition et affichons le graphe de Markov


correspondant de surveillance d'une machine trois tats {Oprationnelle, Maintenance,
Panne}:

Ce qui donne au niveau du graphe:

R Statistical Software 1251/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous procdons maintenant 100 simulations temporelles t=0..100:

R Statistical Software 1252/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et le graph correspondant:

R Statistical Software 1253/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

23. Machine Learning (Big Data20/B.I. avance)


Il s'agit ici de prsenter l'ensemble des techniques empiriques de Machine Learning
(supervises ou non supervises) dont les dtails mathmatiques ont t vus dans le cours
thorique.

Attention!!! Rappelons que dans la pratique nous avons sparons normalement toujours les
donnes initiales en trois jeux:

1) Le jeu d'entranement
2) Le jeu de test
3) Le tout

Ainsi, L'ensemble des fonctions de Data Mining de R permet de mettre en entre un jeu
d'entranement et ensuite de faire une prdiction avec un jeu de test pour crer une matrice de
confusion et de conclure...

Il convient d'utiliser avec toute la prudence ncessaire et l'esprit trs critique ces techniques
empiriques car parfois les rsultats peuvent mener des aberrations (et ce d'autant plus que le
jeu de donnes est petit).

Le Data Mining est la technique qui fait appel la quantit chaque fois que l'on veut
congdier la qualit...

Prambule
Suite l'insistance d'un client qui n'avait pas mis en place de cours thorique dans son
organisation voici exceptionnellement quelques petites notions de culture gnrale reprises du
cours thorique:

En analyse de donnes statistiques, le clustering (data clustering pour les anglophones) dcrit
des mthodes empiriques de classification de donnes (mthode de regroupement
hirarchique ou mthode de partitionnement de donnes).

Il s'agit de techniques permettant typiquement la segmentation de l'ensemble des clients d'une


entreprise en fonction de leur dmographie ou de leurs habitudes d'achat, de grouper des
documents pour des prsentations, d'identifier de nouvelles espces animales ou vgtales, de
regrouper de l'information ou des individus par par intrts.

Nous considrons dans la pratique deux grandes familles de techniques de clustering


(attention! mme les spcialistes du domaine n'arrivent pas se mettre d'accord sur une
classification commune...):

1. Les "techniques non hirachiques": c'est--dire o le nombre de classes (groupes)


finales est choisi l'avance.

20
Rappelons que le Big Data n'est pas une mthode d'analyse mais un champ d'tudre relativement au stockage,
la gestion et l'exploitation des donnes.

R Statistical Software 1254/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
2. Les "techniques hirarchiques": c'est--dire o l'on aboutit un classement par
agrgations successives.

Parmi ces deux familles nous distinguons grossirement deux-sous familles:

1. Les techniques qui font usage de donnes dont la proprit nominale de classification
est connue l'avance pour entraner un modle de prdiction: "machine learning" ou
"apprentissage supervis" ("supervised learning" en anglais). Nous y retrouvons la
techniques de rgression logistique binaire, les CRT, l'ID3, l'analyse discriminante, les
rseaux baysiens, les listes de dcisions, les k-NN, les rseaux de neurones....

2. Les techniques qui font usage de donnes dont aucune proprit nominale connue
l'avance ne laisse supposer d'une classification et qui cherchent une classification
possible (c'est ce qui au niveau du business est souvent le plus intressant): "data
mining" ou "apprentissage non supervis" ("unspervised learning" en anglais) ou plus
rarement "fouille de donnes", "forage de donnes", "prospection de donnes". Nous y
retrouvons les techniques CAH, les k-means, etc.

L'utilisation industrielle ou oprationnelle de ce savoir dans le monde professionnel permet de


rsoudre des problmes trs divers, allant de la gestion de la relation client la maintenance
prventive, en passant par la dtection de fraudes ou encore l'optimisation de sites web, la
surveillance des marchs financiers, la prospection pro-active (prfrences de consommation
des clients), l'optimisation des chemins (analyse des routes bouchons et virages gauche),
ou choix des cibles (probabilit d'acqurir un nouveau prospect donn), anticiper
l'identifications des terroristes, etc.

Remarque: Attention ne pas confondre en toute rigueur les notions de classification,


segmentation et association. Bien que les deux premiers soient souvent confondus
(classification/segmentation) car de nombreux algorithmes font les deux la fois, la
classification est la prdiction d'une ou plusieurs variables discrtes base sur la valeur des
autres champs du jeu de donnes alors que la segmentation divise les donnes en groupes
d'lments ayant des proprits les plus identiques possible. Quant l'association il est bien
vident que de nombreux algorithmes de segmentation montre qui est associ avec quoi mais
l'ide proprement parler de l'association est de quantifier par un scalaire le degr
d'association entre deux jeux de donnes.

Fin du prambule!

Signalons avec de commencer avec les cas pratiques un petit package visuel pour faire
quelques analyses de Data Mining pour ceux qui aiment les interfaces graphiques... Il s'agit du
package rattle:

R Statistical Software 1255/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

qui donne:

R Statistical Software 1256/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 267.: caret (classification and regression training)


R 3.0.2

Le package caret est trs utile pour prparer les donnes dans le cadre du Data
Mining/Machine Learning (gain de temps considrable) et particulirement dans le domaine
de la transformation de variables et rduction dimensionnelle. Ce n'est d'ailleurs pas la
premire fois que nous l'utilison dans ce livre.

Voyons quelques exemples.

Nous chargeons donc d'abord le package caret avec le jeu de donnes qui va nous
accompagner tout du long:

On commence le classique consistant centrer rduire les donnes avec la fonction


preProcess( ):

R Statistical Software 1257/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite la transformation qui normalise tout dans une plage Min-Max, toujours avec
preProcess( ):

R Statistical Software 1258/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et pour normaliser un, la non-moins fameuse transformation de Box-Cox, toujours avec la


fonction preProcess( ):

R Statistical Software 1259/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et la transformation de Yeo-Johnson, toujours avec la fonction preProcess( ):

R Statistical Software 1260/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et pour faire une analyse en composantes princiaples et automatiquement extraire les axes
principaux qui "expliquent" 95% de la variance, nous avons l encore trs facilement et
toujours avec la fonction preProcess( ):

R Statistical Software 1261/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi faire une analyse en composantes indpendantes (ICA), toujours avec la
fonction preProcess( ):

R Statistical Software 1262/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous pouvons complter les valeurs manquantes numriques avec les k-NN, encore et
toujours avec la fonction preProcess( ):

R Statistical Software 1263/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1264/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 268.: Partitionnement


R 3.0.2

La base rigoureuse du data mining est de sparer le jeu de donnes en 3 ensembles qui sont
dans l'ordre:

1. Entranement (calibrage) des modles pour dterminer les paramtres

2. Validation pour le choix du modle qui performe le mieux ou pour affiner un modle

3. Test du modle choisi pour vrifier sa prcision

Une manire simple de procder et d'utiliser la fonction sample( ) que nous avons dj tudi:

R Statistical Software 1265/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 269.: OneR (rgle unique de classification)


R 3.0.2

Nous allons maintenant appliquer l'algorithme lmentaire One Rule rappelons que cet
algorithme fonctionne avec des variables (qualitatives) nominales et choisit parmi l'ensemble
des prdicteurs proposs seulement l'unique prdicteur qui en proportion explique le mieux la
variable d'intrt.

Attention l'exemple qui suit ne marche qu'avec la version 32 bits de R!!!

Reprenons l'exemple vu dans le cours thorique en utilisant la commande OneR( ) du


package RWeka:

Comme nous pouvons le constater (c'est tellement simple que mme un enfant pourrait mettre
cet algorithme dans n'importe quel tableur) entre Dplacements et Moustaches, l'unique

R Statistical Software 1266/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
prdicateur qui donne le meilleur rsultat est Dplacements. La fonction nous aussi dj les
sorties potentielles pour un type de Dplacements donn.

Bref c'est sympa et ludique mais tellement trivial que nous n'irons pas plus loin.

R Statistical Software 1267/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 270.: A priori


R 3.4.1

L'algorithme d'A priori est assez simple mais asez gourmand algorithmiquement parlant.
Voici un exemple d'application:

R Statistical Software 1268/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 271.: Classification par induction CN2


R 3.4.1

Dans les rgles de classification par induction, celle qui suit immdiatement la OneR (unique
rgle base sur la frquence de l'attribut cible pour rappel) est la classification par induction
avec attributs et rgles logiques non hirarchiques.

Voyons cela avec le jeu de donnes suivant:

Ensuite, nous utilisons les fonctions SF.asDecisionTable( ) et RI.CN2Rules.RST( ) du


package RoughSets:

R Statistical Software 1269/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1270/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 272.: Classification par induction ID-3 et PRISM


R 3.1.2 i386

Nous allons ici vrifier la technique de clustering ID-3 et PRISM que nous avons tudi dans
le cours thorique de Mthodes Numriques et calcul la main.

Nous allons donc travailler avec le fichier suivant et donc avec les mmes donnes que dans
le cours thorique:

et l au jour o j'cris ces lignes il faut savoir que:

1. Je n'ai pas trouv de mthodes autres que d'utiliser le package RWeka

2. Cela ne marche que sur la version 32 bits de R

Les tapes sont directement commentes dans les captures d'cran:

R Statistical Software 1271/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1272/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1273/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous n'avons donc pas a priori le niveau de finisse de paramtrage de Tanagra mais bon

comparer avec Tanagra (les rsultats sont les mmes):

et cela est conforme aux rsultats obtenus dans le cours thorique.

Dommage (au mme titre que pour Tanagra) qu'il n'y ait pas de diagramme cependant... cela
aiderait la comprhension.

Et pour PRISM il s'agit d'utiliser:

R Statistical Software 1274/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1275/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 273.: Classifiction par induction C5


R 3.4.1

Nous avons parl de cet algorithme dans le cours thorique. Nous allons voir quel niveau il
donne des rsultats similaires ou diffrents de ID3 vu juste prcdemment. Pour cela nous
chargeons le package C50 et le mme jeu de donnes qu'avant:

Nous entranons l'algorithme avec la fonction C5.0( ):

R Statistical Software 1276/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous affichons le rsum ( comparer avec le rsultat de l'algorithme ID3):

R Statistical Software 1277/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et nous pouvons aussi faire un graphique:

R Statistical Software 1278/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 1279/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 274.: Classification Ascendante Hirarchique


(CAH/Dendrogramme)
R 3.0.2

Nous allons donc vrifier ici si nous obtenons le mme dendrogramme que dans le cours
thorique (o nous nous tions follement amus calculer la main....) et par la mme
occasion nous pourrons vrifier si Minitab utiliser avec l'OBS une agglomration nave ou
non. Nous utilisons donc les mmes donnes que dans le cours thorique:

Nous pouvons d'abord avec la commande native dist( ) afficher la matrice symtrique des
distances euclidiennes:

R Statistical Software 1280/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bon nous n'y voyons pas toute la matrice (pas assez de place sur la capture d'cran) mais les
valeurs sont bien les mmes que celles calcules la main. Vrifions maintenant que nous
avons bien le mme dendrogramme avec la commande hclust( ):

R Statistical Software 1281/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et tout est donc bien conforme :-)

R Statistical Software 1282/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

CAH avec bagging (bootstrap aggregating)


Un algorithme d'apprentissage est dit instable si de petits changements dans le jeu
d'entranement conduisent des modles significativement diffrents et donc des conclusions
relativement diffrentes aussi.

Des mthodes d'analyses instables peuvent voir leur pouvoir prdictif amlior par
perturbations et combinaisons des diffrentes rsultats et en incluant des corrections
successives via des pondrations et diffrentes approches empiriques de corrections. L'ide du
bagging (ou "bootstrap aggrgatif") est donc similaire au boostrapping la diffrence que des
paramtres ajouts au modle sont changs chaque itration.

Effectuons un bagging du CAH prcdent en utilisant une mthode propose par Simon Raper
sur le lien suivant:

https://github.com/SimonRaper/buster

Ce qui donne:

Avec:

R Statistical Software 1283/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Les lments instables sont donc les lments 6 et 7.

R Statistical Software 1284/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 275.: K-means (k moyennes en groupe)


R 3.0.2

Nous reprenons les donnes utilises dans le cours thorique (dont nous avons enlev
l'appartenance aux groupes catgoriels connus a priori pour des raisons videntes de
simplicit):

Que nous souhaitons associer en trois groupes distincts. Nous utilisons alors la commande
kmeans( ):

R Statistical Software 1285/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc les mmes rsultats qu'avec Minitab (et a peu prs les mme que ceux
calculs la main dans le cours thorique).

Voyons si nous pouvons faire mieux avec un visuel:

R Statistical Software 1286/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou toujours sans packages:

R Statistical Software 1287/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et avec un autre visuel un peu plus technique (je dois encore dterminer ce que les nombres
tout droite signifient...) en utilisant les commandes daisy( ) et silhouette( ) des packages
respectifs cluster et HSAUR:

R Statistical Software 1288/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore mieux en utilisant la commande clusplot( ) du package fpc:

R Statistical Software 1289/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon, chose trs importante, il est possible d'assigner un nouvel lment l'aide de la
fonction cl_predict( ) du package clue:

R Statistical Software 1290/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1291/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 276.: K-medoides


R 3.3.1

Donc ici le but est de voir comment utiliser l'algorithme que nous avons mentionn dans le
cours thorique. Nous utilisons donc la commande pam( ) du package cluster:

Ce qui donne:

R Statistical Software 1292/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sinon il est possible de classer un nouvel lment rapidement avec la fonction cl_predict( )
du package clue:

R Statistical Software 1293/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 277.: K plus proches voisins (k-NN: k nearest


neighbours)
R 3.0.2

Rappelons que ce modle fonctionne particulirement bien avec un trs grand nombre de
donnes et surtout si les donnes utilises pour la distance sont numriques et continues afin
de pouvoir calculer la distance euclidienne comme c'est le cas ci-dessous. Dans le cas de
valeurs nominales ou ordinales, il faut avec la plus grande prudence les convertir en facteurs
numriques.

Nous reprenons les donnes utilises dans le cours thorique:

Et nous souhaiterions savoir comment selon la distance euclidienne, une tomate de douceur 6
et de croquant 0 sera donc classifie... Nous obtenons alors:

R Statistical Software 1294/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que dans tous les cas la tomate est classifie en tant que fruit (ouf!) que son plus
proche voisin (modle 1-nn) fait partie forcment que d'une seule des classes (d'o le
1=100%). Avec les deux plus proches voisins (modle 2-nn) nous avons encore une fois deux
plus proches voisins faisant partie de la mme classe (donc 2/2=1=100%). Avec les trois plus
proches voisins (modle 3-nn) nous avons 2 lments de la mme classe et 1 de classe
oppose (donc 2/3=0.66=66%). Avec les 4 plus proches voisions (modle 4-nn) nous avons 2
lments de la mme classe et deux lments de deux autres classes (donc 2/4=0.5=50%).

R Statistical Software 1295/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 278.: Classification baysienne nave


R 3.0.2

Nous allons ici encore et encore une fois utiliser les mmes donnes que dans le cours
thorique:

et comparer le rsultat avec ceux calculs la main.

Pour cela, nous allons utiliser la commande naiveBayes( ) du package e1071.

Attention!!! Le package e1071, ne s'installera pas dans R3.0.2 ou d'autres versions si vous ne
spcifiez pas le serveur source comme tant l'Autriche (Austria) qui est le pays d'origine de
ceux qui ont dvelopp ce package.

Nous utilisons ensuite la commande naiveBayes( ) pour entraner le modle et la commande


predict( ) pour le test sur la dernire ligne:

R Statistical Software 1296/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons donc le mme rsultat que dans le cours thorique.

Nous pouvons mme faire un contrle sur les donnes d'entranement elles-mmes:

Nous rutiliserons cette fonction lors de notre tude du Texte Mining pour l'analyse de
sentiments (voir page 1617).

Donc comme nous pouvons le voir... un modle sur une technique empirique reste une
modle et de plus avec aussi peu de donnes...

R Statistical Software 1297/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 279.: Classification SVM (Support Vector Machine)


R 3.2.1 x86

Nous allons commencer comme dans le cours thorique avec le cas linaire. Les donnes
seront donc les mmes et dans ce cas particulier rduit un exemple deux dimensions
seulement:

Ensuite nous utilisons la fonction svm( ) du package e1701 pour crer le modle:

Ce qui nous donne:

R Statistical Software 1298/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Outre le fait que le rsultat est esthtiquement mauvais (certains points sont sur la bordure, il
n'y pas de grille, ni d'axes), nous remarqueons que par rapport au cours thorique la
fonction intgre prend immdiatement un modle quadratique. Mme si le rsultat est
toutefois OK il n'est pas possible ce jour d'obtenir exactement le rsultat du cours thorique
tant donn qu'il n'existe pas d'option pour forcer un modle linaire simple.

Nous pouvons avec la fonction predicted( ) vrifier le rsultat obtenu:

R Statistical Software 1299/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons maintenant avoir une approche plus "Data Mining" avec un jeu d'entranement
et un jeu de test:

Et nous avons donc dans notre cas prsent les commandes suivantes pour notre mini matrice
de confusion (ben oui tant donn la taille du jeu de test les valeurs qui sont dedans ne sont
pas bien grandes):

R Statistical Software 1300/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons faire la mme chose avec le jeu de donnes non linaire du cours thorique:

Ce qui donne:

R Statistical Software 1301/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il est donc dommage que nous n'ayons pas automatique un plot de l'espace de projection tel
que vue dans le cours thorique. Sinon nous voyons aussi que la fonction choici n'est pas la
mme que dans le cours thorique mais que le rsultat test toutefois le mme.

R Statistical Software 1302/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 280.: Classification CART (arbres de rgression de


classification)
R 3.0.2

Nous allons ici encore et encore une fois utiliser les mmes donnes que dans le cours
thorique:

et comparer le rsultat avec ceux calculs la main et obtenus avec Tanagra.

Rappel: Les techniques de classification (sgmentation) par arbres sont souvent utilises en
marketing pour analyser les cibles rpondant le mieux certaines campagnes marketing. Les
praticiens du marketing appellent cela des "modles uplift" et certains statisticiens des
"partionnement rcursif".

Pour cela, nous allons utiliser la commande rpart( ) du package rpart avec des paramtres
qui comme nous allons le voir sont loin d'tre triviaux deviner.

D'abord nous indiquons le minimum syndical:

R Statistical Software 1303/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme nous pouvons le voir, le rsultat n'est vraiment pas intuitif si nous comparons avec ce
que nous avons fait dans le cours thorique. Comme c'est choquant, nous allons donner un
poids plus grand la surface qu'aux revenus:

et l c'est parfait!!! Par contre l'arbre s'arrte bien trop vite. Nous allons donc chercher
l'tendre:

R Statistical Software 1304/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et l encore c'est parfait!!!

Pour information, minbucket=1 signifie que l'algorithme s'arrte s'il y a moins d'une feuille
dans la branche. Si vous utilisez le paramtre minsplit=10 (pas prsent dans l'exemple ci-
dessus) cela signifie que l'algorithme ne coupera pas une branche s'il y a moins de 10
lments dedans.

Mais nous avons vu dans le cours thorique que nous pouvons creuser l'arbre encore plus.
Alors qu'en est-il avec ce package? Essayons:

R Statistical Software 1305/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Que c beau! Nous obtenons donc la mme chose que dans le cours thorique et avec un
niveau de dtail suprieur celui de Tanagra.

Remarquons que la commande rpart( ) utiliser bien par dfaut l'indicateur de Gini pour vu
dans le cours thorique sparer les donnes. Effectivement, si nous les spcifions:

R Statistical Software 1306/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous obtenons bien les mmes donnes.

Nous pouvons faire un graph du rsultat contrairement Tanagra:

R Statistical Software 1307/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant faisons du "tree post-pruning". C'est--dire, prendre l'arbre qui minime l'erreur de
catgorisation. Pour cela, nous allons d'abord lister les arbres possibles l'aide de la
commande printcp( ):

R Statistical Software 1308/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc il y aurait deux arbres qui minimisent la xerror qui sont respectivement celui 4 et 7
sectionnements. Si nous voulions voir celui 4 (plutt que de chercher par ttonnement) il
suffit alors de spcifier un CP l'algorithme compris entre 0.010000 et 0.08333. Voyons cela
en utilisant la commande prune( ):

R Statistical Software 1309/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ainsi de suite...

On peut ensuite faire des prdictions de clustering avec des donnes test en utilisant la
commande predict( ):

R Statistical Software 1310/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons mme faire un test sur notre propre jeu de donnes d'entranement et construire
la matrice de confusion (rappelez-vous que nous avons "1" qui signifie "Proprio" et "2" qui
signifie "Non Proprio"):

Donc le modle est trs bon. Nous pouvons calculer le taux d'erreur assez rapidement:

R Statistical Software 1311/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 281.: Random Forests (CART Boostrap)


R 3.0.2

Donc comme nous l'avons mentionn dans le cours thorique, les Random Forests (forts
alatoires, appeles aussi "bootstrap Forests") ne consistent qu'en un bootstrapping de la
population initiale et ne garde la fin que le modle ayant le meilleur pouvoir prdictif!

Le package randomForest bien que fonctionnant trs bien ne reprsente pas les donnes sous
forme structure du meilleur arbre. Pour cela, nous allons utiliser le script suivant:
#**************************
#Build tree structure for Random forest
#Author: Andrea DAL POZZOLO
#**************************
getConds<-function(tree){
#store all conditions into a list
conds<-list()
#start by the terminal nodes and find previous conditions
id.leafs<-which(tree$status==-1)
j<-0
for(i in id.leafs){
j<-j+1
prevConds<-prevCond(tree,i)
conds[[j]]<-prevConds$cond
while(prevConds$id>1){
prevConds<-prevCond(tree,prevConds$id)
conds[[j]]<-paste(conds[[j]]," & ",prevConds$cond)
if(prevConds$id==1){
conds[[j]]<-paste(conds[[j]]," => ",tree$prediction[i])
break()
}
}
}
return(conds)
}

prevCond<-function(tree,i){
if(i %in% tree$right_daughter){
id<-which(tree$right_daughter==i)
cond<-paste(tree$split_var[id],">",tree$split_point[id])
}
if(i %in% tree$left_daughter){
id<-which(tree$left_daughter==i)
cond<-paste(tree$split_var[id],"<",tree$split_point[id])
}
return(list(cond=cond,id=id))
}

#remove spaces in a word


collapse<-function(x){
x<-sub(" ","_",x)
return(x)
}

R Statistical Software 1312/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et l'application notre jeu de donnes:

Nous utilisons alors la commande randomForest( ) du package randomForest:

Nous pouvons aussi vrifier que les randomForest performent trs bien la classification:

R Statistical Software 1313/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1314/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 282.: Chi-squared Automated Interaction Detection


(CHAID)
R 3.1.1.

Nous avons parl dans le cours thorique de cette mthode empirique ( la base conue pour
ne fonctionner que pour des variables catgorielles) de partitionnement/classification. Il n'y
avait rien dmontrer mathmatiquement car elle n'utilistise que des lments statistiques
triviaux.

Voyons-en un exemple pratique avec le jeu de donnes suivant o puisqu'il y des variables
non catgorielles nous allons devoir fractionner les valeurs continues et catgories en nous
basant sur notre retour d'exprience (pour rappel il s'agit l de la faiblesse majeure de cette
mthode):

Nous tlchargons d'abord le fichier *.zip de ce package depuis le site web suivant car ce
jour il ne peut pas tre install depuis l'interface directement:

R Statistical Software 1315/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait, nous installons le package directement:

et nous pouvons poursuivre comme l'habitude.

D'abord nous prparons les variables:

R Statistical Software 1316/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous reconstruisons un data frame en correspondance:

R Statistical Software 1317/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et enfin nous construisons l'arbre:

R Statistical Software 1318/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le rsultat n'est gure convaincant avec ce package. Au fait nous pouvons deviner qu'il utilise
le package rpart et donc il s'arrte au premier niveau pour les mmes raisons que celles vues
la page 1304 (SPSS fait de mme):

R Statistical Software 1319/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais ici comme nous ne pouvons a priori dfinir des poids nous sommes coincs pour cet
exemple scolaire.

Ds lors, prenons un jeu de donnes par dfaut du package CHAID et jouons avec:

Et les commandes vues plus haut:

Ce qui donne:

R Statistical Software 1320/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous n'avons malheureusement pas le temps dans le cours thorique de vrifier que le rsultat
soit juste La comparaison avec SPSS montre que le rsultt test trs diffrent entre les deux
logiciels mais cela est du au fait que nous avons pris un chantillon de taille 1'000. Si nous
prenons tout le jeu de donnes cela nous donne:

Ce qui est illisible (contrairement SPSS) mais qui correspond par contre au niveau des
nuds ce que donne SPSS dont voici un morceau la page suivante:

R Statistical Software 1321/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1322/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 283.: Analyse d'affinit (affinity analysis)


R 3.1.1

L'analyse d'affinit est trs utilise sur les sites Internets implmentant des modles naifs de
proposition d'articles par rapport aux achats prcdents de consommateurs.

Voyons en quoi consiste l'ide en partant du fichier suivant o chaque ligne reprsente un
panier command par un client donn (certains clients sont revenus plusieurs fois pour des
paniers diffrents) et o les colonnes reprsentes les articles achets et les composantes les
quantits correspondantes:

R Statistical Software 1323/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
D'abord nous importons les donnes et vrifions que celles-ci soient bien importes et
extrayons le nombre de colonnes:

Une fois ceci fait, nous prparons la matrice d'affinit et nous renommons les colonnes au
passage pour que leurs intituls soient plus petits:

R Statistical Software 1324/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant vient le point nvralgique de la mthode (c'est la partie "difficile"):

Pour le confort de lecture de cette matrice de distance nous allons trier les colonnes de plus
influentes au moins influentes et en refaire une matrice de distance (mais cette petite
transformation est totalement facultative et n'est pas une ncessit pour les graphiques que
nous verrons plus loin):

R Statistical Software 1325/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1326/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et nous pouvons aussi faire quelques graphiques:

et pourquoi pas un petit nuage de mots:

R Statistical Software 1327/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1328/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 284.: Positionnement multidimensionnel


R 3.1.1

Nous avons tudi dans le cours thorique le positionnement multidimensionnel simple


("Multidimensional scaling" ou "M.D.S." en anglais) utilisant le coefficient de stress 1 de
Kruskal.

Nous avons calcul " la main" dans Microsoft Excel la matrice des distances et les vecteurs
de position plong dans un cas particulier de 2 partir d'une matrice de dissimilarit et le
but ici va tre de vrifier si quelques fonctions diponibles dans R cet effet donnent les
mmes valeurs ou permettent au moins d'arriver aux mme conclusions (sachant qu'il de
nombreuses mthodes empiriques d'implmentation).

Le fichier brute utilis sera le mme que dans le cours thorique:

R Statistical Software 1329/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Voyons la premire fonction cmdscale( ) qui est une fonction native R:

et graphiquement:

R Statistical Software 1330/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc a posteriori aussi au niveau des coordonnes obtenues nous sommes trs loin de ce que
nous avons obtenu dans le cours thorique mais au niveau qualitatif du graphique nous
sommes trs proches. Voyons cela visuellement avec la fonction layout.mds( ) du package
igraph:

Et visuellement:

R Statistical Software 1331/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc bien que les coordonnes ne soient pas conformes au cours thorique (car le modle
nouveau tait le plus simpliste existant), les associations sont conformes.

Et maintenant voyons que les les coordonnes peuvent vraiment varier suivant la mthode
mais que la conclusion qualitative reste bien la mme. L'avantage des fonctions du package
vegan que nous allons voir maintenant est que nous retrouvons la fameuse variable de Stress
explicitement avec l'optimisation relativement sa minimisation (nous nous passerons de la
construction du graphique qui est la mme qu'avec la premire mthode):

Ce dernier est par ailleurs le plus proche de MATLAB.

R Statistical Software 1332/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 285.: Analyse discriminante linaire


R 3.0.2

Nous allons voir ici si nous retombons avec R sur les calculs effectus dans le cours thorique
o nous avons utilis la LDA avec le discriminant de Fisher.

Nous utiliserons donc les mmes donnes et pour des raisons pdagogiques nous allons
d'abord le faire sans package:

Nous retrouvons donc exactement la mme valeur et le mme vecteur propre que dans les
calculs effectus la main dans le cours thorique.

Faisons maintenant une reprsentaiton graphique de cela avec le package ggplot2:

R Statistical Software 1333/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 1334/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant voyons avec la fonction lda( ) intgre R:

A priori nous ne retrouvons pas le vecteur propre mais en ralit il n'en est rien. C'est juste
qu'avec la mthode vue dans le cours thorique le vecteur propre tait normalis alors qu'ici
ce n'est pas le cas. Nous pouvons vrifier que le vecteur LD1 est bien colinaire au vecteur
propre obtenu avec la mthode vue dans le cours thorique:

R Statistical Software 1335/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

C'est donc bien colinaire!

Maintenant voyons qu'il est possible d'utiliser la LDA pour faire de la classification (via la
distance la moyenne des groupes) et obtenons par la mme occasion une matrice de
confusion:

Avec la commande partimat( ) du package klaR nous pouvons afficher les polygones de
spparation des groupements:

R Statistical Software 1336/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne la frontire (droite) qui maximise les distances entre les points des groupes:

R Statistical Software 1337/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 286.: Rseaux de neurones


R 3.0.2

Le but ici va tre de comparer le modle de neurones construit dans le cours thorique avec le
tableur Microsoft Excel (avec pour avantage que l'on peut construire un rseau de neurones
multicouches avec n'importe quelle fonction de cut-off) par rapport celui que nous allons
obtenir ci-dessous avec la commande neuralnet( ) du package neuralnet (il y a d'autres
package comme nnet, RSNNS ou encore AMORE) en utilisant le mme jeu de donnes:

Nous ne nous attarderons pas trop longtemps sur cette fonctionnalit dans R car les neurones
choix (quel que soit le package) sont trs basiques et le manque de flexibilit de
construction fait que mme un tableur performe mieux (c'est d'ailleurs ce que nous allons
pouvoir constater ici).

Un rseau de neurones une couche nous donnera dans le cas prsent:

R Statistical Software 1338/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

avec le graphique associ (n'oubliez pas qu' chaque fois que vous relancerez le modle,
les poids ne seront pas les mmes!):

La somme des carrs des erreurs est de 3.9602 donc plus lev que ce que nous avons obtenu
avec le tableur. Faisons donc un rseau deux couches:

R Statistical Software 1339/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Aucune amlioration significative... et nous pourrions continuer ainsi longtemps sans obtenir
aucune amlioration.

Regardons cependant si ce modle performe mieux sur un jeu de test n'tant pas inclus dans le
jeu d'entranement. Nous allons utiliser le mme jeu que dans le cours thorique:

R Statistical Software 1340/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme nous pouvons le voir, ce rseau de neurone a un problme puisqu'il considre chaque
entre comme une valeur binaire. Ainsi, s'il existe un nombre en entre il met celle-ci la
valeur 1 et ensuite il multiplie par le poids et fait la somme des biais, raison pour laquelle on
se retrouve toujours avec la mme valeur en sorite dans le cas prsent. En ralit ce package
est fait pour de la classification et moins pour prdire des valeurs des continues...

Nous allons voir si nous pouvons faire mieux avec un autre package ((n'oubliez pas qu'
chaque fois que vous relancerez le modle, les poids ne seront pas les mmes!):

R Statistical Software 1341/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, comparons dj la valeur prdite aux valeurs originales pour le jeu d'entranement:

Ce qui pour cette excution est moins bon que ce que nous avons obtenu avec le tableur mais
si vous excutez plusieurs fois vous verrez que la valeur peut diminuer en-dessous de 0.8 que
nous avions obtenu avec Microsoft Excel. Il est aussi possible d'augmenter le nombre d'units
dans la couche neuronale.

R Statistical Software 1342/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons comparer aussi avec le mme jeu test:

Donc nous faisons juste un peu moins bien... mais c'est le hasard car si vous relancez vous
verrez que vous fairez mieux que le rseau de neurone cr dans le cours thorique.

R Statistical Software 1343/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 287.: Ensemble Learning


R 3.2.1

Le principe du "Ensemble Learning" est simple dans le principe. Il s'agit d'excuter plusieurs
techniques de fouilles de donnes sur un mme jeu de donnes et ensuite faire de la prdiction
en se basant sur une pondration optimale de chacun des modles choisis afin de minimiser le
taux d'erreur de prdiction.

Donc mathmatiquement il n'y a rien de difficile car il suffit de connatre les techniques de
base dj tudies prcdemment, de les excuter sur un mme jeu de donnes, et ensuite par
un solveur pondrer l'influence de chaque modle.

D'abord nous installons le package SuperLearner en passant par github (du moins ce jour)
mais n'hsitez pas l'installer via la mthode d'un package normal:

Et aussi:

R Statistical Software 1344/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On charge les donnes:

R Statistical Software 1345/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant on lance l'ensemble learning avec trois mthodes:

R Statistical Software 1346/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous y voyons donc les pondrations (Coef) de chaque modle dans le prognostique final.

Pour notre jeu de donnes de dpart cela donne:

R Statistical Software 1347/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc la prvision n'est pas trop mauvaise (il faudrait faire une matrice de confusion mais
nous avons dj tudi cela).

R Statistical Software 1348/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 288.: Traiter de gros jeux de donnes


R 3.0.2

Nous savons que R met tout dans la mmoire RAM par dfaut, or si cette dernire est limite
par rapport aux donnes analyser, outre acheter de la RAM (ce qui est compliqu dans les
multinationales car prend du temps) une possibilit et d'utiliser des packages qui grent les
donnes diffremment (sur le disque).

Les fonctions detect_dm_csv( ) et laf_open( ) du package LaF (Large ascii File) ont pour but
premirement de dtecter le type de donnes des colonnes en esprant que le fichier soit pas
trop mal structur (c'est souvent les deux premires lignes qui dterminent le rsultat final) et
en second de crer la connexion au fichier avec les types de donnes dtects.

La fonction laf_to_ffdf( ) du package ff permet de charger le fichier par morceaux sur le


disque dur puisque la mmoire ne suffira pas dans le cas de l'ordinateur choisi pour la
dmonstration ci-dessous avec le fichier suivant:

dont le contenu sera suppos inconnu.

Nous avons alors dans R (il vaut mieux ne pas travailler sur l'ordinateur pendant le
traitement):

Maintenant investiguons un peu le contenu des donnes importes:

R Statistical Software 1349/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que nous avons import environ 4.5 millions de lignes (ce n'est pas norme) et
227 colonnes (ce qui est consquent pour un sondage).

Nous voyons qu'il s'agit d'un objet de type ffdf content un data frame. Malheureusement, le
fichier d'origine ne semble pas tre bien structur car la colonne AGEP pour "Age Population"
est cense tre de type Integer et tout a t identifi comme des chanes de caractres.

Voyons les 10 premires lignes des 9 premires colonnes:

R Statistical Software 1350/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Le problme provient donc de la ligne 1 et 2 qui dans le fichier d'origine contient des textes...
grrr! Malheureusement demander la commande d'import de sauter la premire ligne des V1,
V2 ne marche pas (loi du maximum d'emm...).

Donc nous allons faire de la conversion classique:

Aprs le principe reste le mme que ce que nous avons vu jusqu' maintenant cependant on
tombe souvent sur des abrrations avec ces gros jeux de donnes... :

R Statistical Software 1351/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il est effectivement difficilement imaginable qu'il y ait 50'771 personnes dont l'ge est zro et
ayant rpondu...

Soit autrement vu:

R Statistical Software 1352/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1353/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 289.: Hadoop (Cloudera)/R Studio Server


R 3.2.0

Lorsque l'on traite des Traoctets de donnes il devient difficile de travail avec un unique
serveur. Une solution consiste alors utiliser un cluster et pourquoi ne pas utiliser celui
d'Apache: Hadoop. Wikitrends est un exemple d'utilisation de Hadoop analysant en temps rel
plus de 13 Traoctets de donnes. La page officielle est ici:

http://www.wikitrends.eu/#/

Elle nous donne les informations suivantes en ce dbut 2015:

Le reste viendra

R Statistical Software 1354/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

24. Sries temporelles (sries chronologiques)


Il s'agit ici de prsenter l'ensemble des techniques empiriques d'analyse de sries
chronologiques et de projections dont les dtails mathmatiques ont t vus dans le cours
thorique.

Dans la pratique n'oubliez pas de faire du back-testing!!!

Exercice 290.: Gnration d'une srie temporelle partir de


donnes brutes
R 3.0.2

On utilise la commande ts( ) du package zoo pour gnrer rapidement une srie de dates sur
une base priodique donne (frequency=12 donnera des mois, frequency=4 donnera des
trimestres et ainsi de suite):

R Statistical Software 1355/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 291.: Extraire des sous-ensembles de sries


temporelles
R 3.0.2

Il est possible d'extraire des sous-parties en spcifiant la date de dbut et de fin de la priode
de la srie qui intresse avec la commande window( ) du package zoo:

R Statistical Software 1356/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 292.: Lire des donnes temporelles


R 3.0.2

Ce qui va suivre ne devrait normalement pas ncessiter d'explications thoriques. Il va s'agir


avec la package zoo et la commande read.zoo( ) de traiter un fichier *.csv qui suppose que la
premire colonne est des dates:

Nous avons alors:

R Statistical Software 1357/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On peut s'amuser obtenir le jour o le prix de l'action a t le plus lev avec les techniques
de filtre habituelles de R:

Ensuite, nous pouvons mesurer et afficher la rpartition statistique du rendement:

R Statistical Software 1358/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons rechercher le maximum dans une certaine fentre de temps et calculer
basiquement la VaR historique:

R Statistical Software 1359/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 293.: Dcomposition d'une srie temporelle par


modle additif et multiplicatif
R 3.0.2

Nous allons ici reprendre le mme exemple que dans le cours thorique en utilisant la
commande decompose( ) du package zoo:

Nous n'avons pas tudi dans le cours thorique comment dcomposer une srie avec un
modle multiplicatif mais voyons quand mme comment faire (avec exactement les mmes
donnes):

R Statistical Software 1360/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Faisons nouveau la mme chose mais avec un cas trivial pour voir comment les algorithmes
de dcomposition performent en additif:

R Statistical Software 1361/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme quoi un modle reste une modle...

Avec la commande ts.plot( ) du package zoo, nous pouvons plotter que les composantes et les
mlanges qui nous intressent:

R Statistical Software 1362/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1363/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 294.: Test de Durbin-Watson


R 3.3.2

Nous avons introduit dans le cours thorique la statistique de Durbin-Watson. Nous n'avons
pas fait de calculs la main ou dans le tableur Microsoft Excel car c'est vraiment trop
laborieux. Notre seul propose ici va tre de voir comment Minitat affiche la statistique et
comparer cette dernire R.

Nous chargeons pour cela le fichier DurbinWatson.csv:

Nous utilisons ensuite la fonction durbinWatsonTest() du package car:

R Statistical Software 1364/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc nous avons la mme valeur DW que Minitab la diffrence que nous avons beaucoup
plus d'informations utiles et que nous savons quoi nous en tenir! De plus nous avons de
nombreux paramtres de calculs avec R qui n'existent pas avec Minitab!!!

Nous pouvons aussi comparer avec la fonction dwtest() du package lmtest:

R Statistical Software 1365/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 295.: Test des suites (test de Walf-Wolfowitz)


R 3.0.2

Comme l'habitude le but va tre de vrifier que le logiciel utilise les rsultats dmontrs
dans le cours thorique avec un exemple implicitement li une srie temporelle (les "0" tant
des "baisses" et les "1" tant des valeurs "haussires"). La question tant de savoir si les
squences peuvent tre considres comme alatoires ou non statistiquement parlant.

Nous devrions aussi retrouver les calculs faits la main et l'aide de MS Excel.

Nous allons utiliser la commande runs.test( ) du package tseries:

Bien que nous retrouvions les calculs faits dans le cours thorique, il est dommage que R ne
renvoie pas plus d'informations... Je prfre Minitab ce niveau l et ce mme si la
conclusion reste la mme!

R Statistical Software 1366/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 296.: Contrle de la stationnarit d'une srie


temporelle
R 3.0.2

Nous utilisons pour cela la commande is.regular du package zoo:

et aussi bien videmment avec la suite de hausses/baisses:

R Statistical Software 1367/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 297.: Lissage par moyenne mobile simple


R 3.0.2

Nous allons ici vrifier que nous obtenons bien les mmes rsultats que ceux obtenus dans le
cours thorique et donc avec les mmes donnes brutes et les comparer accessoirement avec
ce que nous avons obtenu dans Microsoft Excelet Minitab.

Nous allons utiliser pour cela la commande filter( ) du package zoo et les mmes donnes que
dans le cours thorique (donnes visibles ci-dessous dans la colonne data)

Donc tout est parfaitement conforme. Au niveau graphique cela donne donc:

R Statistical Software 1368/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 298.: Lissage exponentiel simple


R 3.0.2

Nous utilisons les mmes donnes que dans le cours thorique nous laissons R trouver la
meilleure valeur du paramtre du modle en utilisant la commande HoltWinters( ) native de
R:

Nous retrouvons donc la mme valeur du paramtre alpha que dans le cours thorique (o
nous avions fait les calculs avec MS Excel) et dans le cours Minitab.

Pour la valeur de 256.2158 quelques pourcents prs non significatifs c'est peu prs
conforme au cous thorique et Minitab. Mais attention ces petites diffrences lorsque l'on
gre des projets dont les ordres de grandeur est le milliard de $...

Par contre il est dommage que R ne nous indique par les valeurs classiques d'erreurs que sont
les MAD, MSD et MAPE. Mais nous pouvons retrouver le MSD avec le calcul simple
suivant:

R Statistical Software 1369/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc un pourcentage non significatif prs, nous retrouvons la mme que dans le cours
thorique et qu'avec Minitab.

Nous pouvons utiliser la commande native predict( ) pour faire des projections. Ici nous
allons faire un exemple aberrant allant au-del d'une priode:

R Statistical Software 1370/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 299.: Lissage exponentiel double selon Holt (modle


additif)
R 3.0.2

Nous utilisons les mmes donnes que dans le cours thorique nous laissons R trouver la
meilleure valeur des paramtres du modle en utilisant la commande HoltWinters( ) native
de R:

Rappelons que ce modle est sensible au choix de la mthode de calcul de dpart.

Ainsi les deux coefficients sont trs diffrents (+ de 40%) de ceux calculs la main dans le
cours thorique. Par rapport Minitab, la diffrence est de l'ordre de 5%.

videmment le meilleur choix est celui qui minimise le SSE. Ainsi dans le cours thorique,
nous avions obtenu un SSE d'un peu plus de 10'000... et avec Minitab de l'ordre de 6430...
donc R fait mieux si l'on peut dire...

Le graphique donne quant lui:

R Statistical Software 1371/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Je n'ai par contre pas trouv comment faire un lissage exponentiel double selon la mthode de
Brown.

Nous pouvons utiliser la commande native predict( ) pour faire des projections. Ici nous
allons faire un exemple aberrant allant au-del d'une priode:

R Statistical Software 1372/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1373/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 300.: Lissage exponentiel triple selon Holt et Winters


(modle multiplicatif)
R 3.0.2

Nous utilisons les mmes donnes que dans le cours thorique et nous laissons R trouver la
meilleure valeur des paramtres du modle toujours en utilisant la commande HoltWinters( )
native de R:

Nous ne pouvons pas ici comparer avec Minitab puisque ce dernier n'est pas capable de
trouver les 3 paramtres optimaux. Par contre par rapport faits la main dans le cours
thorique il n'y a aucune comparaison possible... relativement diffrent pour les paramtres de
lissage o nous avions obtenu dans le cours thorique:

0.329, 1.06, 1

et:

R Statistical Software 1374/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
a 249.38
b 5.58
s1 0.961
s2 1.022
s3 1.082
s4 0.934

Mais comme nous l'avons mentionn dans le cours thorique, ce modle est aussi sensible la
manire de calculer les toutes premires valeurs et comme il existe de nombreuses rgles
empiriques, c'est la raison pour laquelle vous aurez peu de chance de trouver deux logiciels
qui donnent le mme rsultat pour ce modle.

Ceci tant dit, le plot nous donne quant lui:

Nous pouvons obtenir si besoin est (trs utile dans certains cas) que les coefficients du modle
ou mme un seul coefficient:

R Statistical Software 1375/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou obtenir que les valeurs lisses des diffrentes composantes du modle tel que calcul dans
le cours thorique:

R Statistical Software 1376/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons utiliser la commande native predict( ) pour faire des projections. Ici nous
allons faire un exemple aberrant allant au-del d'une priode:

R Statistical Software 1377/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1378/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 301.: Meilleur modle prvisionnel au sens des


erreurs
R 3.0.2

Dans le package forecast, la commande forecast( ) va effectuer une prvision en se


comparant les erreurs d'une trentaine de modles et afficher la projection du meilleur modle
considr.

Voyons cela avec les donnes utiliss dans le cours thorique:

Donc le meilleur modle est un modle ETS(A,A,N) ce qui signifierait que c'est un modle
additif de Holt-Winters avec erreurs additives. La suite donne:

R Statistical Software 1379/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc ici nous avons un nombre d'informations trs intressantes avec les indicateurs d'erreurs
de mesures que nous avons vu dans le cours thorique. Graphiquement le meilleur modle
donne:

R Statistical Software 1380/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

prendre videmment avec des pincettes et toujours avec le mme danger de lecture aberrant
que l'on retrouve dans toute la littrature spcialise et que nous avons dj mentionn dans le
cours thorique.

R Statistical Software 1381/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 302.: Coefficients d'autocorrlation


R 3.0.2

Nous allons ici calculer les coefficients d'autocorrlation avec les mmes donnes que dans le
cours thorique aprs avoir donn la dfinition (intuitive) de l'autocorrlation.

Nous utilisons alors la commande acf( ) native de R pour obtenir:

Nous retrouvons donc exactement les mmes valeurs que celles calcules la main et que
dans le cours Minitab!

R Statistical Software 1382/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 303.: Coefficients d'autocorrlation partielle


R 3.0.2

Nous allons ici calculer les coefficients d'autocorrlation avec les mmes donnes que dans le
cours thorique aprs avoir donn la dfinition (intuitive) de l'autocorrlation.

Nous utilisons alors la commande acf( ) native de R pour obtenir:

Nous retrouvons donc exactement les mmes valeurs que celles calcules la main et que
dans le cours Minitab!

R Statistical Software 1383/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 304.: Modles unvaris AR(p), ARIMA(p,d,q) et


ARCH(p,q)
R 3.0.2

Simulation d'un processus AR(1)


Juste une petite mise en bouche...

R Statistical Software 1384/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Simulation d'un processus AR(2)


Toujours dans la mme ide pour montrer comment le principe de l'exemple prcdent est
extensible:

R Statistical Software 1385/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1386/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle AR(p)/ARIMA(p,0,0)


Commenons par le modle AR le plus simple:

Donc selon R le meilleur modle semble tre un modle AR(2). Graphiquement cela donne:

et pour les rsidus:

R Statistical Software 1387/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L'quivalent d'un AR(2) est bien videmment un ARIMA(2,0,0) et en gnral un AR(p) a un


quivalent ARIMA(p,d,q). Voyons cela:

Les coefficients sont quand mme significativement diffrents (environ 10%). Au niveau
graphique, cela nous donne quelque chose par contre de trs semblable:

R Statistical Software 1388/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1389/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle ARIMA(0,0,0)/Moyenne mobile


Maintenant passons au modle par le modle ARIMA(0,0,0) donc de type moyenne simple.
Cela nous donne:

et le graphique associ (donc rien de surprenant dans les rsultats obtenus):

et une petite analyse des rsidus:

R Statistical Software 1390/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

avec la command native ts.diag( ) nous pouvons avoir quelques informations quivalents sous
forme graphique et d'autres qui sont complmentaires:

R Statistical Software 1391/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle ARIMA(0,1,0)


Ensuite, dans la complexit croissante, voyons le modle ARIMA(0,1,0) naf:

et une petite analyse des rsidus:

R Statistical Software 1392/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et toujours avec tsdiag( ):

R Statistical Software 1393/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle ARIMA(0,1,1)/Lissage exponentiel simple


Toujours en complexit croissante, voyons maintenant le modle lissage exponentiel simple
ARIMA(0,1,1):

Nous retrouvons donc bien la valeur de alpha vue plus haut (au signe prs). Le graphique
associ donne:

R Statistical Software 1394/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et une petite analyse des rsidus:

et toujours avec tsdiag( ):

R Statistical Software 1395/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle ARIMA(0,2,2)/Lissage exponentiel double de Holt


Toujours en complexit croissante, voyons maintenant le modle lissage exponentiel double
de Holt ARIMA(0,2,2):

et le graphique associ:

et une petite analyse des rsidus:

R Statistical Software 1396/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et avec la commande tsdiag( ):

R Statistical Software 1397/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle ARMA(1,1)/ARIMA(1,0,1)


Toujours en complexit croissante, voyons maintenant le modle ARMA(1,1) dont
l'quivalent est ARIMA(1,0,1):

et le graphique associ:

R Statistical Software 1398/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et une petite analyse des rsidus:

et toujours avec la commande ts.diag( ):

R Statistical Software 1399/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Recherche du meilleur modle ARIMA


Nous allons ici utiliser le fichier de donnes habituel suivant:

Avec le package zoo et la commande aggregate par mois (as.yearmon), nous regroupons ces
donnes par mois:

Bon une fois ceci fait, nous chargeons le package forecast et utilisons la commande
auto.arima( ) qui va chercher le meilleur modle arima possible (la recherche peut suivant la

R Statistical Software 1400/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
nombre de donnes prendre plusieurs dizaines de secondes) ainsi que les commandes
confint( ), accuracy( ) et predict( ) qui vont nous donner quelques informations diverses
complmentaires:

Ensuite faisons un plot de ce que nous avons vu dans le cours thorique (sachant qu'il y a
beaucoup de choses que nous n'avons pas tudi non plus et que nous ne prsenterons donc
pas ici):

R Statistical Software 1401/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1402/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Simulations de modles ARIMA


Nous allons ici reproduire les modles obtenus plus haut avec leurs coefficients/paramtres
respectifs. videmment, et comme nous l'avons vu dans le cours thorique, chaque fois que
vous relancerez une simulation pour un mme modle ARIMA avec des paramtres
identiques, le rsultat sera diffrent.

Nous commenons avec la modle AR(2) que nous avons obtenu plus haut). Comme la
commande native arima.sim( ) ignore l'interception, nous devons l'ajouter systmatiquement:

et le graphique associ (qui donc au mme titre que les valeurs sera diffrent chaque re-
excution des commandes ci-dessus):

Pour le modle ARIMA(0,0,0), la syntaxe sera:

R Statistical Software 1403/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ainsi de suite... avec en fonction des modles de subtilits pour rapatrier le constante donc
n'oubliez pas d'utiliser la commande str(data.arima) pour voir le contenu da la liste.

R Statistical Software 1404/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ajuster un modle GARCH(1,1)


Le but ici va tre de vrifier si nous obtenons le mme rsultat que dans le cours thorique et
surtout de dterminer (si possible) la mthode utilise par R pour dterminer les paramtres
du modle GARCH(1,1).

Nous partons donc des mmes donnes que dans le cours thorique de 1267 lignes:

Utilisons d'abord la fonction garch( ) du package tseries et comparons le rsultat ce qui


nous est connu:

Les intervalles de confiances des paramtres:

R Statistical Software 1405/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et le graphique associ:

Attention ne pas oublier de contrler avant les calculs que les rsidus satisfont les conditions
d'application du modle GARCH (voir le cours thorique)!

Alors avec cette premire mthode que ce soit au niveau des paramtres ou du graphique cela
est trs diffrent de toutes les mthodes thoriques que nous avons dtermines. Donc nous
laisserons de ct cette mthode dfaut de perdre du temps dcortiquer l'algorithme R
utilis.

R Statistical Software 1406/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
La deuxime mthode utiliser la fonction garchFit( ) du package fGarch:

R Statistical Software 1407/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

...

R Statistical Software 1408/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec le graphique associ:

R Statistical Software 1409/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Alors que dire du rsultat... D'abord la manire que R dterminer la moyenne empirique
ncessiterai de dcortiquer le script car ce n'est pas la moyenne arithmtique, ni gomtrique
ni la mdiane...

Sinon pour les trois autres paramtres nous sommes peu prs bon et nous retrouvons les
mmes rsultats que dans le cours thorique que si nous considrons le t par rapport la
moyenne empirique (alors que MATLAB le fait par rendement successifs).

En ce qui concerne le graphique, l aussi c'est trs diffrent de calculs faits la main dans le
cours thorique et aussi trs diffrent de ce que nous avons obtenons avec MATLAB.

R Statistical Software 1410/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 305.: Transforme de Fourier Rapide (FFT)


R 3.0.2

La transforme de Fourier Rapide est un outil trs important dans l'tude des sries
chronologiques pour authentifier s'il y a des harmoniques priodiques dans une srie de
mesures et la frquence des ces dernires.

Je n'ai malheureusement pas trouv de fonction ou de package proposant une FFT avec
exactement le mme rsultat que celui fourni par Matlab (qui reste souvent le logiciel talon
pour ce qui est relatif au traitement du signal).

Donc dfaut voici une srie de commandes (qui peuvent bien videmment tre mis sous la
forme d'une fonction simple) permettant d'obtenir exactement le mme rsultat que Matlab et
faisant appel la fonctio native fft( ) de R (merci un internaute anonyme!):

Ce qui donne graphiquement en sortie:

R Statistical Software 1411/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et voil :-)

ToDo: Rapatrier les valeurs des pics comme dans MATLAB.

Certaines personnes prfrent cependant les priodogrammes (dont je ne suis pas un fan):

R Statistical Software 1412/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1413/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 306.: Analyses de donnes de panel


R 3.1.1

Les donnes de Panel sont simplement un groupe des donnes longitudinales mesures donc
pendant un certain temps. L'exemple le plus typique en entreprise tant la mesure des ventes
pendant plusieurs annes d'articles (produits diffrents).

Voyons comment analyser ce type de donnes avec R. Nous chargeons d'abord le package
pscl qui contient un jeu de donnes bien adapt ce type d'exemple (% de participaton aux
votations prsidentielles amricaines depuis 1932 par tat et par lction):

Cela nous donne:

Ceci tat pour poser le contexte. Ce qui nous intresse est de comparer le tout. Donc dj nous
pouvons superposer toutes les donnes:

R Statistical Software 1414/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

Nous savons que rien ne nous interdit de faire une ANOVA par tat en passant par une
rgression car nous avons tudi cela en cours.

R Statistical Software 1415/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous avons alors

La valeurde Fisher est significative ce qui indique que la rgression par tats peut tre
considre comme ayant tous ses coefficients significativement non nuls et donc que ce type
d'analyse un intrt certain.

R Statistical Software 1416/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

25. Finance Quantitative


Nous allons d'abord commencer par la finance qualitative (simpler is better...). C'est--dire
l'affichage des valeurs d'indices ou d'actifs via de simples graphiques.

Nous utiliserons ici exclusivement le systme de donnes de Yahoo (si vous souhaitez utiliser
le service Bloomberg voyez du ct de http://docenti.luiss.it/fasano/bloomr/). Si vous
cherchez rcuprer les donnes pour un indice ou une entreprise particulire dont vous ne
connaissez pas le code, vous pouvez utiliser la page suivante:

http://finance.yahoo.com/lookup

Pour commencer, nous allons utiliser le package ggplot2 et importer des donnes de Yahoo
en utilisant la commande geom_ribbon( ) pour faire une bande de fluctuation des cours par
rapport la moyenne arithmtique:

Ce qui donne:

R Statistical Software 1417/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec un autre style visuel en utilisant le script R suivant:

R Statistical Software 1418/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

...et puis comme la finance c'est un peu jouer au casino (pile ou face) sur les marchs financier
un bon petit jeu est souvent ludique (et au bon passage une application ludique de la

R Statistical Software 1419/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
commande sapply( )):

R Statistical Software 1420/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 307.: Finance scolaire


R 3.0.2

Rviser les bases de la finance avec GUIDE


Nous allons voir ici quelques dmos du package GUIDE qui intressera particulirement les
einseignants pour dispenser des formations de finance niveau L1 M2. Il s'agit vraiment d'un
magnifique outil pour acclrer l'apprentissage de nombreux concepts typiquement tudis
lors des CFA, FRM, CAIA et autres du mme genre!

Pour cela, aprs avoir install ce package, nous crivons:

Ce qui donne en plein cran:

Les outils disponibles sont de gauche droite:

R Statistical Software 1421/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1422/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous dtaillerons chacune des options avec un cas concret ultrieurement pour comparer les
rsultats au cours thorique. Cela est important car le package GUIDE contient le minimum
qu'est cens connatre tout bon manager ou employ au bnfice d'un MBA.

Attention!!! Lorsque vous changez les paramtres dans une bote de dialogue, il faut valider
par la touche ENTER pour que les calculs prennent effet avec les nouveaux paramtres.

Nous allons pouvoir vrifier le bon fonctionnement de ce package avec par exemple un petit
calcul simple pour lequel nous ne trouvons aucune fonction dans MATLAB. Il s'agit du calcul
du prix future sur taux de change que nous avons calcul dans le cours thorique:

Nous retrouvons donc bien la mme valeur!

R Statistical Software 1423/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plus proche matrice de corrlation relle


Dans le cours thorique nous avons dmontr qu'une matrice de variances-covariances (et
donc de corrlation) devait tre positive dfinie et nous avons parl du fait que des praticiens
dans la finance (et pas seulement!) construisent des matrices de corrlations empiriques
(quasi-corrlations) et passent ces dernires dans des algorithmes (il en existe plusieurs types)
pour les mettre en conformit avec les proprits mathmatiques ad hoc.

Nous allons dans l'exemple qui va suivre comparer au rsultat obtenu avec le solveur de
Microsoft Excel et la mthode base sur le norme de Frobenius mais en utilisant la fonction
nearPD( ) du package Matrix de R:

R Statistical Software 1424/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Comme nous nous y attendions, le choix de l'algorithme influe quand mme significativement
sur les valeurs de la plus proche matrice de corrlation. Mais au moins c'est une vraie matrice
positive dfinie maintenant!

R Statistical Software 1425/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 308.: Comptes de produits et charges


R 3.2.3

En finance avant d'investire des certaines obligations ou actions il peut tre intressant d'avoir
une ide de leur tat financier via une analyse de leurs comptes de produits et charges (CPC)
conformment aux standards du International Financial Reporting Standards (IFRS).

Le package quantmod permet d'obtenir ces informations rapidement via les bases de donnes
Google et les fonctions principales getFinancial et viewFinancials.

Voyons un example avec Apple et les donnes qui sont publiques (faut pas compter au
21me sicle y avoir les grandes entreprises suisses car elles savent peine utiliser
correctement un systme informatique).

D'abord on charge les donnes:

Ce qui donne anuellement:

R Statistical Software 1426/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1427/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et en trimestriel:

R Statistical Software 1428/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et les tableaux de trsorie annuelles:

R Statistical Software 1429/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et les bilans annuels:

R Statistical Software 1430/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 309.: Modle de Fama-French (FF-CAPM)


R 3.0.2

Bon je ne veux pas dbattre et m'tendre sur ce modle empirique mais juste prsenter
brivement sa mise en application car:

1. Il est cens faire partie de la culture gnrale du praticien


2. Il m'est rgulirement demand dans les formations

Bon tant donn ma passion dvorante pour ce modle nous allons nous en tenir au minimum
syndical.

D'abord, nous allons sur le site d'un des auteurs du modle

http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html

Pour tlcharger les valeurs SMB (Small Minus Big: Facteur de taille) et HML (High Minus
Low: Facteur de prix) pour les U.S.:

Plus bas dans la page se trouve le lien qui nous intresse:

R Statistical Software 1431/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

S'y trouve alors un fichier avec les facteurs qui nous intressent qui une fois un peu reman et
auquel on rajoute dans la dernire colonne notre investissement d'intrt (il s'agit d'un Fond
comme un autre):

R Statistical Software 1432/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et maintenant vient la partie R:

Aprs libre vous d'utiliser le modle de la mme manire que pour la CAPM (voir page
1536). Bref la mme chose peut tre fait avec n'importe quel tableur d'entre de gamme.

R Statistical Software 1433/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 310.: Mouvement Brownien vs Mouvement de Lvy


R 3.0.2

Dans le cours thorique de finance quantitative nous avons assez longuement tudi le
mouvement brownien. Nous avons cependant aussi parl des processus de Lvy pour les
distributions queues paisses. Voyons-en un exemple en commenant d'abord avec le
processus gaussien:

et ensuite avec le cas classique du processus de Lvy base sur ne distribution de Student
(remarquez le fait que parfois vous obtiendrez un grand saut):

R Statistical Software 1434/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1435/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 311.: Packages quantmod/RQuantLib/fOption


R 3.0.2

Nous allons d'abord installer le package quantmod:

et nous faisons quelques tests dans l'ordre de difficult croissant au niveau du bagage
mathmatique ncessaire que nous avons tudi dans le cours thorique d'conomie
quantitative:

R Statistical Software 1436/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Rcuprer des donnes brutes


Non automatis diffr ou actuel (indices/titres/options/dividendes)
Rcuprons des donnes brutes de l'indice S&P 500 avec la commande getSymbols.yahoo( )
du package quantmod:

C'est simple et limpide!

Nous pouvons obtenir l'quivalent avec la commande as.xts( ) du package xts associe la
commande get.hist.quote( ) du package tseries:

R Statistical Software 1437/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Si nous voulons le dernier cours du jour d'un titre (ci-dessous le titre de Google) avec le prix
de l'offre et de la demande nous utiliserons la commande getQuote( ):

et avec la commande getOptionChain( ) nous avons les informations concernant les options
(drivs) du sous-jacent choisi (du moins quand certaines des informations ne sont pas
manquantes...):

Donc la source est en ralit ici:

http://finance.yahoo.com/q/op?s=GOOG&ql=1

R Statistical Software 1438/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons aussi obtenir les dividendes avec la fonction getDividends( ):

R Statistical Software 1439/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Automatis en temps rel actualis (indices/titres/options)


Voici un script qui tourne (tant qu'il n'y pas d'erreur) indfiniment stocker dans un fichier
*.txt du mme nom que l'action le prix de la demande d'une action.

Empiriquement j'ai mis un time de "1 minute" soit "60 secondes" qui affiche rgulirement
l'avancement dans la fentre de commande:

R Statistical Software 1440/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne en quelques minutes:

R Statistical Software 1441/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Soit:

et le fichier texte correspondant:

R Statistical Software 1442/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Non automatis diffr ou actuel (matires premires)


Le suivi du cours des matires premires est videmment tout aussi important que les
indices/titres ou options.

Nous utilisons pour cela la commande getMetals( ):

Et sous forme graphique:

R Statistical Software 1443/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et:

R Statistical Software 1444/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1445/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vrifier la normalit des retours/rendements (return)


D'abord observons la normalit sur une longue priode de l'indice S&P 500:

Petit pic de rappel du cours de finance quantitative au passage:

p
log t log pt log pt 1 diff log i
pt 1

Pas convaincant comme le montre le rsultat graphique ci-dessous:

R Statistical Software 1446/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Mais sur une plus courte priode (en-dessous d'un certain nombre d'annes il y a un
dcrochage et c'est assez drle voir), nous avons:

Ce qui donne:

R Statistical Software 1447/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comparons par rapport une loi Normale:

Ce qui donne:

R Statistical Software 1448/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui est intressant c'est de plotter sur une chelle logarithmique:

Comme quoi le rsultat est intressant:

R Statistical Software 1449/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1450/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Heatmap des return mensuels


Ici nous allons utiliser un code R qui montre l'importance d'avoir acquis toutes les notions
vues jusqu' maintenant. Ce code (qui pourrait tre amlior pour devenir une fonction R)
tant trop long pour en faire une capture d'cran nous allons directement le mettre en tant que
texte brut ci-dessous.

Si jamais voici un aperu du fichier *.csv utilis qui provient directement de Yahoo (s'inspirer
des exemples vus plus hauts pour importer des donnes de Yahoo!):

R Statistical Software 1451/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
###################################################
# douard Tallent @ TaGoMa.Tech, November 2013 #
# QuantCorner @ http://quantcorner.wordpress.com #
# Source: http://quantcorner.wordpress.com/page/2/#
###################################################
library(lubridate);library(xts);library(quantmod)
library(reshape2);library(ggplot2)
# Create a data object from the file object that actually is an object for the file
containing the data
data<-read.table("C:/YahooSPY.csv",sep=";",header=TRUE,na.strings="NA") # Create
the data object from file
#Analysis working constants (dates are already supposed to be in ISO format in the
first column)
StartYear<-year(data[dim(data)[1],1]);StartMonth<-month(data[dim(data)[1],1])
FinishYear<-year(data[1,1]);FinishMonth<-month(data[1,1])
# Remove rows containing NAs
row.has.NA <- apply(data, 1, function(x){any(is.na(x))})
data <- data[!row.has.NA,]
# Create a xts object from the data object (
ColumnValue<-5 #this is the colum of interest to be compute for the monthly return
data<-as.xts(data[,ColumnValue], order.by=as.Date(data[,1],format="%Y-%m-%d"))
# Compute the monthly log return
ret<-monthlyReturn(data,type="log",leading=TRUE)# Create a matrix mat object from
ret
# The original time series could not starts on a Jan month nor ends on Dec
#(necessary for our 12 witdth rectangle dashboard)
ret<-c(rep(NA,StartMonth-1),ret,rep(NA,12-FinishMonth)) # The original time series
nor starts on a Jan month nor ends on Dec
mat<-matrix(ret*100, ncol=12, byrow=TRUE, dimnames=NULL) # Create a R matrix
year<-seq(from=StartYear, to=FinishYear, by=1) # Vector containing the years
month<-c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") #
Vector containing the year months
colnames(mat)<-month # Give columns names
rownames(mat)<-year # Give rows names
# Transform the data in mat into a long series using the melt() function
molten <- melt(mat) #Transform the series into a long series
# Define the color palette to be used in the hetmap
LtoM <-colorRampPalette(c("red","yellow")) #The spectrum of colors for the lowest
returns
Mid <- "snow3" # Snow3 is the color for the (approximatedly) median value
MtoH <-colorRampPalette(c("lightgreen","darkgreen")) # The spectrum of colors for
the highest values
# Plot the heatmap
hm<-ggplot(data=molten, aes(x=factor(Var2, levels=month.abb),
y=Var1, fill=value)) + geom_raster() # Draw the heatmap using geom_raster()
hm<-hm+scale_fill_gradient2(low=LtoM(100), mid=Mid, high=MtoH(100)) # Colors,
please!
hm<-hm+labs(fill='Return (%)') # The legend
hm<-hm+geom_text(aes(label=paste(sprintf("%.1f %%", value))), size=4) # Write the
monthly returns in the heatmap
hm<-hm+scale_y_continuous(breaks=StartYear:FinishYear) # Deal with the y-axis
hm<-hm+xlab(label=NULL) + ylab(label=NULL) # No axis names
hm<-hm+theme_bw() # No background grey grid
hm<-hm+theme(axis.text.x=element_text(size=10, hjust=0, vjust=0.4,angle=90)) #
Beautify the x-axis
hm<-hm+ggtitle(label="Monthly return Dashboard") # Add a title
hm

Ce qui donne (voir page suivante):

R Statistical Software 1452/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1453/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diagrammes barres et chandelles (OHLC)


Toujours avec le package quantmod, nous avons avec les commandes getSymbols( ) et
barChart( ):

Nous ne voyons pas bien les prix OHLC (Open High Low Close). En restreignant la plage de
dates c'est mieux:

R Statistical Software 1454/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Si on veut enlever la partie concernant les volumes il suffit d'utiliser le paramtre TA:

R Statistical Software 1455/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec l'indice S&P 500:

R Statistical Software 1456/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Dans un autre style visuel avec la commande candleChart( ):

R Statistical Software 1457/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

R Statistical Software 1458/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore:

R Statistical Software 1459/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore en ajoutant des indicateurs empiriques l'aide des commandes MACD( ) et


addBBand( ):

R Statistical Software 1460/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

avec un subset c'est mieux:

R Statistical Software 1461/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou encore en ajoutant le volume avec la commande addVo( ) ou l'indexe de commodit avec


la commande addCCI( ):

R Statistical Software 1462/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il est possible de rafraichir le graphique ou de le filtrer avec la commande reChart( ):

R Statistical Software 1463/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avoir que fvirer 2011, nous cririons reChart(subset='201102'), pour avoir l'anne
2010 jusqu' juin 2011 nous cririons reChart(subset='2010/201106'), les dix premires
semaines de l'anne choisie reChart(subset='first 10 weeks') ou les dix derniers mois
reChart(subset='last 10 months') ou le dernier mois zoomChart('last 1 months')

Voici la liste des diffrents indicateurs empiriques disponibles ce jour:

Indicator TTR Name quantmod Name


Welles Wilder's Directional Movement Indicator ADX addADX
Average True Range ATR addATR
Bollinger Bands BBands addBBands
Bollinger Band Width N/A addBBands
Bollinger %b N/A addBBands
Commodity Channel Index CCI addCCI
Chaiken Money Flow CMF addCMF
Chande Momentum Oscillator CMO addCMO

R Statistical Software 1464/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Double Exponential Moving Average DEMA addDEMA


Detrended Price Oscillator DPO addDPO
Exponential Moving Average EMA addEMA
Price Envelope N/A addEnvelope
Exponential Volume Weigthed Moving Average EVWMA addEVWMA
Options and Futures Expiration N/A addExpiry
Moving Average Convergence Divergence MACD addMACD
Momentum momentum addMomentum
Rate of Change ROC addROC
Relative Strength Indicator RSI addRSI
Parabolic Stop and Reverse SAR addSAR
Simple Moving Average SMA addSMA
Stocastic Momentum Index SMI addSMI
Triple Smoothed Exponential Oscillator TRIX addTRIX
Volume N/A addVo
Weighted Moving Average WMA addWMA
Williams %R WPR addWPR
ZLEMA ZLEMA addZLEMA

R Statistical Software 1465/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

valuation d'options, grecques et volatilit implicite (VI) selon B&S-


Merton
Pricing et grecques d'une option europenne de type Call (car ce sont avec les options Put les
seules types d'options dont nous avons fait les dmonstrations mathmatiques dtailles dans
le cours thorique), nous utilisons la commande EuropeanOption( ) du package RQuantLib
qui utiliseraient les relations fermes du modle de Black & Scholes:

Si nous comparons le rsultat avec le code VBA que nous avions crit dans MS Excel, nous
voyons que nous avons pour les mmes valeurs d'entres la mme valeur de sortie.

Et avec la commande EuropeanOptionImpliedVolatility( ), nous pouvons chercher (entre


autres), la volatilit implicite (ce qui est mme temps est un preuve exprimentale ponctuelle
que la fonction est crit juste puisque nous retrouvons la volatilit ci-dessus):

R Statistical Software 1466/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Voyons maintenant que le prix d'un Call pour une volalitlit donne est bien une fonction
dcroissante du strike (ce qui est assez logique):

Ce qui donne:

R Statistical Software 1467/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous savons aussi que le prix d'un Call est aussi fonction croissant du temps maturit:

Ce qui nous donne:

R Statistical Software 1468/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diagramme Payoff
Nous avons tudi dans le cours thorique les diagrammes payoff des Call et Put ainsi de de
plusieurs stratgies de portefeuilles d'options. Nous allons voir ici que ce n'est pas forcment
trivial crire.

Diagramme Payoff Call et Put

C'est le diagramme payoff le plus simple que nous puissions imaginer et la syntaxe n'est pas
forcment triviale:

Ce qui donne:

R Statistical Software 1469/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1470/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Smile de volatilit
Rappatrions les donnes des options Microsoft ngociables sur le march de gr gr (1
option est pour 100 sous-jacents normalement dans les exports Yahoo/Google) dont la date
d'expiration est avant le 30 Juillet 2014 et dans l'ordre dcroissant des dates d'expiration
(comme le lecteur pourra le voir ci-dessous il n'y pas beaucoup d'options qui vont une date
ultrieure au 19 Juillet 2014 sachant que ce script a t crit le 1er Juillet 2014... donc il y peu
d'agents prenant le risque de proposer des options au-del de 19 jours pour les sous-jacents
Microsoft):

Alors que la colonne Strike donne le... strike du sous-jacent (logique...), la colonne Last donne
le dernier prix de trade du Call. Nous nous baserons sur cette valeur pour dterminer la
volatilit implicite mais nous pourrions tout aussi bien prendre la valeur Bid (qui est pour
rappel le prix auquel les acheteurs esssaient d'acheter l'option) si nous sommes acheteurs de
Call.

La premire colonne contient les dates d'expiration des Call (ou des Puts si vous descendez
plus bas dans la liste...) mais voici comment la dcoder en dtails:

R Statistical Software 1471/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que pour une mme date d'mission des agents proposent des options d'achats
avec des strikes donns varis (ce qui est normal puisque chacun fait des projections sa
manire).

Nous allons pour poursuivre extraire la colonne des strikes, la convertir en valeurs
numriques, compter les nombres d'options disponibles dans cette extraction et dterminer et
extraire les noms de lignes pour ensuite les traiter afin d'obtenir les dates qui sont codes:

R Statistical Software 1472/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc maintenant nous extrayons les dates:

Ensuite nous calculons la dure jusqu' maturit entre le jour de rdaction (excution) du
script et la date d'expiration de chaque option (je n'ai pas trouv autre chose qu'une boucle...):

Nous regroupons le tout dans un data frame:

R Statistical Software 1473/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite puisque par dfinition le smile de volatilit est pour des options de maturit gales,
nous allons filtrer sur un choix particulier arbitraire pour avoir que des options de mme
maturit:

R Statistical Software 1474/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, il nous faut le prix actuel du sous-jacent (spot price):

Et ensuite de calculer les volatilits implicites:

R Statistical Software 1475/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il ne nous reste plus qu' faire le graphique avec une interpolation de type spline:

R Statistical Software 1476/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que la smile (la volatilit implicite) est proche d'une minima pour la valeur du
cours du jour du sous-jacent. L'interprtation de cette courbe est trs intressante mais si nous
ne possdons pas toutes les informations du march, nous pouvons a posteriori conclure que
le sous-jacent a une plus forte probabilit d'tre l'avenir au-dessus du cours du jour qu'en
dessous (c'est quand mme des sous-jacents Microsoft....).

R Statistical Software 1477/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Surface de volatilit
L'extension naturelle du smile de volatilit est la surface de volatilit. Le code est quasiment
identique avant la diffrence que nous ne filtrons pas pour une seule date de maturit
donne et aussi la diffrence qu'il s'agit d'un plot 3D plutt que 2D.

Ce qui donne:

R Statistical Software 1478/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Aprs ne reste plus qu' faire un plot mais vu la faible quantit de donnes il ne va pas tre
extra...:

R Statistical Software 1479/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons donc bien ci-dessus la forme en "U" du smile de volatilit pour chaque maturit.
Bon cela doit tre possible de faire plus joli... mais aprs quand on rflchit l'utilit de ce
type de graphiques 3D....

R Statistical Software 1480/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Volatilit implicit

R Statistical Software 1481/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Considrons maintenant une options Call qui le 13 Mai 2005 tait value 0.0004 pour un
prix d'exercice K 23 , avec un spot S0 22.66 (visible sur le graphique ci-dessus en haut
gauche). La date d'expiration tait au 3 Juin 2005, ce qui correspond 15 jours, ds lors
rapport une fraction d'anne T 15 et le taux sans risque du march tait de
r 0.02074 . Ds lors, le prix de l'option tait en utilisant un autre package que RQuantLib
(comme cela vous pouvez voir qu'il y en a plusieurs qui font la mme chose):

R Statistical Software 1482/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La diffrence entre le prix du Call sur le march est selon le modle de Black & Scholes-
Merton est trs diffrent. Voyons donc la volatilit implicite du march:

Il y a presque un facteur deux entre la volatilit historique de 0.285 et celle de la volatilit


implicite de 0.155.

R Statistical Software 1483/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Backtesting de stratgies d'investissement


Backtesting sur modle avec moyenne mobile (MM20)
Pour faire du backtesting, R peut aussi nous aider avec des packages dj tout faits. Voici un
exemple simple utilisant le package PerformanceAnalytics:

Et ensuite, nous lanons un code de backtesting de stratgie (achat lorsque la valeur un peu
suprieure au SMA20):

ce qui nous donne:

R Statistical Software 1484/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1485/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Arbre binomial
Nous allons vrifier ici que nous obtenons bien avec R les calculs effectus la main dans le
cours thorique concernant l'arbre binomial de Cox-Ross-Rubinstein.

Pour cela nous installons le package fOption et utilisons la commande


CRRBinomialTreeOption( ):

Nous retrouvons bien la valeur calcule dans le cours thorique.

Pour information: "ce"/"pe" = call/put europen, "ca"/"pe" = call/put amricain

Ensuite, nous pouvons faire un plot de l'arbre avec la commande BinomialTreeOption( ) du


mme package:

R Statistical Software 1486/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1487/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 312.: Package fPortfolio


R 3.0.2

Nous allons ici pouvoir appliquer ce nous avons tudi dans le cours thorique et comparer
les rsultats donc avec les mmes donnes brutes par rapport l'approche approximative
que nous avions mis en place avec le solveur du tableur Microsoft Excel.

QEPM (Quantitative Equity Portfolio Management)


Bon commenons pas les modles quantitatifs de gestion de portefeuilles d'actions (equity)
vraiment les plus triviaux et vrifions au fur et mesure de notre avancement les rsultats
obtenus de chacun (a va tre long vu la quantit de modles thoriques et d'indicateurs de
performances empiriques existants...).

Analyse lmentaire a posteriori de portefeuille (position longue sur 1 priode)


Nous allons commencer trs scolairement par charger le package Portfolio et un jeu de
donnes par dfaut associ:

Ensuite, nous dfinissons combien de type d'actions nous voulons dans le portefeuille et
prenons empirique les 6 qui ont la plus grande valeur nominale et calculons la valeur globale
du portefeuille:

R Statistical Software 1488/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous construisons ensuite empiriquement un portefeuille avec les actions poids gal
(remarquez bien la proprit type="equal"):

Nous pourrions galement tout aussi btement choisir des poids proportionnels la valeur de
chaque action dans le portefeuille en mettant la proprit type linear:

R Statistical Software 1489/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bref rien d'extraordinaire jusqu'ici... c'est de l'arithmtique lmentaire! Nous poursuivons


pour des raisons pdagogiques avec le cas des poids gaux!

Nous regardons les poids y relatifs regroups par secteurs d'actions:

Riend d'extraordinaire mais contrlons quand mme l'exposition du prix:

R Statistical Software 1490/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour ceux qui aiment bien les graphes nous pouvons sortir un plot du rsum ci-dessus:

R Statistical Software 1491/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous analysons la performance avec la commande performance( ) et vrifions en


mme temps les calculs renvoys:

R Statistical Software 1492/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Affichons ensuite les contributions la performance avec la commande contribution( )


d'abord trivialement par actions:

Et pour ceux qui aiment avoir le roic (Return On Invested Capital) sous forme de graph
tornado...:

R Statistical Software 1493/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maitenant observons la contribution la performance par secteurs:

R Statistical Software 1494/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et concentrons-nous sur la ligne Technology. La colonne weigth est triviale. Retrouvons alors
la valeur de la colonne contrib. Le secteur Industrials est compos des trois actions suivantes:

Si nous faisons la somme de leurs contributions, nous retrouvons la contribution du secteur


Industrials (logique...). Ensuite, la colonne roic pour l'industrie est simplement sa contribution
divise par son poids (donc -0.013355044/0.5).

R Statistical Software 1495/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Analyse lmentaire a posteriori de portefeuille (position long-short sur 1


priode)
Pour cet exemple scolaire, nous repartons des mmes donnes mais avec un portefeuille long-
short avec des poids proportionnels au nominal des actions:

Ensuite, nous regardons aussi l'exposition des diffrentes stratgies (on laisse le soin
l'tudiant de vrifier que les calculs sont justes):

R Statistical Software 1496/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et pour ceux qui prfrent avoir cela sous forme graphique:

R Statistical Software 1497/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons aussi avoir la performance de ce portefeuille long-short:

et la contribution la performance par secteur:

et nous pouvons aussi reprsenter cela sous forme graphique:

R Statistical Software 1498/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1499/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ananalys de Brinson d'un portefeuille


Nous allons ici utiliser le package pa (portfolio analysis) pour faire un analyse empirique
selon le modle de Brinson d'un portefeuille. Comme il s'agit d'arithmtique lmentaire, nous
n'avons pas tudi ce modle dans le cours thorique et donc nous allons en prsenter le
principe (ultra simpliste) ici.

Considrons un gestionnaire de portefeuille d'actions qui utilise le S&P 500 comme indice de
rfrence. Un mois donn, il surperforme le S&P de 3% (le "rendement actif" pour rappel qui
est la diffrence entre le rendement du portefeuille et l'indice). Une partie de cette
performance s'explique par le fait qu'il a allou plus poids du portefeuille certains secteurs
qui ont bien perform. Appelez cet effet "l'effet d'allocation". Une partie de sa surperformance
s'explique par le fait que certains des stocks slectionns dans un secteur fait mieux que le
mme secteur dans l'indice. Appelez ce l'effet "l'effet de slection". Le rsidu (la diffrence de
performance entre le rendement actif et les deux effets) peut alors tre attribu une
interaction entre rpartition et la slection - l'effet d'interaction.

Le modle de Brisnon fournit des dfinitions mathmatiques Brinson et des mthodes pour
calculer ces diffrents lments.

L'exemple ci-dessus utilise le concept de variable "secteur" comme systme de classification


lors du calcul de l'effet d'allocatio. Mais la mme approche peut fonctionner avec toute autre
variable qui place chaque titre dans une seule catgorie distincte : pays, industri et ainsi de
suit... En ralit, une approche similaire de classification peut se faire sur la base de variables
continues de classificaiton qui sont rpartis en gammes distinctes: le quartile suprieur de la
capitalisation boursire, le quartile le plus lev et ainsi de suit... Pour gnraliser, nous allons
utiliser le terme "catgorie" pour dcrire tout schma de classification qui range un actif dans
une et une seul unique catgorie.

Notations utilises pour la suite:

Ractif RP RB diffrence entre rendement du portefeuille dynamique et de l'indice

wiB est le poids de chaque actif i dans l'indice (la somme tant gale 1)
wiP est le poids de chaque actif j dans l'indice (la somme tant gale 1)
W jB est le poids de chaque catgorie j dans l'indice:
W jB wiB , i j (la somme des W jB tant gale 1)
i

W jP est le poids de chaque catgorie j dans le portefeuille dynamique:


W jP wiP , i j (la somme des W jP tant gale 1)
i
ri est le rendement de l'actif i
R Bj est le rendement de la catgorie j dans l'indice: R Bj wiB ri , i j
i

R Pj est le rendement de la catgorie j dans le portefeuille dynamique:


R Pj wiP ri , i j
i

R Statistical Software 1500/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le rendement du portefeuille actif peut videmment tre calcul de deux manires


diffrentes:
n N
RP wiP ri W jP R Pj
i 1 j 1

Le rendement de l'indice peut videmment tre calcul de deux manires diffrentes:


n N
RB wiB ri W jB R Bj
i 1 j 1

Comme les poids dees catgories du portefeuille dynamiques sont gnralement diffrents de
l'indice (portefeuille benchmark pour rappel), l'allocation joue un rle dans le rendement actif
comme nous l'avons dj mentionn. La mme rgle au niveau de la slection des actifs dans
une catgorie.

Donc l'intuition derrire l'allocation c'est d'crire:


N
Rallocation W jP W jB R Bj
j 1

B
o la multiplication par R j se justifie par le fait qu'indirectement nous supposons que dans
l'allocation que c'est uniquement le poids des catgories qui joue un rle et non la slection
des actifs dans chacune des catgories (donc le poids des actifs pour cahque catgorie est
suppos alors comme tant le mme pour chaque portefeuille), raison pour laquelle pour
chacun des portefeuilles et pour une catgorie donne, le rendement est alors suppos le
mme et le rendement de rfrence est celui de l'indice.

L'intuition derrire la slection c'est d'crire:


N
Rslection R Pj R Bj W jB
j 1

et l l'ide est similiare celle du dessus la diffrence que ce qui nous intresse c'est pour un
poids de catgorie (en prenant celui de l'indice comme rfrence) d'analyser comme la
slection des actifs l'intrieur de celle-ci influence le rendement et donc in extenso c'est le
rendement de la catgorie qui va diffrer entre les deux portefeuilles.

Le rendement d'interaction se dfinit alors comme tant la part inexplique tel que:

Rint eraction Ractif Rallocation Rselection

parfois not:

Rint eraction Ractif AE SSE

o "AE" signifie "Allocation Effect" et SSE "Security-selection effect".

Faison un exemple:

R Statistical Software 1501/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
D'abord nous chargeons donc le package pa et le montrons un partie du jeu jan (qui signifie
"janvier")

Ensuite, nous utilisons la fonction brinson( ) pour obtenir un rsum de ce dont nous avons
parl:

R Statistical Software 1502/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Il est aussi possible de faire un graphique de la situation:

R Statistical Software 1503/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1504/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Modle de Markowitz
D'abord nous chargeons le package fPortfolio et nous construisons le mme petit portefeuille
de 3 actifs comme nous l'avons fait avec Microsoft Excel et ce exactement avec les mmes
donnes:

Ensuite, avec la commande covMcdEstimator( ) du package fPortfolio, nous vrifions que


nous retrouvons les valeurs calcules main pour les moyennes et la matrice des variances-
covariances (nous voyons que tout est OK!!!):

Ensuite, nous allons spcifier quelques contraintes notre portefeuille avec la commande
portfolioSpec( ). Voyons ce qu'il est possible de spcifier:

R Statistical Software 1505/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous prendrons les contraintes suivantes en utilisant les commandes setNFrontierPoints( ),


setRiskFreeRate( ) et setWeights( ):

R Statistical Software 1506/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ces premires contraintes dfinies, nous allons spcifier dj pour la suite si nous
voulons une stratgie Long (LongOnly), Short (Short) ou mixe (en spcifiant les vecteurs
comme ci-dessous):

Ensuite, avec la commande portfolioConstraints( ):

R Statistical Software 1507/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Jusque l tout est toujours conforme ce que nous avons fait dans le cours thorique! Nous
poursuivons donc!

Portefeuille tangentiel (maximisation ratio de Sharpe)

Nous utilisons maintenant la commande tangencyPortfolio( ) du package fPortfolio pour


avoir un rsum du portefeuille efficient qui utilise implicitement la maximisation du ratio de
Sharpe:

R Statistical Software 1508/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Comme nous pouvons le voir ce n'est pas le mme rsultat que celui obtenu dans le cours
thorique avec les algorithmes volutionnaires o nous avons trouvs un portefeuille qui
performait 100% plus. Il faut savoir que les auteurs de package fPortfolio ne garantissent en
aucun cas l'efficacit de leur solution!

Portefeuille efficient (rendement portefeuille fix)

Dans le cours thorique nous nous tions fixs un rendement prcis atteindre qui tait de
20%. Pour trouver les poids actifs permettant d'atteindre cet objectif, nous utiliserons la
commande efficientPortfolio( ) du package fPortfolio:

Comme nous pouvons le voir, les rsultats des poids est proche des calculs effectus la main
dans le cours thorique.

R Statistical Software 1509/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Portefeuille de variance minimale

L encore nous allons vrifier si nous obtenons les mmes poids que les calculs effectus dans
le cours thorique. Nous utilisons la commande minvariancePortfolio ( ) du package
fPortfolio:

Nous retrouvons donc exactement les mmes poids que ceux calculs dans le cours thorique!

Frontire efficiente

Nous allons voir maintenant qu'il nous est possible de tracer la frontire efficiente avec la
commande frontierPlot( ):

R Statistical Software 1510/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

C'est la mme que celle obtenue dans le cours thorique.

Avec la commande minvariancePoints( ) nous pouvons afficher le point de variance


minimale calcul plus haut:

R Statistical Software 1511/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons avec equalWeightsPoints( ) afficher le portefeuille quilibr:

R Statistical Software 1512/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons afficher les trois portefeuilles avec a chaque fois un actif seul avec la
commande singleAssetPoints( ):

En fixant le taux sans risque, nous pouvons pour tracer la courbe du ratio de Sharpe comme
nous l'avons vu dans le cours thorique avec la commande sharpeRatioLines( ):

R Statistical Software 1513/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande twoAssetsLines( ) on peut voir la frontire efficientes de portefeuilles


composs de deux actifs seulement:

R Statistical Software 1514/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec la commande monteCarloPoints( ) on peut simules quelques valeurs de portefeuilles


ralisables:

R Statistical Software 1515/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous allons maintenant dterminer la capital market line telle que fait approximativement et
grossirement dans le cours thorique. Nous allons voir ici, s'il y a une grande diffrence avec
R en utilisant les commandes tangencyLines( ) et tangencyPoints( ):

Nous avons mis en vidence en gris l'ordonne 0.22 avec l'axe en 0 de l'actif sans risque que
nous nous tions fix dans le cours thorique (et l nous voyons que tout est bon puisque la
tangente passe bien par le point de coordonne (0,0.22)).

En rouge horizontal nous mis en vidence le rendement du portefeuille trouv en consquence


dans le cours thorique avec nos approximations successives. Comme nous pouvons le voir,
nous avons une diffrence d'environ 2% entre le point calcul dans le cours thorique de et
par les mthodes numriques d'optimisation de R (soit environ 10% d'erreur!).

R Statistical Software 1516/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Je n'ai cependant pas encore trouv ce jour comment obtenir facilement avec la package
fPortfolio le poids des 3 actifs correspondant au point de tangence en rouge ci-dessus. Si
quelqu'un trouve qu'il n'hsite pas nous le communiquer (nous mentionnerons son nom).

Nous pouvons avoir un autre visuel rsumant dans les grandes lignes les proprits de notre
portefeuille en utilisant la commande tailoredFrontierPlot( ):

Ou encore un diagramme des poids avec la commande weightsPlots( ) indiquant quelles


combinaisons donnent quels rendements:

R Statistical Software 1517/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une stratgie long only changera videmment le graphique:

R Statistical Software 1518/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercices 313.: Package PerformanceAnalytics


R 3.0.2

Avant de commencer il savoir que ce package ne peut manipuler que des sries temporelles de
type xts mme si le contraire est crit...

Nous nous concentrerons ici que sur des fonctionnalits du package dont les concepts sous-
jacents ont t dmontrs dans le cours thorique et sur certaines fonctionnalits ne
ncessitant aucun package matmatique particulier mais qui sont visuellement lgantes.

Plotter les retours/rendements (return)


Avec la commande chart.CumReturns( ) du package PerformanceAnalytics en association
avec la commande get.hist.quote( ) du package tseries nous pouvons plotter facilement le
return en fonction du temps en utilisant les commandes Return.calculate( ) et
chart.CumReturns( ) du package PerformanceAnalytics:

Ce qui nous donne:

R Statistical Software 1519/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et nous pouvons faire un plot des retours vis--vis d'un indice du march:

R Statistical Software 1520/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

Plotter des ratios des performances cumules


Bon c'est vraiment le genre de fonctions qui ne sert qu' gagner du temps sinon quoi nous
pourrions le programmer nous-mme....

Considrons le jeu de donnes suivant:

R Statistical Software 1521/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous souhaitons comparer rapidement la peformance des managers relatifs au rendement


SP500:

R Statistical Software 1522/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plotter des corrlations par rapport un indice sur une fentre


Nous allons dans la mme ide de confort qu'avant comparer la corrlation du rendement des
managers par rapport un indice donn sur une fentre par exemple de 12 mois. Nous
utilisons alors la fonction chart.RollingCorrelation( ):

Bon voil quoi rien d'extraordinaire....

R Statistical Software 1523/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plotter la moyenne et son intervalle de confiance sur une fentre


temporelle
L'ide est la mme qu'avant mais avec une moyenne et son intervalle de confiance (attention
comme l'habitude de s'assurer de la conformit avec les hypothses normalement respecter
pour utiliser ce type d'analyse!):

R Statistical Software 1524/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Calculer et le maximum Draw Down et faire un graph


Nous avons vu dans le cours thorique une des dfinitions existantes du maximum Draw
Down, nous allons voici ici si nous retrouvons le mme rsultat qu' la main et que dans le
cours MATLAB:

Nous obtenons bien le mme rsultat qu'avec MATLAB. Le graphique associ nous donne:

R Statistical Software 1525/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour ceux qui veulent comprendre ce graph, voici le code source de la fonction (c'est
empirique et bte):

R Statistical Software 1526/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plotter l'ECDF et l'histogramme des retours/rendements (return)


Bon c'est un ultra-classique qui ne ncessite mme pas d'explications. Il s'agit juste de voir
que le package PerformanceAnalytics a aussi une commande ECDE propre qui compare une
loi Normale Centre Rduite.

D'abord nous importons les donnes:

Ensuite, nous comparons de faon trs qualitative avec la commande chart.ECDF( ):

R Statistical Software 1527/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
ou dans sa version QQplot avec la commande chart.QQPlot( ) toujours du mme package:

Dans le mme genre ultra-classique, nous avons avec la commande chart.Histogram( ):

R Statistical Software 1528/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1529/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Plotter cart-type ou la VaR historique/Gaussienne/Conditionnelle


Sans vrifier si les donnes correspondent aux calculs effectus la main, observons que nous
pouvons avec la package PerformanceAnalytics obtenir simplement les 4 indicateurs de
risque cits dans le titre.

D'abord nous importons les donnes:

Commenons par l'indicateur un peu hors catgorie (car indpendant de toute probabilit dans
ce package) qui est l'cart-type seul avec un historique de 10 jours:

R Statistical Software 1530/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

20 jours:

R Statistical Software 1531/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ainsi de suite... Voyons maintenant la mme chose avec les 3 VaR un niveau de 95% que
nous avons vues dans le cours thorique avec aussi un historique 10 et 20 jours:

R Statistical Software 1532/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et 20 jours:

R Statistical Software 1533/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1534/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Conditional VaR (Expected Shortfall)


Nous avons dmontr dans le cours thorique comment calculer la conditional VaR (Expected
Shortfall) dans le cas Gaussien. Nous allons vrifier ici que nous retrouvons le mme rsultat
que celui calcul la main.

Pour ce faire, nous allons utiliser la commande ES( ) avec des donnes provenant aussi d'une
loi Normale:

Donc except les messages d'erreurs le rsultat est bien le bon!

ToDo: Trouver la raison la de ce message d'erreur!

R Statistical Software 1535/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

MEDAF ou CAPM
Les donnes utilises ici seront les mmes que celles utilises dans le cours thorique lors de
notre tude du modle de diversification efficient de Sharpe.

Nous allons voir comment retrouver les paramtres du MEDAF comme beta, la prime de
risque que nous avions calcul la main.

D'abord calculons le rendement moyen de chacun des titres avec des commandes classiques
de R:

R Statistical Software 1536/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous faisons ensuite d'autres petits calculs mais dj pour certains qui sont plus pertinents et
qui utilisent les commandes CAPM.beta( ) ou BetaCoVariance( ) du package
PerformanceAnalytics:

Donc jusque l les rsultats sont parfaitement conformes ce que nous avions calcul la
main dans le cours thorique.

R Statistical Software 1537/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant calculons la prime de risque avec un actif sans risque de 5% (CML signifie pour
rappel: droite de march ou "Capital Market Line" en anglai) avec la commande
CAPM.RiskPremium( ) du package PerformanceAnalytics ainsi que le rentabilit espre
avec la commande CAPM.CML( ):

Comme nous l'avons dmontr dans le cours c'est de l'algbre lmentaire et donc nous
n'avions pas fait d'applications numriques. Faisons donc cela ici mme exceptionnellement.
Rappelons que:

E Rm R f

Nous avons alors dans le cas prsent pour le premier exemple du CAPM.RiskPremium( ):

0.402 0.05 0.352


et ainsi de suite pour les autres...

Ensuite comme la rentabilit espre tait aussi triviale dans le cours thorique, nous n'avions
pas fait d'application numrique. Donc allons-y:

Nous avons alors dans le cas prsent pour le premier exemple:

0.402 0.05
E RA 0.2178 0.05 0.87904051
0.03917

et donc nous n'obtenons pas la mme chose. Cela semblerait priori tre une erreur du
package. Effectivement dans le code source, nous avons (version 1.1.0):

R Statistical Software 1538/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc il y a bien une erreur car ma connaissance on ne doit pas multiplier par la moyenne
mais par l'cart-type!

Nous pouvons avoir des indicateurs de rations de performances avec la ration de Share
utilisant la commande SharpeRatio( ), l'alpha de Jensen avec la commande
CAPM.jensenAlpha( ) et enfin le ration de Treynor avec la commande TreynorRatio( ):

R Statistical Software 1539/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Bref rien d'extraordinaire ici... la finance est avec la statistique le domaine expert dans la
cration l'infini d'indicateurs empiriques...

Il existe aussi des fonctions pour calculer le rsidu epsilon de la droite de rgression et alpha
qui est l'ordonne l'origine en utilisant les commandes CAPM.alpha( ) et CAPM.epsilon( )
toujours du mme package:

R Statistical Software 1540/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
L aussi rien d'extraordinaire. Le paramtre alpha tant simplement l'ordonne l'origine de
la fonction de rgression linaire:

Ra f Rb Rb

Nous n'avions pas calcul dans le cours thorique l'epsilon pour la simple raison que c'est une
abstraction... L'auteur du package a fait le choix empirique et tout fait discutable de
dterminer celui sur la base du calcul suivant:

n
n

1 Ra 1 1 Rb 1
i 1 i 1

Donc il s'agit de calculer la diffrence entre les rendements compos des deux portefeuilles.
Choix tout fait discutable...

R Statistical Software 1541/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Risque total, systmatique et spcifique


Maintenant revenons la relation dmontre dans le cours thorique:

i i2 m2 2
Risque total Risque systmatique 2 Risque spccifique 2

Pour laquelle nous n'avons pas fait d'application numrique pratique (tat donn les
approximations implicites pour crire cette relation qui par voie de consquence est alors un
peu trop scolaire).

Observons que le package PerformanceAnalytics a les fonctions SystematicRisk( ),


SpecificRisk( ) et TotalRisk( ) pour cela (comme il existe plusieurs manires dans la pratique
de calculer le risque spcifique... nous ne souhaitons pas ici valider comme nous le faisons
d'habitude la sortie du logiciel).

R Statistical Software 1542/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Value at Risk
Le but ici va tre de vrifier si les calculs concident avec ce que nous avons vu dans le cours
thorique lors de notre tude des nombreux modles de VaR.

Commenons par la VaR historique en utilisant la commande VaR( ):

Donc a priori rien signaler de particulier. C'est logique et c'est trivial.

Voyons donc maintenant la VaR gaussienne, toujours avec la commande VaR( ):

R Statistical Software 1543/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Faisons maintenant un plot (malheureusement l'abscisse est impose dans le code source du
package mais on comme on a accs au code source...) en utilisant la commande
chart.VaRSensitivity( ) et vrifions la correspondance avec les calculs faits prcdemment
(raison pour laquelle j'ai rajout une ligne verticale):

R Statistical Software 1544/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc nous voyons que tout est conforme!

R Statistical Software 1545/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 314.: Classification ascendante hirarchique de sries


chronologiques
R 3.0.2

Nous allons voir ici l'utilisation de la technique de classification ascendante hirarchique


(tudie dans le cours thorique) mais avec de sries chronologiques et dont le code a t mis
disposition sur un forum par Vincent ZOONEKYND et qui hasard faisant est d'usage
courant dans certains instituts financiers en Suisse mais ce jour plutt avec Matlab (et donc
avec un visuel beaucoup plus lmentaire).

Commenons:

Ce qui donne pour l'instant:

R Statistical Software 1546/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite:

R Statistical Software 1547/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Avant de poursuivre, indiquons comment lire cette matrice... (aidez vous du graphe prcdent
pour vous aider!).

1. La premire ligne signifie que les lments (sries chronologiques) 1 (A) et 2 (B) ont
t fusionns et comme ils sont des singletons, le signe est ngatif.
2. la deuxime tape (deuxime ligne), nous avons les lments (sries
chronologiques) 4 (D) et 5 (E) ont t fusionns et comme ils sont des singletons, le
signe est ngatif.
3. la troisime ligne, comme les valeurs sont positives, cela signifie que nous avons
associ les deux premiers associations (donc celles des deux premires tapes)
ensemble.
4. la quatrime linge, nous associons le 6me (F) lment (6me srie chronologie) avec
l'association de la ligne 3 de cette mme matrice {1,2}.
5. et ainsi de suite...

Nous poursuivons:

Ce qui donne la premire itration (puisque nous avons mis une pause avec la commande
readline( )):

R Statistical Software 1548/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

la deuxime itration:

R Statistical Software 1549/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

la troisime itration:

R Statistical Software 1550/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

la quatrime itration:

R Statistical Software 1551/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et enfin la cinquime et dernire itration:

R Statistical Software 1552/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour la suite enlevez le readline( ) sinon quoi cela va poser des problmes!!!

Maintenant, nous posons les sries chronologiques en face des feuilles ainsi que l'axe des
lgendes:

R Statistical Software 1553/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne au final:

R Statistical Software 1554/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1555/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Voici le script sans les commentaires pour ceux qui veulent copier/coller:
n <- 100
k <- 6
d <- matrix(rnorm(k*n),nc=k)
d[,2] <- d[,1]colnames(d) <- LETTERS[1:k]
x <- apply(d,2,cumsum)
r <- hclust(dist(t(d)))
op <- par(mar=c(0,0,0,0),oma=c(0,2,0,0))
plot(NA,ylim=c(.5,k+.5), xlim=c(0,4),axes=FALSE)
xc <- yc <- rep(NA,k)
o <- 1:k
o[r$order] <- 1:k
for(i in 1:(k-1)) {
a <- r$merge[i,1]
x1 <- if( a<0 ) o[-a] else xc[a]
y1 <- if( a<0 ) 0 else yc[a]
b <- r$merge[i,2]
x2 <- if( b<0 ) o[-b] else xc[b]
y2 <- if( b<0 ) 0 else yc[b]
lines(
3+c(y1,i,i,y2)/k,
c(x1,x1,x2,x2),
lwd=k-i
)
xc[i] <- (x1+x2)/2
yc[i] <- i
}
axis(2,1:k,colnames(d)[r$order],las=1)
u <- par()$usr
for(i in 1:k) {
f <- c(0,3,i-.5,i+.5)
f <- c(
(f[1]-u[1])/(u[2]-u[1]),
(f[2]-u[1])/(u[2]-u[1]),
(f[3]-u[3])/(u[4]-u[3]),
(f[4]-u[3])/(u[4]-u[3])
)
par(new=TRUE,fig=f)

plot(x[,r$order[i]],axes=FALSE,xlab="",ylab="",main="",type="l",col="navy",
lwd=2)
box()
}
par(op)

R Statistical Software 1556/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

26. Actuariat
Le but de ce chapitre va tre de vrifier les rsultats renvoys par le package
lifecontingencies correspond aux rsultats obtenus suites aux quelques dmonstrations
mathmatiques triviales tudies dans le cours thorique d'introduction lmentaire la
finance actuarielle.

Pour des donnes tlcharger, vous pouvez visiter:

http://www.mortality.org

Pour cela, nous utiliserons le fichier suivant:

qui se poursuit bien videmment au-del de 33 ans...

R Statistical Software 1557/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 315.: Gnrer une table des survivants simple et


indicateurs de survies
R 3.0.2

Nous chargeons donc d'abord le package lifecontingencies et le fichier *.csv qui nous
intresse:

Nous avons alors en utilisant la commande new("lifetable",...) du package lifecontingencies:

R Statistical Software 1558/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
avec au passage un petit plot:

Pour les deux premires colonnex x et lx il n'y a rien de particulier dire.

La colonne px est trs simple calculer la main:

R Statistical Software 1559/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La colonne ex qui donne l'exprance de vie la naissance est dj plus intressante vrifier
pour voir si elle correspond aux notions vues dans le cours thorique. Pour obtenir l'esprance
de vie la naissance relativement cette table, nous savons qu'il suffit de faire la somme des
probabilits de survie de la fin jusqu'au temps d'intrt divis par la probabilit de survie
jusqu' ce mme tempd d'intrt. Comme je n'ai pas trouv dans R une commande unique
pour vrifier cela la main nous pouvons dans le cas prsent nous reporter la feuille
Microsoft Excelsuivante:

R Statistical Software 1560/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Avec toute simplement:

R Statistical Software 1561/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons ensuite calculer la probabilit de la dure encore vivre, c'est--dire dans le
cas de l'exemple ci-dessous la probabilit que si un individu est encore vivant 20 ans qu'il
atteigne les 20+30=50 ans en utilisant la commande pxt( ):

Ce qui correspond bien au rsultat vu dans le cours thorique:

R Statistical Software 1562/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Soit explicitement:

Soit la proporition de survivants 50 ans sur la proportion de survivants 20 ans.

Le package intgre plusieurs techniques empiriques d'interpolation pour des ges non entiers:

La probabilit de dcder pendant la mme priode sera donne par la commande qxt( ):

Ce qui correspond bien au rsultat vu dans le cours thorique:

R Statistical Software 1563/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Soit explicitement:

Il est aussi possible de travailler sur plusieurs ttes de plusieurs tables diffrentes de vie. Par
exemple si dans notre cas nous souhaitons savoir quelle est la probabilit jointe (pour rappel
c'est donc par dfinition le produit des probabilits) de survie que deux individus d'ge de
dpart identiques ou diffrentes ont de survivre pendant la mme priode de temps, nous
utilisons alors la commande pxyt( ) qui correspond h pxy :

Ou pour avoir la probabilit qu'une des personnes soit encore en vie (2 vnements
incompatibles non ncessairement disjoints) h pxy :

R Statistical Software 1564/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1565/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 316.: Capitals diffrs


R 3.0.2

Nous pouvons aussi contrler que les calculs de capitals diffrs dans le cours thorique de
techniques de gestion sont accessibles avec ce mme package lifecontingencies.

Calculons la valeur probable d'un capital qui pour rappel est donn par:

Sxm
m
Ex f em f em m px
Sx

Donc en utilisant la commande Exn( ) ou pxt( ), nous avons:

Les calculs d'annuites sont alors probablement in extenso faciles obtenir. Rappelons la
relation de la rente viagre temporaire praenumerando dmontre dans le cours thorique:

Ce calcul se fait avec la commande axn( ):

R Statistical Software 1566/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1567/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 317.: Valeur actuelle nette (VAN/NPV) et Taux de


rendement interne (IRR)
R 3.1.2

Bon je prfre utiliser le tableur Microsoft Excel pour cela mais suite la demande d'un
participant une de mes formations voici comment calculer le mme VAN que dans le cours
thorique et qu'avec un tableur en utilisant la fonction presentValue( ):

Nous obtenons donc bien le mme rsultat que dans le cours thorique et qu'avec un tableur.

Malheureusement ce package ne contient pas de fonction pour le calculer de retour sur


investissement. Donc voici une autre approche avec le package financial et la fonction cf( )
o cf est l'abrviation de "cash-flows" mais qui malheureusement ne gre que les cas
parfaitement priodiques:

R Statistical Software 1568/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

O nous retrouvons bien la valeur de NFV (Net Future Value) vue calcule dans le cours
thorique:

Et avec les graphiques:

R Statistical Software 1569/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1570/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

27. Thorie des files d'attentes


Le but ici va tre de vrifier ici les quelques rsultats importants obtenus dans le cours
thorique vis vis de la thorie des files d'attentes utilise de faon importante dans la
production, la logistique, la circulation ou autres domaines o l'on trouve des files d'attentes
que l'on doit optimiser et qui satisfont les hypothses des thormes dmontrs dans le cours
thorique.

Nous allons pour cela installer le package queueing:

R Statistical Software 1571/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 318.: Rsum d'un file d'attente M/M/1


R 3.0.2

Le package queuing a un commande rsumant toutes les paramtres d'une file d'attente
M/M/1 tel que nous l'avons dmontr dans le cours thorique en utilisant les commandes
QueueingModel( ) et NewInput.MM1( ):

Nous retrouvons bien les valeurs du cours thorique.

Aprs nous pouvons faire cela pour de nombreuses autres files d'attentes avec ce package
mais nous nous limiterons poru l'instant la M/M/1 car c'est la seule dont nous avons
dmontr les proprits mathmatiques en dtails.

Nous pouvons extraire les valeurs indpendamment les unes des autres (si nous avons besoin
de faire des graphiques par exemple):

R Statistical Software 1572/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1573/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 319.: Probabilit d'Erlang-B


R 3.0.2

Rappelons l'exercice du cours aprs avoir dmontr la relation mathmatique d'Erlang-B:

Dans une entreprise, nous avons dnombr aux heures de pointe 200 appels d'une
duremoyenne de 6 minutes l'heure (temps de service moyen). Quelle est la probabilit de
saturation avec 20 oprateurs (sachant que la dure de service suit une loi exponentielle et la
distribution des arrives une loi de Poisson)?

Nous utilisons alors la commande B_erlang( ) du package queueing:

Nous retrouvons exactement le mme rsultat!

R Statistical Software 1574/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 320.: Probabilit d'Erlang-C


R 3.0.2

Rappelons l'exercice du cours aprs avoir dmontr la relation mathmatique d'Erlang-C:

Quelle est la probabilit d'tre mis en attente si nous prenons un nombre N de 7 serveurs s'il y
a un taux d'arrive de 1 appel par minute et une dure moyenne de service de 5 minutes.

Nous utilisons alors la commande C_erlang( ) du package queueing:

R Statistical Software 1575/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

28. Statistiques baysiennes


Le but ici n'est pas de redvelopper la discussion relativement au dbat qui concerne les
statisticients frquentistes contre les statistiques baysiens mais uniquement de vrifier que
nous retrouvons bien les quelques rares calculs baysiens fait la main dans la cours
thorique ou ceux qui ont t simplement mentionns avec suffisamment de dtails
mathmatiques.

D'abord, pour information, nous n'allons pas revenir sur la technique de classification
baysienne nave vue la page 1296.

Exercice 321.: Statistiques baysiennes discrtes (cas d'une


proportion)
R 3.0.2

Nous allons donc reprendre ici le mme calcul dans le cours thorique base sur l'tude des
cancers dans une cole amricaine a proximit de lignes haute tension.

Nous commenons par dfinir ce que nous savons et les hypothses a priori:

Nous utilisons ensuite la commande pdisc( ) du package LearnBayes pour calculer les
probabilits a posteriori:

R Statistical Software 1576/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous retrouvons donc bien les probabilites discrtes a posteriori calcules la main dans le
cours thorique.

R Statistical Software 1577/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 322.: Statistiques baysiennes continues (cas


d'estimation de la moyenne avec a priori et posteriori
Normales)
R 3.0.2

Nous avons dmontr dans le cours thorique que si la distribution a priori est une distribution
Normale d'esprance 0 et de variance 02 et que la distribution du maximum de
vraisemblance est Normale, alors la fonction de distribution a posteriori aussi Normale
d'esprance a posteriori:

0 ny

02 2
1
1 n

2
0 2

et de variance a posteriori:
1
1 n
2 2
2

0
1

Supposons que nous souhaitons mesurer le quaotient intellectuel d'un group d'individus. Nous
avons une fort prmonation que a priori il 50% de probablit cumule (mdiane) que son QI
soit de 100 et qu'il y a 9/10 que celui-ci soit compris entre 80 et 120 (ces informations peuvent
aussi tre bases sur des donnes historiques passes).

Donc l'aide du package LearnBayes et de la commande normal.select( ) nous pouvons dj


dterminer la distribution Normal la mieux ajuste ses donnes a priori:

R Statistical Software 1578/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Notre groupe test compos de 4 personnes passe donc 4 tests de QI qui nous donnent les
informations suivantes:

n 4, y 110

et que nous savons qu'au niveau mondial la variance vraie est donne par 2 15 .

Nous avons au final comme informations:

n4
y 110
2 15
0 100
02 12.159

Le calcul de l'esprance a posteriori est l'cart-type a posteriori est alors immdiate en


transcrivant les relations suivantes dans R:

0 ny
1
02 2 1 n
1 107.2442, 1 2 2 6.383469
1 n
2 0
0
2

Nous avons donc les paramtres de la loi Normale a posteriori!

R Statistical Software 1579/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 323.: Statistiques baysiennes continues (cas d'une


proportion avec a priori beta estime et a posteriori
binomiale)
R 3.0.2

L'ide ici va tre d'estimer a priori la fonction de distribution de la proportion du cas discret
mais de faon continue. Comme il n'y a pas des milliers de fonctions de distributions dont le
support est compris entre ]0,1[ nous allons nous rabattre sur la seule que nous avons
rencontre dans le cours thorique: la loi bta.

Nous avons alors en faisant l'hypothse que la mdiane de la proportion de cancers est de 3%
et que le 66 centile est de 4% les paramtres de la fonction beta qui seront donns par la
commande beta.select( ) du package LearnBayes:

Nous avons dmontr dans le cours thorique que si la distribution a priori est une distribution
beta et que la distribution du maximum de vraisemblance est binomiale, alors la fonction de
distribution a posteriori est une distribution binomiale aussi avec les paramtres qui changent
un tout petit peu.

Nous avons alors:

R Statistical Software 1580/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne graphiquement:

R Statistical Software 1581/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ainsi, la probabilit a posteriori que la proportion soit plus grande ou gale 3% est alors
donne par:

R Statistical Software 1582/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc il n'y a rien d'extraordinaire a posteriori d'avoir une proportion de cancers au-del de
3%.

Nous pouvons mme calculer l'intervalle 90% en bilatral de la proportion a posteriori:

R Statistical Software 1583/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 324.: Test d'hypothse baysien unilatral (cas


d'estimation de la moyenne avec a priori et posteriori
Normales)
R 3.0.2

Nous pesons un chantillon talon de laboratoire sur une balance de prcision d'cart-type
connu 3 et obtenons les masses suivantes:

Nous avons maintenant un nouvel chantillon et nous savons que a priori que sa masse devrait
tre de moyenne 170 avec un cart-type aussi de 3 et distribu selon une loi Normale.

Nous mettons les hypothses suivantes:

H 0 : 175, H1 : 175

La cote de l'hypothse nulle est alors donne a priori par:

H 0 P 175

H1 P 175

Ce qui se calculs trs aisment avec R ou mme n'importe quel tableur:

R Statistical Software 1584/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc l'hypothse nulle a une cote a priori de 20 contre 1 d'tre plus plausible que l'hypothse
alternative. Et quid du a posteriori sachant que nous avons des mesures passes d'un
chantillon talon?

L encore, sachant que nous avons les informations suivantes:

n 10
y 176
2 9
0 170
02 9

Le calcul de l'esprance a posteriori est l'cart-type a posteriori est alors immdiate en


transcrivant les relations suivantes dans R:

0 ny
1
02 2 1 n
1 175.454545, 1 2 2 0.90453403
1 n
2 0
0
2

Ce qui nous donne les paramtres de la distribution a posteriori de la masse selon l'hypothse
de Normalit.

Nous pouvons donc calculs la cote de l'hypothse nulle a posteriori:

R Statistical Software 1585/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc l'hypothse nulle a une cote a posteriori de 1 contre 2 d'tre plus plausible que
l'hypothse alternative.

Bon et alors quoi? A priori l'hypothse nulle est plus plausible mais a posteriori elle n'est le
pas! Eh bien nous allons devoir associer une probabilit l'hypothse nulle.

Suite venir...

R Statistical Software 1586/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

29. Statistiques spatiales


Une grande partie des statistiques spatiales sont relatives au fait de reprsenter graphiquement
des courbes de niveaux (isoclines) ou des densits surfaciques de probabilits ou simplement
des diagrammes barre ou des diagrammes secteurs represents sur des cartes
gographiques. Nous ne reviendrons pas sur tous ces cas dj traits dans le chapitre sur les
Graphiques partir de la page 674.

Plus proche voisin et distance moyenne


Considrons le cas le plus simples de plus proches voisins.

Pour cela nous gnrons des points alatoirement qui nous serviront d'exemple:

Pour chaque point nous calculons la distance euclidienne aux autres points et nous traons une
ligne pour chaque point avec son unique plus proche voisin (nn=nearest neighbour) ce qui
donne:

R Statistical Software 1587/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

o le min(d[-i]) permet d'liminer la distance nulle entre le point trait dans la boucle et lui-
mme.

Ce qui donne:

R Statistical Software 1588/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, il peut tre intressant de savoir quels sont les points qui sont plus proches du bord
que de leur plus proche voisin, pour cela nous modifions un peu le code prcdent:

Ce qui donne:

R Statistical Software 1589/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons aussi calculer " la main" ou avec le package de statistiques spatiales spatstat
et sa fonction nndist( ) la distance moyenne:

R Statistical Software 1590/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons dmontr dans le cours thorique que l'esprance de la distance du plus proche
voisin dans le cas d'une distribution alatoire tait donne dans un disque par:

1
r E R
2

Or nous avons dans notre exemple 100 points dans un carr de ct unitaire. En premire
approximation avec un disque inscrit au carr, nous avons alors:

100
127
R2

Ds lors:

1 1
r E R 0.044
2 2 127

Comme 0.044 n'est pas trop loign de 0.0500 la distribution peut tre considre
effectivement comme alatoire.

Indiquons qu'il est possible toujours avec le package spatstat de faire des graphs de points
distribus selon la loi de Poisson avec la fonction rpoispp( ):

R Statistical Software 1591/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1592/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

30. Text Mining


Le texte mining est un sujet qui a toujours t important dans certains domaines acadmiques
mais depuis l'mergeance des rseaux sociaux et de l'analyse de news en temps rel, ces
techniques ont connues une vritable explosion et ce particulirement dans le journalisme
automatis et la finance spculative.

Un exemple fameux est un algorithme de Text Mining de Tweet qui aurait suite l'mission
d'un faux Tweet publi par un personnage influent du rseau massivement fait chuter le S&P
500 de 136 milliards de dollars21. Un autre exemple d'application est le mtier d'historien qui
va radicalement changer dans les dcnnies ou sicles venir puisque aujourd'hui les
documents officiels ou non ne sont plus imprims mais gnrs directement en version
lectronique et une quantit phnomne d'entre eux est produite chaque jour. L'historien se
transforme donc un analyste de donnes numriques avec un approche statistique de la
lecteur de texte par les machines que sont les ordinateurs.

Dans ce chapitre nous allons nous concentrer sur les techniques proposes par le package tm
(text mining) de R en se basant sur un corpus contenant un seul et unique fichier qui est le pdf
de mon e-book lments de Mathmatiques appliques (~4'900 pages A4) convertit en texte
pur (*.txt) ce qui le rduit environ 2'800 pages A4.

Sinon le Text Mining n'est pas utile que pour analyser des contenus de livres ou des mdias
sociaux ou de sites web mais aussi pour l'interaction avec des intelligences artificielles
(http://www.ipsoft.com/amelia/) ou l'automatisation automatique de la justice par l'analyse de
compte rendus de jugements (https://predictice.com) ou encore la dtection automatise de
plagiat et l'adaptation intelligente automatise de contrats.

21
Source: https://www.buffalo.edu/news/releases/2015/05/037.html

R Statistical Software 1593/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 325.: Crer et nettoyer le corpus (package


tm/SnowballC)
R 3.0.2

D'abord nous installons et chargeons le package tm:

Nous spcifions le dossier avec tous les fichiers analyser:

Ensuite, nous ommenons seulement utiliser le package tm en construisant d'abord un


corpus l'aide de la commande Corpus( ):

R Statistical Software 1594/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
On peut nettoyer le document avec la commande gsub( ) ou galement pour remplacer des
termes ou abrviations par autre chose:

On peut mettre le contenu de l'ensemble du corpus en minuscules en utilisant de multiples


paramtres avec la commande tm_map( ):

Supprimer tous les nombres:

Supprimer la ponctuation:

R Statistical Software 1595/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Enlever les espaces vides en trop:

Il y a possibilit de supprimer aussi les mots utlra courants d'une langue donne et qui
n'apportent rien une analyse. Voyons d'abord quels sont ces mots dans le cas de la langue
franaise:

R Statistical Software 1596/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous nettoyons donc le corpus avec ce minimum syndical...:

ou nous pouvons aussi enlever nos propres termes (en ralit il vaut mieux avoir un fichier
externe avec l'ensemble des termes considrs comme inutiles car en franais il y en a un tel
nombre que la commande stopwords utilise prcdemment est quasiment inutile):

R Statistical Software 1597/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Arriv ce point nous ne pouvons pas encore lancer une analyse du corpus. Nous allons
devoir effecteur un autre nettoyage (voir ci-aprs):

De nombreux mots sont identiques part qu'ils sont au singulier/pluriel ou accords au


fminin/masculin.

Pour ne pas avoir nettoyer cela manuellement (ce travail tant laborieux). Nous pouvons le
laisser au package SnowballC mais mix avec la commande tm_map( ) du package tm (pas
besoin de spcifier la langue il s'en occuppe) cependant le rsultat du travail est ce jour
(2014-07-07) mauvais en franais:

R Statistical Software 1598/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 326.: Obtenir la matrice d'adjacence d'un corpus


R 3.2.1

Nous avons vu en thorie des graphes ce qu'tait une matrice d'adjacence. Nous allons voir
comment construire cette dernire dans R avec le corpus prcdent.

D'abord nous construisons notre corpus:

Ensuite nous visualisons la matrice de termes par document du corpus:

R Statistical Software 1599/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous construisons et affichons une partire de la matrice d'adjacence:

Nous faisons un premier type de graphe de rseau:

R Statistical Software 1600/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

qui donne:

R Statistical Software 1601/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou avec un visuel amlior:

R Statistical Software 1602/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne en toute proportion ;-) :

R Statistical Software 1603/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon pour avoir le fameux cas interactif que tout le monde vu dans les reportages sur Data
Journalists des Panama Papers il suffit d'utiliser la commande:

R Statistical Software 1604/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 1605/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1606/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 327.: Analyser le corpus (package tm/wordcloud)


R 3.0.2

Une fois le nettoyage termin, pour analyser le corpus nous utilisons la commande
DocumentTermMatrix( ) du package tm:

Voici par exemple le temps ncessaire pour analyser la version texte brute de mon livre (pour
que le lecteur ait une ide du temps de traitement de fichiers volumineux):

Ensuite, nous affichons un rsum de la variable cre pour voir le nombre de termes
analyss:

R Statistical Software 1607/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite, nous transformons la variable dtm en tant que matrice et faisons la somme des
colonnes afin d'avoir la frquence d'apparition de chaque mot:

Ensuite, avec les commandes classiques natives de R nous pouvons trier et afficher les mots
les plus frquents (remarquez les apostprophes qui n'apparaissent pas car le package tm ne
gre par les apostrophes ' mais veut une apostrophe stylise ):

R Statistical Software 1608/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvons ensuite avec le package ggplot faire un histogramme des termes les plus
frquents:

Maintenant fais un nuage de terme l'aide du package wordcloud et de sa commande...


wordcloud( ):

R Statistical Software 1609/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1610/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 328.: Rseau de termes corrls


R 3.2.1

l'poque des Wikileaks, Swissleaks, Luxembourgleaks et Panama Papers, le data


journalisme prende un place de plus en plus improtante vis--vis du dfis d'analyse ou de
corrler les donnes de plusieurs TeraBytes de fichiers ou courriels.

Voyons un example simple d'analyse de rseau de mots avec un corpus ayant 20 documents.

Nous chargeons les librairies, les documents et crons le corpus:

Nous construisons ensuite la matrice des termes:

R Statistical Software 1611/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Enfin, nous pouvons faire un plot du rseau:

R Statistical Software 1612/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1613/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 329.: Dtecter la langue (package textcat)


R 3.0.2

Nous pouvons dtecter les langues avec la commande textcat du package textcat( ) nous
avons avec un exemple simpliste:

Ou en utilisant notre texte de tout l'heure (j'ai aussi mis le temps afin que le lecteur puisse se
faire une ide):

R Statistical Software 1614/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 330.: Dtecter les genres d'un vecteur de textes


R 3.2.1.

Le package genderizeR va intresser probablement plus d'un praticien. Il utilise un API qui
se connecte un site web mais qui autorise par jour un maximum de 1'000 identifications de
genres de prnoms ou de noms. Il peut tre appliqu un vecteur aussi bien qu' un corpus.

Voyons cela avec les fonctions findGivenNames( ) et givenNames( ):

R Statistical Software 1615/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 331.: Tableau de contingence lexical


R 3.2.1.

Nous partons du fichier texte suivant:

Nous utilisons alors la fonction textual( ) du package FactoMineR:

o l'objet nb.list reprsent le nombre de lignes dans lequel le mot apparat.

Les valeurs peuvent ensuite tre accdes directement puisqu'il s'agit de simple data frames!

R Statistical Software 1616/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 332.: Analyse de sentiments (avec apprentissage par


mthode baysienne)
R 3.2.1.

Nous allons procder ici une analyse de Tweets typique. Pas souci de simplification nous
crirons les Tweets la main plutt que de passer par l'API qui a une tendance volatile.

Nous utiliserons d'abord un nouveau package pas utilis jusqu'ici qui est le package
RTextTools.

Jusque l rien d'extraordinaire!

R Statistical Software 1617/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous fusionnons ce joli petit monde:

Maintenant nous utilisons la fonction create_matrix( ) du package RTextTools:

R Statistical Software 1618/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Bon cela cre un object mais ce serai mieux d'en voir le contenu dtaill:

R Statistical Software 1619/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Et enfin:

Voil donc un rsultab obtenu en un minimum d'efforts avec un cot minimum!

R Statistical Software 1620/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 333.: Infrence de sentiments (sans apprentissage)


R 3.2.3

Nous allons analysis sans a priori le fichier de commentaires suivant en utilisant le multiples
packages:

D'abord nous lisons les le contenu ligne par ligne avec la fonction native readLines( ):

R Statistical Software 1621/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous faisons un nettoyage avec la classique fonction gsub( ) et une mise en minuscule avec
lapply( ):

R Statistical Software 1622/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Pour la suite nous installons et nous chargeons le package sentiment qui n'est plus ce jour
sur le CRAN:

R Statistical Software 1623/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Maintenant avec la fonction classify_emotion( ) nous classifions les message par sentiment:

R Statistical Software 1624/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On fait de mme avec les polarits en utilisant la fonction classify_polarity( ):

On rassemble le tout:

R Statistical Software 1625/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On fait un premier plot des sentiments:

R Statistical Software 1626/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et idem pour la polarit:

R Statistical Software 1627/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et enfin le nuage:

R Statistical Software 1628/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne:

R Statistical Software 1629/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 334.: Bag-of-Words (package qdap)


R 3.2.1. x86

Le Bag-Of-Words est beaucoup utilis dans le Data Mining que ce soit en finance ou dans
l'anayse des changes sur les rseaux sociaux.

Voyons quelques exemples avec le package qdap et attention il faut la version 32bits car
utilise rJava!!

D'abord voyons la fonction bag_o_words( ) qui nous intresse ici particulirement et qui
renvoie un vecteur de mots (il devient alors ais d'en faire toutes sortes de statistiques):

Ou sur un data frame directement:

R Statistical Software 1630/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite nous pouvons faire un regroupement par variable en utilisant la mthode by:

Ou faire encore plus subtil en prenant en compte la polarit (mthode empirique d'attribution
de ngativit ou de positivit de phrase si ces dernires sont en anglais):

R Statistical Software 1631/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1632/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

31. Bioinformatique/Biostatistiques
La bioninformatique (dont nous retrouvons aussi des Toolbox dans MATLAB) est aussi
excellent exemple d'application pratique des outils statistiques et de machine learning.

Exceptionnellement un petit rappel de culture gnrale s'impose.

La technologie des microarray utilise les proprits de l'hybridation des acides nucliques et
utilise des molcules complmentaires attaches une surface solide, nommes "probes" dans
le domaine, pour mesurer la quantit d'une acide nuclique spcifique (ou d'une chane
particulire) prsent dans un chantillon souvent nomm "cible".

Les molcules se retrouvant dans les "probes" sont par la suite labelisses l'aide de scanners
spcialiss et la quantit d'acides nucliques dans chaque probe est donne en termes
"d'intensit" (fluorescence de l'activi chimique) ce qui se traduit souvent sur les ordinateurs
en une image o chaque "probe" est un pixel ou ensemble constant de pixels ayant un couleur
donne avec un certaine intensit (souvent du noir rien - au blanc pour le maximum
d'intensit). La matrice (grille) de couleurs obtenue se lit parfois en ligne pour un type de gne
donn et en colonne des conditions d'analyse du gne d'intrt.

Les industriels22 proposent une large palette de plateformes d'analyses diffrentes dont le
critre majeur est souvent le bruit de mesure (et en deuxime le type de cible d'intrt:
gnome humain, rat ou autre parfois sur mesure) qui dans la pratique ncessitent des
rptitions d'analyses et manipulations statistiques des donnes extraites avant de pouvoir
conclure sur quoi que ce soit de manire un peu scientifique (donc pour un mme chantillon
on obtient des rsultats sensiblement diffrents cause du bruit, du protocole exprimental et
de l'oprateur). Ces manipulations sont souvent nommes "preprocessing" (prtraitement)
dans le domaine.

Nous allons pour survoler ce sujet d'abord installer le package bioconductor


(http://bioconductor.org/). L'installation est un peu spciale car en ralit nous appelons des
fonctions plutt que des les installer:

22
En ce dbut de 21me sicle Affymetrix serait le leader du march des microarray.

R Statistical Software 1633/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous avons aussi besoin du package seqinr pour obtenir les squences ADN et extraire des
informations des bases de donnes de protines en lignes et aussi pour leur analyse
lmentaire:

R Statistical Software 1634/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 335.: Lire un fichier *.DICOM (Digital Imaging and


Communications in Medicine)
R 3.2.1

Dans le cours Photoshop nous avons vu les nombreuses possibilits d'ouvrir et d'diter un
fichier DICOM.

Voyons ce que nous pouvons tirer de R l'aide du package oro.dicom et la fonction


readDICOMFile( ):

ToDo: Trouver comment choisir le calque (couche) la lire.

R Statistical Software 1635/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 336.: Obtenir des squencages sur les BDD en ligne


R 3.1.0

Le Centre national d'information sur la biotechnologie (NCBI; www.ncbi.nlm.nih.gov) aux


tats-Unis maintient une vaste base de donnes de toutes les donnes de squence d'ADN et
de protines qui ont t recueillis jusqu' aujourd'hui.

Il ya aussi une base de donnes similaire en Europe, le European Molecular Biology


Laboratory (EMBL; www.ebi.ac.uk/embl), et galement une base de donnes similaire au
Japon, la DNA Data Bank of Jaban (DDBJ; www.ddbj.nig.ac.jp).

Ces trois changent des donnes des bases de donnes chaque nuit, donc en un point
quelconque dans le temps, elles contiennent des donnes presque identiques.

Chaque squence dans la base de donnes NCBI squence est mmorise dans un registre
spar, et se voit attribuer un identifiant unique qui peut tre utilis pour se rfrer cet
enregistrement de la squence. L'identifiant est connu comme une adhsion, et consiste en une
combinaison de chiffres et de lettres.

Par exemple, le virus de la dengue (grippe tropicale) provoque de la fivre de la dengue, qui
est classe comme une maladie tropicale et dsigne par l'un de quatre types de virus de la
dengue: DEN-1, DEN-2, DEN-3 et DEN-4. Les adhsions NCBI pour les squences d'ADN
de la DEN-1, DEN-2, DEN-3 et DEN-4 sont respectivement NC_001477, NC_001474,
NC_001475 et NC_002640.

Figure 1Virus de la dengue au microscope lectronique

Note that because the NCBI Sequence Database, the EMBL Sequence Database, and DDBJ
exchange data every night, the DEN-1 (and DEN-2, DEN-3, DEN-4) Dengue virus sequence
will be present in all three databases, but it will have different accessions in each database, as
they each use their own numbering systems for referring to

Notez que parce que la base de donnes de squences NCBI, EMBL et DDBJ synchronises
leurs tous les soirs, les squences du virus DEN-1 (et DEN-2, DEN-3, DEN-4) sera prsent

R Statistical Software 1636/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
dans les trois bases de donnes, mais il aura diffrentes accessions dans chaque base de
donnes, car ils utilisent chacun leurs propres systmes de numrotation pour faire rfrence
leurs propres enregistrements de squence...

Nous allons voir maintenant comment extraire la squence NC_001477 du NCBI par
exemple. Pour cela nous allons sur le siter Internet du NCBI et nous tapons le squence qui
nous intresse dans le champ de recherche:

R Statistical Software 1637/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Il y aura de nombreux rsultats quand vous cliquerez sur Search:

Il faut descendre dans la page jusqu' trouver:

R Statistical Software 1638/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Vous cliquez dessus pour arriver sur:

R Statistical Software 1639/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Cliquez sur le Send qui est en haut droite et choisissez les options suivantes:

Cliquez sur Create File, pour que ce fichier texte l'extension *.FASTA se tlcharge sur
votre ordinateur. Vous aurez alors:

R Statistical Software 1640/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 337.: Lire et traiter un fichier *.FASTA


R 3.1.0

Nous allons voir maintenant comment faire quelques petites traitement et analyses
lmentaires du fichier FASTA que nous avons tlcharg.

D'abord regardons un peu le contenu en utilisant la commande read.fasta( ):

On extrait quelques petites informations lmentaires autres:

R Statistical Software 1641/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ou aussi:

R Statistical Software 1642/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou un petit graphique vite fait mal fait:

R Statistical Software 1643/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Comme les G et les C impliquant des triples liaisons et donc des proprits physico-chimiques
parfois intressantes:

il peut tre utile de connatre la proportion de leur prsence:

R Statistical Software 1644/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 338.: Afficher l'image d'un microarray


R 3.1.0

Voici quoi ressemble un microarray Affymetrix:

Le prinicipe est schmatique le suivant:

Normalement les colonnes reprsentent des familles d'organes ou de fonctionnalits


biologiques et les lignes des gnes:

R Statistical Software 1645/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce rappel tant fait passons maintenant la pratique:

R Statistical Software 1646/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1647/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous regardons les distributions d'intensit de nos 8 microarray pour voir s'il y en a qui sont
significativement diffrents:

Il se semble qu'il y ait a priori une anomalie avec le microarray h. Nous pouvons investiguer
cela un peu mieux avec un histogramme:

R Statistical Software 1648/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

On voit qu'un des microarray a une distribution bimodale ce qui est souvent le signe d'un
dfaut de conception.

R Statistical Software 1649/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Lire et traiter un fichier Affymetrix *.CEL


Nous allons charger un des fichiers *.CEL de gnome humain (homo sapiens). Pour cela le
fichier suivante de 1GB:

Qui aprs dcompression contient:

Si nous dcompressons un de ces fichiers, nous avons alors chaque fois un fichier d'environ
1MB:

qui contient une fois ouvert avec NotePad++:

R Statistical Software 1650/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous utilisons la fonction ReadAffy( ):

Si il y a un seul fichier *.CEL dans le dossier nous avons:

R Statistical Software 1651/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Mais si nous avons 3 fichiers *.CEL alors:

Commes ces fichier *.CEL correspondent respectivement un unique microarray chacun


nous pouvons faire aussi un histogramme de la fluorescence (nous le faisons brut de coffre):

R Statistical Software 1652/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et comme d'habitude nous pouvons faire un boxplot:

Nous pouvons avoir un petit rsum simplifi de notre jeu de fichier *.CEL:

Nous pouvons avoir le nom des gnes avec la commande geneNames( ):

R Statistical Software 1653/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1654/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 339.: Lire des fichiers *.PDB (Protein Databank)


R 3.2.1

Voyons comment lire des fichiers *.PDB pour diffrentes usages

Reprsentation 3D d'une protine avec choix des orbitales


Nous allons pous cela simplement utiliser les fonctions read.pdb( ) et visualize( ) du package
Rpdb:

Ou sous une forme lgerement diffrente avec le choix des orbitales (s,p,l,d,):

R Statistical Software 1655/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1656/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diagramme de Ramachandran
Suite la demande d'une lve (le rsultat peut tre considrablement amlior)

D'abord on charges les packages Rpdb et bio3d ncessaires pour faire le tout (et MASS pour
la partie statistique) et laire de la fonction torsion.pdb( ) on extrait les angles:

Une fois ceci fait nous combinons un ensemble de techniques varies utilisatant la fonction
smoothScatter( ) pour les couleurs de fonds, la fonction scatter.smooth( ) pour la rgression
LOESS et enfin kde2d( ) et contour( ) du package MASS pour les courbes de niveau:

Ce qui donne (voir page suivante):

R Statistical Software 1657/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1658/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

32. quations diffrentielles ordinaires ou partielles


Il peut paratre curieux qu'un logiciel initialement ddi aux statistiques pures fasse de la
rsolution de ODE et PDE mais bon comme avec un langage de script il est possible de
faire beaucoup de chose alors pourquoi pas (cela vaut probablement mieux que de le faire
dans un tableur).

Nous allons ici prsenter la syntaxe pour rsoudre et reprsenter les quations diffrentielles
que nous avons dmontres dans le cours thorique. chaque quation diffrentielle sera
ddie un exercice.

Exercice: quations de Lotka-Volterra


R 3.1.0

une variante de notation prs au niveau des variables par rapport au cours thorique nous
avons pour ce systme d'ODE:

Ce qui donne:

R Statistical Software 1659/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1660/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice: Comptition des faucons et colombes


R 3.4.1

D'abord, nous allons devoir tlcharger le package ici manuellement:

http://faculty.umb.edu/liam.revell/programs/

Une fois ceci fait, nous le chargeons manuellement dans R:

Nous slectionnons le fichier tlcharg:

R Statistical Software 1661/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donnera:

Nous dfinissons la matrice des gains:

R Statistical Software 1662/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La matrice de gains ci-dessus peut tre conceptualise comme le rsultat d'interactions


concurrentielles pour les ressources (par exemple, dans un affrontement comptitif entre un
faucon et une colombe, le faucon reoit 2 units de ressources et la colombe n'obtien rien).

Chaque rsultat est donn par un graphique deux panneaux. Le panneau suprieur montre
les changements dans les frquences relatives de chaque stratgie dans le temps. Le panneau
infrieur montre l'tat de sant moyen de la population sur la mme priode. Ainsi, par
exemple, voici le rsultat en utilisant la matrice de paiement donne ci-dessus pour 50
gnrations avec une frquence initiale de f(faucon) = 0,01 et f(colombe)= 0.99:

R Statistical Software 1663/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Le rsultat ci-dessus peut tre interprt comme suit: la stratgie des faucons est trs efficace
lorsqu'elle est rare. Cela converge vers une valeur statistique, ce qui suggre que la stratgie
des faucons est volutivement stable (un ESS). L'efficience de la stratgie est la plus leve au
dbut de la simulation, de mme que l'efficience moyenne de chaque stratgie (c.--d., Les
faucons sont plus forts quand ils sont rares); Cependant, la forme moyenne diminue dans le
temps jusqu' un niveau d'quilibre de 0.6. L'aptitude de la stratgie de la colombe approche
zro lorsque les colombes sont rares, ce qui suggre que la stratgie de la colombe n'est pas
volutivement stable dans ce paramtrage de modle.

Considrons maintenant la matrice de gains suivante:

Ici, les colombes reoivent des gains mme lors de rencontres avec des faucons (peut-tre, par
exemple, l'agression des faucons est change contre une capacit trouver de la nourriture.
Les colombes trouvent les ressources alimentaires de manire plus efficace et peuvent manger
avant que les faucons arrivent.) Cette matrice de paiement modifie protge-t-elle les
colombres contre l'extinction?

Cela donne:

R Statistical Software 1664/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

La stratgie de la colombe va encore dans le sens d'une extinction, mais le temps d'extinction
est beaucoup plus long.

Essayons une matrice de gains dans laquelle les cots de l'agression entre les faucons
augmentent encore, disent 60% de la valeur de la ressource (de sorte que l'aptitude physique
d'un faucon dans une interaction faucon-faucon est de 0.4). Cela correspond la matrice de
paiement gain suivante:

Ce qui donne:

R Statistical Software 1665/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Enfin, nous avons trouv un paramtrage modle qui suggre la coexistence.

R Statistical Software 1666/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice: quations de Lorenz


R 3.1.0

une variante de notation prs au niveau des variables par rapport au cours thorique nous
avons pour ce systme d'ODE:

Ce qui donne:

R Statistical Software 1667/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1668/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

33. Scripting (fichiers *.R)


D'abord un petit rappe concernant les raccourcis clavier:

Ctrl+L efface le contenu du terminal


Ctrl+R excute la ligne de script actif
Ctrl+S sauvegard le fichier de script actif
F5 excute tout le fichier de script actif

Le raccourci clavier pour excuter une ligne ou un bloc slectionn est Ctrl+R sinon pour
appeler un fichier .R et l'excuter on utilisera la commande source( )-

Exercice 340.: Crer/diter un fichier R en ligne de


commande
R 3.1.3

Pour crer un fichier de script en ligne de commande dans le dossier de travail par dfaut, on
utilisera file.create( ):

Ensuite pour l'diter nous crirons en ligne de commande la fonction edit( ):

Pour vrifier si un fichier existe on utiliser la commande file.exists( ):

R Statistical Software 1669/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1670/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 341.: Faire une exprience alatoire binaire


R 3.0.2

Nous tirons pile ou face et regardons s'il y galit entre les piles et les faces:

Souvent il n'y aura pas galit (logique) mais nous savons cependant que la pice n'est pas
truque. Alors bon combien de fois avons nous la non galit si nous rptons souvent ce test?

R Statistical Software 1671/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Donc 74 fois sur 1'000 l'hypothse nulle comme quoi la pice est non truque est juste, le
reste du temps elle est fausse. Donc nous avons un risque de premire espce d'environ
93% de rejeter tort l'hypothse nulle.
Supposons que maintenant la pice soit lgrement truque:

Donc sur 1'000 exprience d'une pice truque, notre test dcid 7 fois tort que l'hypothse
nulle tait vraie tort et 993 fois qu'elle fausse raison. Nous avons donc un risque de
deuxime espce de 0.007%

R Statistical Software 1672/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 342.: Porte des variables


R 3.0.2

Dans tout language de script ou de programmation la notion de porte des variables est
importante comprendre et dans certains cas trs importante utiliser.

Considrons d'abord l'exemple classique ci-dessous le plus simple:

Nous remarquons que la fonction est capable de lire la variable y qui est l'extrieur de son
domaine de dfinition bien que cette mme variable ne soit pas passe en tant qu'argument.
Ensuite, nous remarquons aussi que la fonction n'est pas capable de modifier la variable x qui
se trouve l'extrieur de son domaine de dfinition puisque avant et aprs x vaut toujours 3.

Il faut voir maintenant comment nous pouvons craser la variable x au-del de la fonction
elle-mme. Pour cela, la premire mthode consiste utiliser l'oprateur de superaffectation
<<-:

ou en utilisant la fonction assign( ):

R Statistical Software 1673/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1674/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 343.: Comprendre les structures conditionnelles


R 3.0.2

Structure conditionnelle If...else


La structure conditionne if... else... ne peut oprer que sur un unique attribut (donc pas
applicable sur l'ensemble des attributs d'un vecteur). Un cas classique dans R consiste dans les
scripts vrifier si un package est install ou non:

Nous allons donc crer un nouveau script:

Et nous crivons:

Ensuite, nous enregistrons notre fichier en tant que fichier script (pouvant contenir plus qu'une
fonction):

R Statistical Software 1675/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait nous pouvons charger et utiliser le script:

Nous un premier exemple avec la structure conditionnelle ifelse( ) qui est trs souvent utilis
pour oprer directement sur l'ensemble des attributs d'un vecteur:

Et videmment il est possible d'imbriquer des ifelse:

R Statistical Software 1676/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Le ifelse peut aussi tre utilis pour autre chose que de faire des caluls bien videmment (par
exemple renommer le contenu d'un vecteur-colonne) et ainsi de suite...

Un autre exemple acadmique utlra connu et typique d'application des structures


conditionnelles est de reprsenter graphiquement une marche alatoire (mouvement
brownien). Ce qui donne (il existe plusieurs manires d'crire un tel script!):

R Statistical Software 1677/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Structure conditionnelle Switch


La structure conditionnelle est peu prs quivalente la structure if ce prs que nous ne
pouvons pas toujours faire de tests logiques complexes, que l'criture est rsultat gal plus
court qu'une structure if et que normalement rsultat gal le temps d'excution d'une
structure switch est toujours plus rapide en temps processus.

Voyons un petit cas classique qui consiste faire un petit menu choix excutant certaines
commandes en fonction du choix de l'utilisateur:

et si l'utilisateur fait un choix:

R Statistical Software 1678/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 344.: Comprendre les structures itratives


R 3.0.2

Les structures itratives ont elles aussi une place trs important dans R (comme dans tous les
langages de toute faon!). Considrons le cas o nous souhaiterions avec une identification
rapide des lignes paires ou impaires d'un data frame:

Nous allons donc crer un nouveau script:

Et nous crivons notre premier exemple avec une boucle for( ):

Ensuite, nous enregistrons notre fichier en tant que fichier script (pouvant contenir plus qu'une
fonction):

R Statistical Software 1679/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait nous pouvons charger et utiliser le script:

Ou encore l'instruction while( ) qui permet d'identifier par exemple partir de quel moment
une certaine somme est atteinte:

R Statistical Software 1680/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et quand on excute le script, nous obtenons:

Nous pouvons nous amuser en faire une fonction avec un paramtre d'entre:

Ce qui donnera:

R Statistical Software 1681/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R se base principalement sur la manipulation de vecteurs et matrices donc plutt que de faire
des boucles parfois inutilement pensez vectoriel!!! Un exemple typique consistant calculer
la somme des carrs des erreurs d'un vecteur:

R Statistical Software 1682/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1683/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 345.: Programmer une bascule moyennes


R 3.0.2

Comme premier script, nous allons crire une fonction qui permet de calculer au choix la
moyenne arithmtique, gomtrique (ce qui nous vitera de faire appel au package psych qui
contient une commande geometric.mean( ) pour la moyenne gomtrique), harmonique et la
mdiane.

Nous allons donc crer un nouveau script:

et nous crivons notre script pour dcouvrir par la mme occasion la structure conditionnelle
switch:

Ensuite, nous enregistrons notre fichier en tant que fichier script (pouvant contenir plus qu'une
fonction):

R Statistical Software 1684/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait nous pouvons charger et utiliser le script:

Remarque: Certes ce bout de code est discutable car s'il y a une valeur ngative ou nulle dans
le vecteur, la moyenne gomtrique va renvoyer une erreur (voir le cours thorique pour
traiter de ces cas l).

R Statistical Software 1685/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 346.: Programmer une fonction avec un paramtre


en entre renvoyant un tableau
R 3.0.2

Nous crivons (en mme temps c'est une jolie application de la commande sapply( )):

et nous testons:

R Statistical Software 1686/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 347.: Programmer une fonction avec plus d'un


paramtres en entre
R 3.0.2

Programmer une fonction R avec deux paramtres en entre est trs similaire n'importe quel
autre langage. Ce qui est drle c'est de passer un vecteur un des deux paramtres.
Considrons l'exemple physique avec le couple Terre/Soleil et l'apoge et la prige:

Ou une fonction qui peut tre utile dans la pratique en plus d'tre instructive ( personnaliser
selon les besoins) qui va authentifier dans un vecteur les positions d'une squence continue de
k lments identiques (dans la cas prsent il s'agit de "1"):

R Statistical Software 1687/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Avec une entre cela donnera:

R Statistical Software 1688/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 348.: Programmer une fonction avec plus d'un


paramtres en entre et utilisant une liste
R 3.0.2

Il s'agit ici probablement du cas le plus courant dans les complications pratiques du logiciel.

Nous crons le script suivant:

Et nous le testons sans options dans un premier temps:

et avec options dans un deuxime temps:

R Statistical Software 1689/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1690/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 349.: Programmer une fonction avec un fichier texte


en entre
R 3.0.2

crire une fonction qui prend un fichier texte en entre est identique crire une fonction qui
prend en entre un scalaire ou un vecteur.

Pour cet exemple, nous allons prendre un fichier texte simple et gnrer un objet de type liste
dont chaque entre correspondra un mot se trouvant dans le fichier texte et nous associerons
chacune de ses entres, un vecteur contenant la position des endroits o ce mme mot a t
trouv.

La fonction dans un premier temps est la suivante (prenez le temps de lire car c'est instructif!):

Ensuite, nous utilisons la fonction:

Un rsum de la liste nous donnera:

R Statistical Software 1691/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et un affichage complet (mais dont la capture d'cran est tronque):

Ou pour un mot prcis:

R Statistical Software 1692/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et ainsi de suite avec toutes les techniques dj tudies pour les listes au dbut de cet e-book.

R Statistical Software 1693/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 350.: Programmer une fonction avec des arguments


indfinis
R 3.2.1

R Statistical Software 1694/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 351.: Calculer Pi avec la mthode de Monte-Carlo


R 3.0.2

Un grand classique qui a son utilit pour tre tendu de nombreux autres domaines dans la
pratique:

Avec la boucle pour faire tourner le script N fois:

Ce qui donne chaque tape successive:

R Statistical Software 1695/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ou une faon plus amusante avec un indicateur d'avancement de calcul (trs utilis dans la
pratique) combinant les commandes winProgressBar( ) et Sys.sleep( ):

R Statistical Software 1696/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Signalons encore une autre approche qui montre la convergence du calcul mais utilisant cette
fois-ci le disque en entier (et pas que le premier quadrant):

Ce qui donne:

R Statistical Software 1697/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1698/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 352.: Optimisation de scripts


R 3.0.2

Dans les grosses applications, l'optimisation de scripts est un lment crucial (c'est un mtier
en soit par ailleurs). Voyons un joli petit exemple avec R qui consiste calculer les
diffrences (variations) lments par lments d'un vecteur par ordre d'apparition (certes il
existe un package qui contient dj cela mais bon c'est instructif quand mme!).

Nous crons d'abord un vecteur de taille relativement consquente:

Maintenant faisons le code "au pire" qui consiste gnrer un vecteur des diffrences avec
une simple boucle:

Comme nous pouvons le voir... c'est mme plus lent qu'un tableur...

R Statistical Software 1699/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Mais nous pouvons faire mieux ne serait-ce qu'en crant le vecteur des diffrences avant la
boucle:

La diffrence est dj phnomnale!

Mais nous pouvons faire encore mieux en utilisant les capacits vectorielles de R:

R Statistical Software 1700/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme quoi si la force de l'astuce est avec toi... matre de R tu seras...

Statistiquement nous pouvons aller encore plus vite en utilisant le package natif compiler de R
et sa fonction cmpfun:

R Statistical Software 1701/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Dans le mme genre sinon pour calculer la mdiane de N chantillons i.i.d de taille n dans un
vecteur med avec une magnifique application de la commande apply( ):

Efin signalons le package memoise et sa fonction correspondate memoise( ) aussi applicable


lors de la lecture de bases de donnes ou l'appel des API:

R Statistical Software 1702/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1703/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 353.: Gestion des erreurs et des exceptions


R 3.1.1

Il est normalement inutile ce niveau d'utilisation d'un logiciel informatique de prciser ce


dont quoi sert la gestion des erreurs et des exceptions puisque cela est au programme de
premire anne. Nous allons donc voir simplement comment mettre en ouvre cela avec R en
utilisant un exemple concret et frquent:

Ensuite il n'y a qu' jouer avec en excutant la fonction et ensuite en l'appelant avec les deux
dernires lignes du script visible ci-dessus.

R Statistical Software 1704/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 354.: Excuter des scripts *.R avec VBA (depuis MS


Excel/Word ou autre)
R 3.0.2

Un grand nombre d'entreprises utilisent Microsoft Excelpour faire des "statistiques". L'outil
tant trs limit, une possibilit trs intressant est de faire des routines VBA qui exportent les
donnes en *.csv, laisser R faire les analyses et ensuite exporter les rsultats ou graphiques
sous forme d'image pour les importer enfin dans MS Excel. Nous allons ici juste montrer le
principe qui se gnralise ensuite des cas beaucoup plus complexes. Pour plus
d'informations, je renvoie le lecteur mon e-book sur le VBA dans MS Excel.

D'abord, nous considrons le script suivant RVBA.R enregistr dans le dossier C:/tmp/:

et ensuite dans un module VBA d'un des logiciels de la suite Microsoft Office, nous crivons:

R Statistical Software 1705/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui s'excute correctement! On voit par ailleurs pendant un petit moment la fentre de
commande s'ouvrir:

R Statistical Software 1706/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 355.: Excuter du code C depuis R


R 3.0.2

Lorsque l'on traite plus d'une dizaine de millions de lignes de donnes, travailler avec les
outils standard de R devient chose impossible et surtout si aucun package ne correspond nos
besoin. Ds lors, soit on part sur du Matlab pour compiler un script en C, soit on crit
directement du C dans R.

Pour voir cela avec un exemple simple et gnrique, nous allons reprendre l'exemple
gnrique donn initialement ici:

http://dirk.eddelbuettel.com/blog/2012/11/20/

Vous devrez d'abord tlcharger et installer les R tools a l'adresse suivante:

http://cran.r-project.org/bin/windows/Rtools/

R Statistical Software 1707/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Une fois l'installation effectue nous crons le fichier C++ suivant piSugar.cpp dans le dossier
travail de la session courant de notre R:

et nous pouvons excuter notre petit script qui va donc estimer la valeur de Pi par Monte-
Carlo en utilisant le package Rcpp qui dcoule de l'installation des R Tools ainsi que le
package rbenchmark qu'il faudra avoir install aprs coup et qui est spcialis dans la
comparaison de scripts:

R Statistical Software 1708/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous pouvons galement crire en C directetement dans R et transformer la vole avec la


commande cppFunction( ):

R Statistical Software 1709/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1710/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 356.: Excuter R depuis C# avec R.Net


R 3.1.2

Le C# est un langage trs demand dans la finance dans certains pays. Nous allons donc voir
ici une mthode simple pour envoyer R des valeurs et rcuprer des rsultats.

D'abord se rendre sur le site http://rdotnet.codeplex.com:

et droite de la page visible, tlcharger la dernire version stable:

Cela tlcharger un trs petit fichier zip du type:

R Statistical Software 1711/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
qui aprs dcompression dans le dossier de votre choix donnera:

Ensuite ouvrez Visual Studio C# (ici la version 2010 dans un environnement XP x86) et crez
un Nouveau projet:

R Statistical Software 1712/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Prenez Application Console et donnez un nom au projet (ici RDotNetDemo):

Une fois le projet cr, cliquer sur Ajouter une rfrence dans menu contextuel du volet
droit sur le dossier Rfrences:

R Statistical Software 1713/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Prenez les deux dll indiques qui suffiront pour la dmonstration:

Ensuite il est conseille dans certains environnements Microsoft Windows d'ajouter le chemin
de R dans la variable d'environnement PATH:

R Statistical Software 1714/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Une fois ceci fait, nous crivons le code suivant pour faire un exemple d'appel de R:
using Microsoft.Win32;
using System;
using System.Linq;
using RDotNet;
using System.IO;

namespace Sample1
{
class Program
{
static void Main(string[] args)
{
using (RegistryKey registryKey =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\R-core\R"))
{
var envPath = Environment.GetEnvironmentVariable("PATH");
string rBinPath = (string)registryKey.GetValue("InstallPath");
string rVersion = (string)registryKey.GetValue("Current Version");
rBinPath = System.Environment.Is64BitProcess ? rBinPath + "\\bin\\x64"
:
rBinPath +
"\\bin\\i386";
Environment.SetEnvironmentVariable("PATH",
envPath + Path.PathSeparator + rBinPath);
}
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
// Initializes settings.
engine.Initialize(); // After Executing this line its crashing.

NumericVector group1 = engine.CreateNumericVector(new double[] {


30.02, 29.99, 30.11, 29.97, 30.01, 29.99 });
engine.SetSymbol("group1", group1);
NumericVector group2 = engine.Evaluate("group2 <- c(29.89, 29.93,
29.72, 29.98, 30.02, 29.98)").AsNumeric();

// Test difference of mean and get the P-value.


GenericVector testResult = engine.Evaluate("t.test(group1,
group2)").AsList();
double p = testResult["p.value"].AsNumeric().First();

Console.WriteLine("Group1: [{0}]", string.Join(", ", group1));


Console.WriteLine("Group2: [{0}]", string.Join(", ", group2));
Console.WriteLine("P-value = {0:0.000}", p);
Console.ReadLine();
}

}
}
}

R Statistical Software 1715/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

R Statistical Software 1716/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 357.: Dbugger


R 3.0.2

Voil un sujet plus qu'important...

Le but ici va tre de dcouvrir des commandes qui sont similaires dans l'ide aux techniques
de debuggage de MATLAB:

traceback, debug, browser, trace, recover

Traceback
La commance traceback affiche la liste des fonctions appeles avant de lister enfin ce qui a
fait bugger le traitement.

Voyons un exemple simple en considrant le script suivant:

Si maintenant nous lanons ce script en provoquant une erreur exprs:

R Statistical Software 1717/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Nous voyons que la commande traceback( ) est finalement a priori peu utile car renvoie des
informations trop vagues (du moins sur l'environnement MS Windows). Effectivement, si
nous changeons l'emplacement de l'erreur, nous avons...:

Ce qui nous donnera:

R Statistical Software 1718/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Donc la fonction h(y) apparat aussi alors qu'elle ne gnre aucun bug directement!

Debug
Bon nous remettons le code bugg dans l'tat initial et nous allons voir maintenant la fonction
debug( ) dont l'utilit est aussi discutable. Effectivement voyons un exemple:

R Statistical Software 1719/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme nous pouvons le voir il est donc important de connatre (identifier) le nom des
fonctions buges au fur et mesure que l'on avance. Ainsi, dans l'exemple suivant, nous
dcidons de dbugger la fonction h(z) pendant le dbuggage de g(y):

R Statistical Software 1720/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Liste des commandes:

n: poursuivre le debuggage (sans que cela rente ncessairement dans les sous
fonctions!)
c: excute l'ensemble restant de la fonction (ou de l'ensemble des fonctions) jusqu' la
fin
Q: arrte le dbuggage et l'excution de la fonction
print(nom_variable): pour pouvoir tout moment voir le contenu (la valeur) d'une
variable pendant un dbuggage

Remarque: Il suffit de recharger le fichier *.R ou le package pour que le mode dbuggage
qui a t activ en crivant debug(nom_de_la_fonction) s'arrte

Voici un exemple de la commande where:

R Statistical Software 1721/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Browse
Il existe une autre manire beaucoup plus agrable de dbugger qui consiste crire la
commande browse( ) un endroit dsir du code source:

R Statistical Software 1722/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Comme vous pouvez le voir le debuggage commence donc l'endroit o nous avons
positionn la function browse( ).

Trace
Il est possible lorsque les fonctions sont petites de les modifier "temporairement" pour faire
des tests la vole pendant un debuggage. Pour voir cela considrons toujours notre petit
script:

R Statistical Software 1723/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Avant d'utilier la fonction trace( ) pour insrer une ligne il faut savoir quel est le numro
d'insertion (et non de remplacement!) et pour cela nous pouvons faire usage de la fonction
as.list(body(...)):

Nous pouvons vrifier que l'insertion se soit faite:

R Statistical Software 1724/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Si maintenant nous excutons les valeurs ngatives passent:

R Statistical Software 1725/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Profilage
Le profilage de script est un sujet important pour ceux cherchant trouver les goulets
d'tranglement de leurs codes. Pour l'exemple, nous utiliserons le mme script qu'avant avec
les fonctions natives Rprof( ), invisible( ) dont le but est de ne pas imprimer les calculs de la
fonction teste, et summaryRprof( ).

Avec un tout petit script comme celui que nous avons, nous voyons que le profiler a de la
peine profiler quoi que ce soit:

R Statistical Software 1726/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous pouvoons alors spcifier le temps d'chantillonnage pour avoir quelque d'un peu mieux:

R Statistical Software 1727/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ou peux ceux prfrent les rapports visuels discutable avec le package profr:

R Statistical Software 1728/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 358.: Crer rapidement un package R d'un script R


R 3.0.2

D'abord pour faire rapidement (et mal) un petite package R d'un script R, l'utilisatin du
package devtools sera obligatoire:

Une fois ce package install, vrifiez votre dossier de travail par dfaut et crez un dossier
pour un futur package avec la commande create( ) du package devtools:

R Statistical Software 1729/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui crer un dossier avec le nom du nouveau package souhait:

Dont le contenu est:

R Statistical Software 1730/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
D'abord changeons le contenu du fichier DESCRIPTION pour y mettre les informations
adquates:

Dans le dossier R du package, il y a notre fichier de script principal:

R Statistical Software 1731/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous ditons ce fichier qui par dfaut contient:

Pour le changer comme ci-dessous:

R Statistical Software 1732/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Dans le dossier man, pour dfinir l'aide de la fonction, nous rajoutons le fichier *.Rd suivant:

Et nous y mettons le minimum syndical:

R Statistical Software 1733/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ensuite, nous "compilons" le package l'aide de la commande build( ) du package devtools:

Ce qui donnera:

R Statistical Software 1734/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Une fois ceci fait, nous pouvosn utiliser la commande install( ) du package devtools:

Mais une erreur va empcher l'installation. C'est parce qu'il fallait ajouter un fichier
NAMESPACE au pralable avant de compiler:

R Statistical Software 1735/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
avec le contenu suivant dans le cas particulier qui nous concerne:

Nous pouvons alors recompiler:

R Statistical Software 1736/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
et nous l'installons cette fois-ci sans erreurs et il ne faut videmment pas oublier le charger
aussi!:

Nous pouvons ensuite utiliser notre fonction comme toute autre fonction:

et si nous faisons appel l'aide:

R Statistical Software 1737/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

This will give:

R Statistical Software 1738/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

34. Interfaces pour les utilisateurs


Gnres depuis R
Gnrer des interfaces avec le package tcltk2:

et pour ferme la fentre on utilisera la commande tkdestroy( ):

Autre exemple:

R Statistical Software 1739/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et si on clique sur Submit il vient:

Ou:

R Statistical Software 1740/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Un peu plus sympa:


require(tcltk)
require(tkrplot)
genplot = function(m,s,n){
dat = c(rnorm(n,m,s))
plot(density(dat),type='l',main='Simulation Loi Normale')
}

doplot = function(...){
m = as.numeric(tclvalue(mean))
s = as.numeric(tclvalue(sd))
n = as.numeric(tclvalue(n))
genplot(m,s,n)
}

base = tktoplevel()
tkwm.title(base,'Simulation Loi Normale')
mainfrm = tkframe(base)

mean = tclVar(10)
sd = tclVar(1)
n = tclVar(1000)

img = tkrplot(mainfrm,doplot)
scalefunc = function(...)tkrreplot(img)
sc_1 = tkscale(mainfrm,command=scalefunc,from=-10,to=10,showvalue=TRUE,
variable=mean,resolution=.01,orient='horiz')

R Statistical Software 1741/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
sc_2 = tkscale(mainfrm,command=scalefunc,from=0.1,to=10,showvalue=TRUE,
variable=sd,resolution=.01,orient='horiz')
sc_3 = tkscale(mainfrm,command=scalefunc,from=1,to=100000,showvalue=TRUE,
variable=n,resolution=10,orient='horiz')
tkpack(img)

m = tkframe(mainfrm)
tkpack(tklabel(m,text='Mean, SD',width=10),side='left')
tkpack(tkentry(m,width=5,textvariable=mean),side='left')
tkpack(tkentry(m,width=5,textvariable=sd),side='left')
tkpack(m,side='top')
tkpack(sc_1)
tkpack(sc_2)
tkpack(sc_3)

tkpack(mainfrm)

Ce qui donne:

R Statistical Software 1742/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R via Microsoft Office Excel (RExcel)


Pour ceux qui ont absolument du mal utiliser R en ligne de commande voici une solution
possible pour utiliser R depuis Microsoft Excel:

D'abord il vous faudra installer le logiciel statconnDCOM tlchargable l'adresse Internet


suivante:

http://rcom.univie.ac.at/download/current/statconnDCOM.latest.exe

Une fois le fichier tlchar vous lancez l'installation ce qui donnera sur un environnement
Microsoft Windows:

Vous cliquez sur Next:

R Statistical Software 1743/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vous cliquez sur I accept the agreement et sur Next:

Vous cliquez nouveau sur Next:

R Statistical Software 1744/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et Next...:

et Next:

R Statistical Software 1745/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et Next:

et enfin Install pour avoir aprs quelques secondes:

R Statistical Software 1746/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et on clique sur Finish. Une fois ceci fait, vous tlcharger le logiciel RExcel sur le lien
suivant:

http://rcom.univie.ac.at/download.html

Vous aurez alors aprs le tlchargement et l'xecution de l'installation, la bote de dialogue


suivante:

R Statistical Software 1747/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Vous cliquez sur Next:

Ci-dessus vous cliquez sur I accept the agreement et ensuite sur Next:

Vous lisez trs attentivement ce qui est crit en rouge et cliquez sur Next:

R Statistical Software 1748/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vous cliquez sur Next:

Encore sur Next et apparat le message suivant qu'il faut lire attentivement!:

R Statistical Software 1749/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Vous cliquez alors sur Oui et apparat le second message suivant qu'il faut lire attentivement!:

On clique sur OK (pas le choix...) et on lit nouveau attentivement le message suivant:

R Statistical Software 1750/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Quand vous cliquerez sur OK, aprs quelques secondes l'icne de Microsoft Excel se mettra
clignoter dans la barre des tches et il faudra cliquer sur l'icne de Microsoft Excel pour
cliquer sur OK dans la bote de dialogue qui apparat:

Il vient ensuite le message suivant:

Nous cliquons sur OK:

R Statistical Software 1751/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et enfin sur Finish.

Normalement vous aurez alors sur le bureau l'icne spciale RExcel... qui aura t rajoute
automatiquement:

R Statistical Software 1752/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Quand Microsoft Excel s'ouvre, nous avons alors dans le rubant Complment le menu
RExcel qui est visible:

Cependant, une fois le package Rcmdr install dans R (install.packages("Rcmdr")), nous


avons une option en plus nomme RCommander/with Excel menus:

R Statistical Software 1753/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Si nous cliquons dessus apparat alors une barre d'outils de menus:

Maintenant voyons les manips les plus importantes savoir faire.

Le minimum mimorum est de savoir convertir une plage de donnes Microsoft Excel en un
data frame R. Pour cela, aprs avoir saisi des donnes, on fait un clic droit et on choisit Put R
DataFrame:

R Statistical Software 1754/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Il vient alors la bote de dialogue suivante o on va saisir DemoExcel comme nom du data
frame:

Ensuite, nous pouvons vrifier que ce data frame a bien t cr en faisant une petite analyse
lmentaire:

R Statistical Software 1755/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous avons alors bien dans la fentre R Commander:

R Statistical Software 1756/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Sinon autre manipulation trivial: Faire un graph.

Voyons comment procdr partir d'un exemple gnrique:

Il vient alors la bote de dialogue ci-dessous dans laquelle il faut slectionner en bleu les
variables voulues pour que RCmdr sache ce qu'il doit prendre comme variables en entre et en
sortie:

R Statistical Software 1757/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Une fois que nous validons sur OK, nous obtenons:

Et dans la fentre R Commander il vient respectivement:

R Statistical Software 1758/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Maintenant, voyons une possibilit beaucoup plus importante! La possibilit d'utiliser les
fonctions R directement dans les cellules Microsoft Excel.

Pour cela, il suffit d'utiliser d'appeler la function RApply( ) en passant en argument le nom de
la fonction R et ensuite les paramtres correspondants:

et en validant, nous avons alors:

Cela marche donc bien!

R Statistical Software 1759/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

35. Divers
Dans ce chapitre nous avons souhait mettre des scripts si possible petits dont l'importance
nous semble majeure pour certains besoins mtiers et dont il n'existe pas notre connaissance
de packages.

Tratement d'images jpeg


Bon videmment R ce n'est pas MATLAB au niveau des images mais videmment il y a un
certain potential donc voyons ce que nous pouvons en tirer.

D'abord lire et afficher une image l'aide du package jpeg:

Nous pouvons bien videmment extraire une des trois couches RGB. Par exemple ici le vert
(2me couche):

R Statistical Software 1760/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Aprs on peut attaquer donc les contenu de chacun des matrices de chacune des couches de
couleur loisir

R Statistical Software 1761/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Golocaliser une adresse IP


Nous avons dj vu comment utiliser des coordonnes de latitute et de longtitude pour les
reprsenter sur une carte gographique. Mais dans le cadre du marketing de plus en plus de
community manager doivent analyser des adresses IP et les obtenir leurs coordonnes.

Voici un script pour cela:


freegeoip <- function(ip, format =
ifelse(length(ip)==1,'list','dataframe'))
{
if (1 == length(ip))
{
# a single IP address
require(rjson)
url <- paste(c("http://freegeoip.net/json/", ip), collapse='')
ret <- fromJSON(readLines(url, warn=FALSE))
if (format == 'dataframe')
ret <- data.frame(t(unlist(ret)))
return(ret)
} else {
ret <- data.frame()
for (i in 1:length(ip))
{
r <- freegeoip(ip[i], format="dataframe")
ret <- rbind(ret, r)
}
return(ret)
}
}

Il suffit alors d'excuter la commande suivante dans R:

>freegeoip('169.254.38.80')

Ce qui permet d'obtenir plusieurs information comme la latitude, longitude, le pays et


autres

R Statistical Software 1762/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Logique Floue
Comme nous l'avons mentionn dans le cours thorique, la logique floue est significativement
untilise en ingnierie (robotique, mcanique) mais aussi en Data Mining/Machine Learning
et psychologie et autres.

Nous avons aussi mentionn que l'exemple classique est celui du "problme du pourboire"
que nous avons dtaill dans le cours thorique. Le but ici est de voir comment le reproduire
dans R!

Nous allons donc utiliser le package FuzzyR avec les fonctions correspondantes addvar( ),
addmf( ) etc.:

et la non moins fameux graphique correspondant:

R Statistical Software 1763/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1764/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Microsoft Power BI Desktop


Les fans de PowerPivot, Power View, Power Map et Power Query dans Microsoft Excel
connaissent bien Power BI. Il s'agit de l'outil buratique client de Microsoft pour le
dveloppement de tableaux de bords publiables ensuite si besoin sur une plateforme Internet
Power BI. Depuis la version de Dcembre 2015 il est possible de connecter Power BI des
scripts R comme nous allons le voir (au jour o nous crivons ces lignes cette fonctionnalit
est en beta).

Ensuite, nous ouvrons Power BI:

Nous cliquons sur le bouton Obtenir des donnes et Autres:

R Statistical Software 1765/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite:

R Statistical Software 1766/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Nous cliquons sur Se connecter:

et nous cliquons sur Continuer:

On met le script:

R Statistical Software 1767/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Aprs quelques instants:

Nous avons alors:

R Statistical Software 1768/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et y'a plus qu' faire des graphiques!!!

R Statistical Software 1769/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1770/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

36. Revolution R (Open)


Revolution R Open qui est sous licence GPLv2 est la version "Entreprise" et "Scientifique" de
R pour Mac, Windows et Linux dans le sens que les commandes sont reproductibles l'aide
d'un jeu de commande particulier (tout en restant cependant compatible avec TOUS les
packages du CRAN et RStudio), que certaines fonctions ont t reprogrammes et que le
logiciel gre automatiquement de gros jeux de donnes en utilisant le disque dur plutt que la
mmoire vive (ce qui est largement suffisant lorsqu'on ne cherche pas avoir des rsultats en
temps rel).

Pour reprendre une vieille diapo de chez Revolution R:

Installation
Avant tout il faut faire bien attention installer les deux excutables MRO et MKL:

https://mran.revolutionanalytics.com/download/

R Statistical Software 1771/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

L'installation de Microsoft R Open (MRO) est standard, nous l'avons dj traite au dbut de
cet ouvrage:

R Statistical Software 1772/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ensuite l'installation de RevoMath est toute aussi simple:

R Statistical Software 1773/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Remarque!!!: Sur certains environnements Windows 10 cette installation ne marche pas!!! Il
faut alors aller chercher le fichier *.msi correspondant dans :
C:\Users\XXXXX\AppData\Local\Temp

et directement installer depuis l

Si l'installation se passe correctement, au lancement de MRO vous aurez:

R Statistical Software 1774/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diffrenciation en performance calculatoire


Selon Microsoft (Revolution R) nous avons au niveau des performances les comparaisons
suivantes:

et le mme calcul avec MRO:

R Statistical Software 1775/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Par scurit et par rigeur scientifique je recommande toutefois de charger le package


RevoUtilsMaths quand mme avant:

Simon Urbanek, contributeur au noyau de R, a publi un code fameux qui permet de


comparer la performance (code disponible ici: http://r.research.att.com/benchmarks/). Les
rsultats ont donn:

R Statistical Software 1776/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Selon Revolution R, leurs clients constate t un accroissement de performance de 3 50 entre


la version CRAN de R et la version de MRAN de R et ce sans changer la moindre ligne de
code.

R Statistical Software 1777/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Diffrenciation chargement de gros jeux de donnes


Commenons par les gros jeux de donnes:

Ce fichier nous le savons une peine folle tre charge dans une machine R3.2.1 x64 quip
de 16GB de RAM (Alienware 15):

Alors qu'avec Revolution R Open:

R Statistical Software 1778/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

37. R Shiny
R Shiny est un outil permettant de construire des pages web interactives avec des statistiques
produites par R et ce avec des options beaucoup plus puissantes et avances que Tableau ou
Microsoft Power BI sans avoir connatre l'HTML, le JavaScript et le CSS pour les
fonctionnalits de base.

L'ide est que certains end-users n'aient pas excuter de script pour visualiser ou jouer avec
diffrents paramtres statistiques et ce de faon interactive, dynamique et si possible ludique!

Dployer des apps Shiny peut se faire de trois manires:

Installer le serveur Shiny (AGPLv3):

https://github.com/rstudio/shiny-server

Acheter un serveur Shiny Server "Pro" avec l'avantage d'avoir nativement des
fonctions d'authentification scurises (avec ou sans LDAP), support SSL, de gestions
et monitoring de la performance et bien videmment d'avoir le support direct de R
Studio, Inc.:

https://www.rstudio.com/pricing

Hberger ces applications dans le cloud Shiny chez rstudio.com

http://www.shinyapps.io

Par dfinition, une App Shiny est une page web (IU) connecte un ordinateur/serveur
excutant une session R en live (serveur):

L'utilisateur peut manipuler l'IU ce qui va causer le serveur mettre jour l'UI en excutant le
code R correspondant.

R Statistical Software 1779/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Installer R Shiny
Pour installer le package c'est trs simple comme l'habitude (R 3.4.1) ensuite il suffit de
charger le package:

Ensuite, considrons les trois fichiers suivants R (c'est une bonne pratique de sparer tout
dans trois fichiers diffrents mais ce n'est pas obligatoire comme nous le verrons plus loin!):

Il faut savoir qu'il est ce jour obligatoire pour Shiny d'avoir le fichier ui.R et server.R le (le
troisime tant utilis pour une astuce dont nous allons parler plus loin) qui ont
respectivement le contenu suivant:

R Statistical Software 1780/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et le dernier fichier n'est pas spcifique Shiny, c'est juste une manire lgante pour un
utilisateur de lancer une application shine partir d'un raccourci Windows (et peu importe le
nom de fichier contrairement aux deux prcdents!):

R Statistical Software 1781/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Et enfin on construit sur le bureau de Windows le raccourci suivant:

Avec les proprits:

R Statistical Software 1782/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Aprs un double clic sur le raccourci, nous obtenons le rsultat tant attendu (!):

R Statistical Software 1783/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Signalons que diffrentes structures de panneaux sont disponibles:

On a aussi les structures tabulaires suivantes sinon:

R Statistical Software 1784/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Sinon voici un petit exemple o tout est crit et excut d'une seule traite l'aide de la
commande shinyApp( ):

Ce qui donne:

R Statistical Software 1785/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Types de composants

R Statistical Software 1786/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Types de balises
On peut utiliser les balises suivantes pour complter notre tableau de bord:

Leur usage est simple comme en atteste le petit exemple ci-dessous:

R Statistical Software 1787/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
qui donne:

Exemples
Voici une gallerie d'exemples glans de l'Internet:

Exemple R Shiny 1 (graphiques et champs)


Avec R Shiny 1.0.5 et R 3.4.1:

R Statistical Software 1788/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
Ce qui donne:

R Statistical Software 1789/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exemple R Shiny 2 (ggplot2)


Utilisation de GGPlot2 dans R Shiny 1.0.5 et R 3.4.1:

Ce qui va donner:

R Statistical Software 1790/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

R Statistical Software 1791/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exemple R Shiny 3 (onglets)


Il s'agit ici de voir comment crer des onglets avec des contenus difrents avec Shiny 1.0.5 et
R 3.4.1:

Ce qui donne:

R Statistical Software 1792/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et:

R Statistical Software 1793/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exemple R Shiny 3 (bouton de fermeture)


Nous allons voici ici comment traiter une question trs frquente avec Shiny 1.0.5 et R 3.4.1:
comment ajouter un bouton de fermeture de la fentre du navigateur et galement qui arrte
l'application Shiny?

Pour ceci nous allons reprendre l'exemple prcdent et mettre en vidence les parties du code
qui sont nouvelles:

Ce qui va donner:

R Statistical Software 1794/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

et qui fonctionne parfaitement.

R Statistical Software 1795/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exemple R Shiny 3 (Flux de mise jour)


L'ide ici est d'avoir une application Shiny qui lit automatiquement les nouveaux flux de
donnes arrivant dans le "c:/tmp/".

D'abord nous avons pour le fichier server.r o nous avons mis en roug les lments
particulirement intressants:
library(shiny)
library(data.table)
library(ggplot2)
library(gridExtra)
library(readr)
setwd("c:/tmp/")
IsThereNewFile=function(){ # cheap function whose values over time will
be tested for equality;
# inequality indicates that the underlying
value has changed and needs to be
# invalidated and re-read using valueFunc
filenames <- list.files(pattern="*.csv", full.names=TRUE)
length(filenames)
}
ReadAllData=function(){ # A function that calculates the underlying value
filenames <- list.files(pattern="*.csv", full.names=TRUE)
read_csv(filenames[length(filenames)])
}
function(input, output, session) {
sampled_data <- reactivePoll(10, session,IsThereNewFile, ReadAllData)
# 10: number of milliseconds to wait between calls to checkFunc
output$plot1<-renderPlot({
sampled_data= sampled_data()
g1= ggplot(sampled_data, aes(depth, fill = cut, colour = cut)) +
geom_density(alpha = 0.1) +xlim(55,
70)+ggtitle("Distribution of Depth by Cut")+
theme(plot.title =
element_text(color="darkred",size=18,hjust = 0.5),
axis.text.y =
element_text(color="blue",size=12,hjust=1),
axis.text.x =
element_text(color="darkred",size=12,hjust=.5,vjust=.5),
axis.title.x = element_text(color="red", size=14),
axis.title.y = element_text(size=14))
g2=ggplot(sampled_data, aes(carat, ..count.., fill = cut)) +
geom_density(position = "stack")+ggtitle("Total Carat by
Count")+
theme(plot.title =
element_text(color="purple",size=18,hjust = 0.5),
axis.text.y =
element_text(color="blue",size=12,hjust=1),
axis.text.x =
element_text(color="darkred",size=12,hjust=.5,vjust=.5),
axis.title.x = element_text(color="red", size=14),
axis.title.y = element_text(size=14))
g3=ggplot(sampled_data, aes(carat, ..count.., fill = cut)) +
geom_density(position = "fill")+ggtitle("Conditional
Density Estimate")+
theme(plot.title = element_text(color="black",size=18,hjust
= 0.5),
axis.text.y =
element_text(color="blue",size=12,hjust=1),

R Statistical Software 1796/1816


Vincent ISOZ, Daname KOLANI Sciences.ch
axis.text.x =
element_text(color="darkred",size=12,hjust=.5,vjust=.5),
axis.title.x = element_text(color="red", size=14),
axis.title.y = element_text(size=14))

g4=ggplot(sampled_data,aes(carat,price))+geom_boxplot()+facet_grid(.~cut)+
ggtitle("Price by Carat for each cut")+
theme(plot.title =
element_text(color="darkblue",size=18,hjust = 0.5),
axis.text.y =
element_text(color="blue",size=12,hjust=1),
axis.text.x =
element_text(color="darkred",size=12,hjust=.5,vjust=.5),
axis.title.x = element_text(color="red", size=14),
axis.title.y = element_text(size=14))
grid.arrange(g1,g2,g3,g4)
})
}

Ensuite, nous avons le fichier ui.R:


library(shiny)
fluidPage(
tags$h2("Visualizing Streaming Data with Shiny",
style="color:blue;text-align:center"),
plotOutput("plot1",height = "600px")
)

Une fois des deux fichiers enregistrs dans le dossier c:/tmp/my_app, nous ouvrons une
premire console R avec pour lancer l'application Shiny:

Nous ouvrons ensuite une deuxime console R dont le travail sera de mettre jour le jeu de
donnes:

R Statistical Software 1797/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Ce qui donne la page web suivante:

qui se met jour rgulirement!

R Statistical Software 1798/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

38. Quelques abrviations dans R


Commande R Abbrivation tendue Commentaires

ls [L]i[S]t objects common command in Unix-like operating systems

rm [R]e[M]ove objects common command in Unix-like operating systems

str [STR]ucture of an object

unz [UNZ]ip

[GET] [W]orking
getwd
[D]irectory

dir [DIR]ectory

[S]tring [PRINT]
sprintf
[F]ormatted

c [C]ombine values

regexpr [REG]ular [EXPR]ession Why "regular"? See regular sets, regular language

[DIAG]onal values of a
diag
matrix

col [COL]umn

lapply [L]ist [APPLY] Apply function to each element and return a list

Apply function to each element and attempt to


sapply [S]implify [APPLY ] return a vector (i.e., a vector is "simpler" than a
list)

mapply [M]ultivariate [APPLY] Multivariate version of sapply

Apply function to sets of values as defined by an


tapply [T]able [APPLY]
index

[APPLY] function to sets of


apply values as defined by an
index

MARGIN = 1 or rows [1] come before e.g., a 2 x 3 matrix has 2 rows and 3 columns (note:
2 in apply columns [2] row count is stated first)

[R]andom number generator


rmvnorm for [M]ulti[V]ariate
[NORM]al data

rle [R]un [L]ength [E]ncoding

R Statistical Software 1799/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

ftable [F]ormat [TABLE]

[X] is the symbol of a cross; [X] is sometimes


Cross (i.e., [X])
xtabs spoken as "by". Cross-tabulating means to cross
[TAB]ulation
one variable with another

xtable [TABLE] of the object [X]

[FORMAT] using [C] style


formatC i.e., [C] the programming language
formats

The R Programming language is a dialect of S.


Sweave [S] [WEAVE] Weaving involves combining code and
documentation

cor [COR]relation

[AN]alysis [O]f
ancova
[COVA]riance

[M]ultivariate [AN]alysis
manova
[O]f [VA]riance

aov [A]nalysis [O]f [V]ariance

[T]ukey's [H]onestly
TukeyHSD
[S]ignificant [D]ifference

[H]ierarchical [CLUST]er
hclust
analysis

[C]lassical metric
cmdscale [M]ulti[D]imensional
[SCAL]ing

factanal [FACT]or [ANAL]ysis

[PRIN]cipal [COMP]onents
princomp
analysis

[PR]incipal [COMP]onents
prcomp
analysis

[L]inear [M]ixed [E]ffects


lme
model

resid [RESID]uals

ranef [RAN]dom [EF]fects

anova [AN]alysis [O]f [VA]riance

fixef [FIX]ed [EF]ffects

R Statistical Software 1800/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

[V]ariance-[COV]ariance
vcov
matrix

logLik [LOG] [LIK]elihood

[B]ayesian [I]nformation
BIC
[C]riteria

[M]arkov [Chain] [Monte]


mcmcsamp
[C]arlo [SAMP]ling

[EVAL]uate an R
eval
expression

cat con[CAT]enate standard Unix command

Search documentation for a


apropos purpose or on a topic (i.e., Unix command for search documentation;
[APROPOS])

[READ] a file in [C]omma i.e., in each row of the data commas separate
read.csv
[S]eperated [V]alues format values for each variable

[READ] a file in [F]ixed


read.fwf
[W]idth [F]ormat

seq Generate [SEQ]uence

rep [REP]licate values of x perhaps also [REP]eat

dim [DIM]ension of an object Typically, number of rows and columns in a matrix

gl [G]enerate factor [L]evels

rbind [R]ows [BIND]

cbind [C]olumns [BIND]

is.na [IS] [N]ot [A]vailable

nrow [N]umber of [ROW]s

ncol [N]umber of [COL]umns

attr [ATTR]ibute

rev [REV]erse

[DIFF]erence between x and


diff
a lag of x

prod [PROD]uct

R Statistical Software 1801/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

var [VAR]iance

sd [S]tandard [D]eviation

cumsum [CUM]ulative [SUM]

cumprod [CUM]ulative [PROD]uct

setdiff [SET] [DIFF]erence

intersect [INTERSECT]ion

Re [RE]al part of a number

[IM]aginary part of a
Im
number

Mod [MOD]ulo opertion remainder of division of one number by another

[T]ranspose of a vector or
t
matrix

substr [SUBSTR]ing

strsplit [STR]ing [SPLIT]

[G]lobal / [R]egular Etymology based on text editor instructions in


grep
[E]xpression / [P]rint programs such as ed

[SUB]stitute identified
sub
pattern found in string

[G]lobal [SUB]stitute
gsub identified pattern found in
string

pmatch [P]artial string [MATCH]ing

[N]umber of [CHAR]acters
nchar
in a string

ps.options [P]ost-[S]cript [OPTIONS]

[WIN]dows [METAFILE]
win.metafile
graphic

dev.off [DEV]ice [OFF]

dev.cur [CUR]rent [DEV]ice

dev.set [SET] the current [DEV]ice

hist [HIST]ogram

R Statistical Software 1802/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

pie [PIE] Chart

coplot [CO]nditioning [PLOT]

[PLOT] colums of
matplot
[MAT]rices

assocplot [ASSOC]iation [PLOT]

plot.ts [PLOT] [T]ime [S]eries

[Q]uantile-[Q]uantile [P]lot
qqnorm
based on normal distribution

persp [PERSP]ective [P]lot

xlim [LIM]it of the [X] axis

ylim [LIM]it of the [Y] axis

xlab [LAB]el for the [X] axis

ylab [LAB]el for the [Y] axis

main [MAIN] title for the plot

sub [SUB] title for the plot

mtext [M]argin [TEXT]

[LINE] on plot often of the


abline
form y = [A] + [B] x

h argument in
[H]orizontal line
abline

v argument in
[V]ertical line
abline

par Graphics [PAR]ameter

adj as par [ADJ]ust text [J]ustification

bg as par [B]ack[G]round colour

bty as par [B]ox [TY]pe

[C]haracter [EX]tension or
cex as par [EX]pansion of plotting
objects

[C]haracter [EX]tension or
cex.sub as par
[EX]pansion of [SUB]title

R Statistical Software 1803/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

[C]haracter [EX]tension or
cex.axis as
[EX]pansion of [AXIS]
par
annotation

[C]haracter [EX]tension or
cex.lab as par [EX]pansion X and Y
[LAB]els

cex.main as [C]haracter [EX]tension or


par [EX]pansion of [MAIN] title

col as par Default plotting [COL]our

las as par [L]abel of [A]xis [S]tyle

lty as par [L]ine [TY]pe

lwd as par [L]ine [W]i[D]th

mar as par [MAR]gin width in lines

Next [G]raph for [M]atrix of


mfg as par
[F]igures

[M]atrix of [F]igures entered


mfcol as par
[COL]umn-wise

[M]atrix of [F]igures entered


mfrow as par
[ROW]-wise

pch as par [P]lotting [CH]aracter

ps as par [P]oint [S]ize of text Point is a printing measurement

pty as par [P]lot region [TY]pe

tck as par [T]i[CK] mark length

tcl as par [T]i[C]k mark [L]ength

xaxs as par [X] [AX]is [S]tyle

yaxs as par [Y] [AX]is [S]tyle

xaxt as par [X] [AX]is [T]ype

yaxt as par [Y] [AX]is [T]ype

asp as par [ASP]ect ratio

[X] axis as [LOG]arithm


xlog as par
scale

R Statistical Software 1804/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

[Y] axis as [LOG]arithm


ylog as par
scale

[O]uter [M]argin width in


omi as par
[I]nches

mai as par [MA]rgin width in [I]nches

pin as par [P]lot size in [IN]ches

xpd as par Perhaps: [X = Cut] [P]lot ? Perhaps D for device

xyplot [X] [Y] [PLOT] [X] for horizontal axis; [Y] for vertical axis

bwplot [B]ox and [W]hisker plot

qq [Q]uantile-[Quantile] plot'

splom [S]catter[PLO]t [M]atrix

optim [OPTIM]isation

lm [L]inear [M]odel

[G]eneralised [L]inear
glm
[M]odel

[N]onlinear [L]east [S]quare


nls
parameter esetimation

[LO]cally [E]stimated
loess
[S]catterplot [S]moothing

[TEST] null hypothesis that


prop.test [PROP]ortions in several
gropus are the same

[R]andom number drawn


rnorm
from [NORM]al distribution

[D]ensity of a given quantile


dnorm
in a [NORM]al distribution

[D]istribution function for


[NORM]al distribution
pnorm
returning cumulaive
[P]robability

[Q]uantile function based on


qnorm
[NORM]al distribution

[R]andom number
rexp
generation from

R Statistical Software 1805/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

[EXP]onential distribution

[R]andom number
rgamma generation from [GAMMA]
distribution

[R]andom number
rpois generation from [POIS]on
distribution

[R]andom number
rweibull generation from
[WEIBULL] distribution

[R]andom number
rcauchy generation from [CAUCHY]
distribution

[R]andom number
rbeta generation from [BETA]
distribution

[R]andom number
rt generation from [t]
distribution

[R]andom number
rf generation from [F] F for Ronald [F]isher
distribution

[R]andom number
rchisq generation from [CHI]
[SQ]uare distribution

[R]andom number
rbinom generation from
[BINOM]ial distribution

[R]andom number
rgeom generation from
[EXP]onential distribution

[R]andom number
generation from
rhyper
[HYPER]geometric
distribution

[R]andom number
rlogis generation from [LOGIS]tic
distribution

rlnorm [R]andom number

R Statistical Software 1806/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

generation from [L]og


[NOR]mal distribution

[R]andom number
rnbinom generation from [N]egative
[BINOM]ial distribution

[R]andom number
runif generation from [UNIF]orm
distribution

[R]andom number
rwilcox generation from
[WILCOX]on distribution

ggplot in [G]rammar of [G]raphics


See Leland Wilkinson (1999)
ggplot2 [PLOT]

aes in ggplot2 [AES]thetic mapping

geom_ in
[GEOM]etric object
ggplot2

stat_ in
[STAT]istical summary
ggplot2

coord_ in
[COORD]inate system
ggplot2

qplot in
[Q]uick [PLOT]
ggplot2

[X] is common letter for


x as argument
unknown variable in math

FUN as
[FUN]ction
argument

pos as
[POS]ition
argument

lib.loc in
[LIB]rary folder [LOC]ation
library

sep as
[SEP]erator character
argument

comment.char [COMMENT]
in read.table [CHAR]acter(s)

[I]nhibit [I]nterpretation or
I
[I]nsulate

R Statistical Software 1807/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

T value [T]rue

F value [F]alse

na.rm as [N]ot [A]vailable


argument [R]e[M]oved

fivenum [FIVE] [NUM]ber summary

IQR [I]nter [Q]uartile [R]ange

coef Model [COEF]ficients

dist [DIST]ance matrix

df as argument [D]egrees of [F]reedom

[M]edian [A]bsolute
mad
[D]eviation

Divert R output to a connection (i.e., like


sink
connecting a pipe to a [SINK])

eol in [End] [O]f [L]ine


write.table character(s)

[R]oss Ihaka and [R]obert


R as software Gentleman or [R] is letter
before S

As I understand it: Inpsired by CTAN


[C]omprehensive [R] (Comprehensive TeX Archive Network);
CRAN as word
[A]rchive [N]etwork pronunciation of CRAN rhymes with CTAN (i.e.,
"See" ran as in Iran; "See tan")

Sexpr [S] [EXPR]ession

Show [STR]ucture of
ls.str
[L]i[S]ted objects

browseEnv [BROWSE] [ENV]ironment

envir as
[ENVIR]onment
argument

q [Q]uit

cancor [CAN]onical [COR]relation

ave [AVE]rage

min [MIN]imum

R Statistical Software 1808/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

max [MAX]imum

sqrt [SQ]uare [R]oo[T]

%o% [O]uter product

& & is ampersand meaning [AND]

| often used to represent OR in computing


|
(http://en.wikipedia.org /wiki /Logical_disjunction)

: sequence generator; aslo used in MATLAB

[N]umber of [LEVELS] in a
nlevels
factor

det [DET]erminant of a matrix

crossprod Matrix [CROSSPROD]uct

[G]eneralised [L]east
gls
[S]quares

dwtest in
[D]urbin-[W]atson Test
lmtest

[S]tructural [E]quation
sem in sem
[M]odel

betareg in
[BETA] [REG]ression
betareg

Default base is e consistent with most mathematics


log Natural [LOG]arithm (http://en.wikipedia.org /wiki
/Logarithm#Implicit_bases)

log10 [LOG]arithm base 10

fft [F]ast [F]ourier [T]ransform

exp [EXP]onential function i.e., e^x

[D]egrees of [F]reedom of
df.residual
the [R]esidual

sin [SIN]e function

cos [COS]ine function

tan [TAN]gent function

asin [A]rc[SIN]e function

R Statistical Software 1809/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

acos [A]rc[COS]ine function

atan [A]rc[TAN]gent function

deriv [DERIV]ative

chol [Choleski] decomposition

[CHOL]eski [2=TO]
chol2inv
[INV]erse

[S]ingular [V]alue
svd
[D]ecomposition

[EIGEN]value or
eigen
[EIGEN]vector

[LOWER] [TRI]angle of a
lower.tri
matrix

[UPPER] [TRI]angle of a
upper.tri
matrix

[A]uto [C]orrelation or
acf
[C]ovariance [F]unction

[P]artial A]uto [C]orrelation


pacf
or [C]ovariance [F]unction

[C]ross [C]orrelation or
ccf
[C]ovariance [F]unction

Rattle as [R] [A]nalytical [T]ool [T]o


Perhaps, easy like a baby's rattle
software [L]earn [E]asily

StatET as
Anyone know? Statistics Eclipse?
software

JGR as
[J]ava [G]UI for [R] pronounced "Jaguar" like the cat
software

ESS as
[E]macs [S]peaks [S]tatistics
software

Rcmdr package [R] [C]o[m]man[d]e[r] GUI

prettyNum [PRETTY] [NUM]ber

Inf value [Inf]inite

NaN value [N]ot [A] [N]umber

is.nan [IS] [N]ot [A] [N]umber

R Statistical Software 1810/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

S3 R is a dialect of [S]; 3 is the version number

S4 R is a dialect of [S]; 4 is the version number

Rterm as
[R] [TERM]inal
program

R CMD as
I think: [R] [C]o[m]man[D] prompt
program

repos as
[REPOS]itory locations
option

Common Unix folder for "essential


bin folder [BIN]aries
command binaries"

Common Unix folder for "host-specific system-


etc folder [et cetera]
wide configuration files

src folder [S]ou[RC]e [C]ode Common Unix folder

doc folder [DOC]umentation

[R] [G]rapical [U]ser


RGUI program
[I]nterface

.site file
[SITE] specific file e.g., RProfile.site
extension

Frank [HARRELL]'s
Hmisc package package of [MISC]elaneous
functions

n in debug [N]ext step

c in debug [C]ontinue

Q in debug [Q]uit

[M]odern [A]pplied Based on book of same name by Venables and


MASS package
[S]tatistics with [S] Ripley

Double play on words: (1) package manipulates


plyr package PL[Y=ie][R] data like pliers manipulate materials; (2) last letter
is R as in the program

input [A]rray output [A]rray


aaply
using [PLY]r package

input [D]ata frame output


daply [A]rray using [PLY]r
package

R Statistical Software 1811/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

input [L]ist output [A]rray


laply
using [PLY]r package

input [A]rray output [D]ata


adply
frame using [PLY]r package

input [A]rray output [L]ist


alply
using [PLY]r package

input [A]rray output


a_ply Discarded (i.e., _ is blank)
using [PLY]r package

[R] [O]bject [D]ata[B]ase


RODBC package
[C]onnectivity

[PSYCH]ology related
psych package
functions

"Zelig is named after a Woody Allen movie about


a man who had the strange ability to become the
zelig package physical and psychological reflection of anyone he
met and thus to fit perfectly in any situation." -
http://gking. harvard.edu/ zelig/

strucchange
[STRUC]tural [CHANGE]
package

relaimpo
[RELA]tive [IMPO]rtance
package

[C]ompanion to [A]pplied
car package Named after book by John Fox
[R]egression

[OPEN] Source [M]atri[X]


OpenMx packge Need confirmation that [Mx] means matrix
algebra interpreter

df in
[D]ata [F]rame
write.foreign

GNU S word [GNU] is [N]ot [U]nix [S]

R [F]requently [A]sked
R FAQ word
[Q]uestions

[D]e[V]ice [I]ndependent
DVI format
file format

devel word [DEVEL]opment as in code under development

GPL word [G]eneral [P]ublic [L]icense

utils package [UTIL]itie[S]

R Statistical Software 1812/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

[M]aximum [L]ikelihood
mle
[E]stimation

rpart package [R]ecursive [PART]itioning

[S]ocial [N]etwork
sna package
[A]nalysis

[E]xponential [R]andom
ergm package
[G]raph [M]odels

[R] interface to program


rbugs package [B]ayesian inference [Using]
[G]ibbs [S]ampling

R Statistical Software 1813/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

Exercice 359.: Identifier le type de donnes


R 3.0.2

Lorsqu'on dcortique un script R dont on n'est pas l'auteur, souvent il ncessaire d'identifier le
type d'object que l'on manipule et parfois de la convertir en un autre type d'objects. Nous en
verrons quelques cas d'application concrets par la suite mais sinon voici au besoin la liste des
commandes utiles pour authentifier le typage et faire une conversion:

Authenification (renvoie un boolean) Conversion


is.numeric( ) as.numeric( )
is.null( ) as.null( )
is.logical( ) as.logical( )
is.character( ) as.character( )
is.vector( ) as.vector( )
is.factor( ) as.factor( )
is.matrix( ) as.matrix( )
is.list( ) as.list( )
is.data.frame( ) as.data.frame( )
is.na( ) class( )
Tableau 4 Commandes d'identification de type d'objet

R Statistical Software 1814/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

39. Index des Tableaux


Tableau 1 Syntaxe des diffrentes distributions de probabilits ............................................ 752

Tableau 2 Syntaxe pour les ANOVA ..................................................................................... 844

Tableau 3 Syntaxe des diffrentes rgressions ....................................................................... 974

Tableau 4 Commandes d'identification de type d'objet........................................................ 1814

R Statistical Software 1815/1816


Vincent ISOZ, Daname KOLANI Sciences.ch

40. Index

. I
.Rprofile, 55 Installation R Mac OS, 43
Installation R sous Scientific Linux, 44
Installation R sous Windows, 41
A
aide gnrale, 63 L
aide pour un package, 63
aide sur une commande, 63 langue interface, 51
aide sur une expression, 63 liens internet, 28
list.files( ), 53
lister fichiers d'un dossier, 53
B
bibliographique, 32 M
mdiagraphie, 32
C mise(), 56
coerced, 141
commentaires, 62 N
nombre dcimales calculs, 59
D normes ISO, 38
dossier de travail par dfaut, 52
Dossier de travail par dfaut (changement dfinitif), 55 O
options(digits= ), 59
E
toiles p-value (dsactivation), 60 P
proprits d'un fichier, 53
F
FDA, 39 R
file.info( ), 53
Food and Drug administration, 39 R.version, 57
forums, 28 Revolution Analytics, 16
RSiteSearch( ):, 63
G
S
getwd( ), 52
GNU, 16 sessionInfo( ), 57
GUI setwd( ), 52
Dfaut GNOME Linux, 48 Sources de donnes libres ou partiellement libres, 29
Dfaut Microsoft Windows, 48
R Studio Microsoft Windows, 49
Visual Studio.Net Microsoft Windows, 50
V
version de R, 57
H vider la fentre de commande, 56

help.start( ), 63

R Statistical Software 1816/1816

You might also like