Guide S-Plus

De WikiDMS
Aller à : navigation, rechercher

Avant-propos

Ce petit guide n'a pas pour but de présenter tout le logiciel S-PLUS. Spécialement conçu pour des étudiants suivant des cours où l'apprentissage de S-PLUS est nécessaire, ce document ne présente qu'un nombre restreint de commandes et d'instructions. De plus, une certaine connaissance de SunOS (ou IRIX) et UNIX pourra aider les utilisateurs de S-PLUS. Le logiciel S-PLUS est une version améliorée du logiciel S de AT&T Bell Laboratories, commercialisée par Statistical Sciences Inc. (StatSci).

Références

Les concepteurs de S publient un manuel de référence sur S 1.1 . Un utilisateur régulier de S-PLUS a intérêt à consulter ce livre. Pour la version S-PLUS, plusieurs manuels du fabricant sont disponibles 1.2 . De plus, il existe un manuel avec une approche statistique du logiciel: Chambers J.M., Hastie T.J., Statistical Models in S, Wadsworth & Brooks/Cole Advanced Books & Software, Pacific Grove, 1992.

Introduction

Utilisation des gestionnaires d'écran

À moins d'avis contraire, nous suggérons d'utiliser le gestionnaire d'écran X11 ou OpenWindows 2.1 pour l'utilisation de S-PLUS, quelle que soit la procédure d'appel présentée à la section suivante.

Disponibilité et appel de S-PLUS

Environnements informatiques

Le logiciel S-PLUS est disponible à l'Université de Montréal sur les réseaux suivants:

  • réseau ESI avec la version S-PLUS 8.1.1
  • réseau DMS avec la version S-PLUS 8.1.1 ;

Notons que ces réseaux sont indépendants: il est donc possible de posséder un "compte" sur chaque réseau.

Préliminaires

Notons que S-PLUS a besoin d'un sous-répertoire de travail nommé obligatoirement .Data . Si l'usager n'a pas de sous-répertoire .Data dans le répertoire où il se trouve, S-PLUS en créera un à moins qu'il en existe un dans le répertoire principal. S-PLUS est un logiciel orienté sur le concept de manipulation d'objets et de fonctions. Il utilise son propre répertoire (.Data) qui contient tous les fichiers (objets, fonctions, etc.) créés durant une session interactive. De plus, ce répertoire contient d'autres fichiers créés par S-PLUS dont:

  • Audit : journal de toutes les commandes antérieures, utile pour la fonction history
  • Random.seed : utilisé lors de génération de valeurs aléatoires
  • last.dump, .Last.fixed, .Last.value (objets utilitaires...)

Le symbole d'incitation à donner une instruction (prompt symbol) est le caractère plus grand (>). Enfin, on termine une session S-PLUS avec la fonction q().

Syntaxe

  • une fonction s'utilise toujours avec une paire de parenthèses (pouvant ne rien contenir)
  • une fonction utilisée sans parenthèses donnera la définition (en langage S-PLUS) de celle-ci.
  • une commande UNIX peut-être exécutée durant une session S-PLUS en la précédant d'un point d'exclamation. Par contre, il faudra être prudent dans l'utilisation de certaines commandes UNIX.
  • tout texte à la droite du caractère # est un commentaire. Ceci est particulièrement utile lorsqu'on écrit ses propres fonctions.

Exemples:

  1. Ceci est une ligne de commentaire

mean(x[-1]) # moyenne sur x sauf l'element 1

  • il est permis de faire un Return durant l'énoncé d'une instruction; S-PLUS produira automatiquement le caractère + au début de la ligne suivante si la syntaxe de ce qui a déjà été tapé ne peut pas être considéré comme une instruction S-PLUS complète.
  • S-PLUS différencie les minuscules des majuscules.

Objets S-PLUS

Introduction

Un nom d'objet est formé de caractères alphanumériques et du point. Il doit débuter par une lettre. S-PLUS manipule des objets qui peuvent être, entre autres, des vecteurs, matrices, tableaux, catégories, séries (chronologiques), listes et fonctions. S-PLUS offre aussi un objet de type data frame. un objet peut posséder des attributs:

  • un mode: logique, numérique, complexe et caractère;
  • une longueur: souvent le nombre d'éléments dans l'objet;
  • des noms associés aux éléments dans l'objet.

Assignation

La forme générale de l'assignation est:

objet symbole_d'assignation expression
  • objet : peut être tout objet; si le reste de l'assignation est absente, on aura le contenu de l'objet
  • symbole_d'assignation : peut être le caractère _ (souligné) ou la paire de caractères <-
  • expression : peut être un objet, une partie d'objet ou une transformation arithmétique, logique de plusieurs objets.

Remarque: Si un nom d'objet créé (par l'assignation) est un nom déjà existant dans S-PLUS, le logiciel utilisera toujours, par défaut, l'objet de l'usager. Les fonctions assign et get permettent de manipuler des objets ayant des noms identiques (dans le répertoire de l'usager et dans S-PLUS). Malgré l'existence des deux fonctions nommées précédemment, on suggère d'essayer de trouver des noms ``originaux à ses objets.

Manipulations

On peut manipuler les objets de plusieurs façons:

  • liste du contenu (les éléments) de l'objet
  • transformation arithmétique dont :
  • les 4 opérations traditionnelles (+, -, *, /), <m>\wedge</m> (exponentation), %/% (division entière), %% (modulo), %*% (produit matriciel), etc.
  • opération logique dont : >, <, >=, <=, == (égal), != (différent), & (et), | (ou), ! (négation), etc.
  • extraction d'une partie d'objet; ceci se fera par une manipulation logique ou par la mention d'un indice
  • fonction (pré-définie ou de l'usager) sur l'objet

Vecteur

L'objet de type vecteur est très important dans S-PLUS. Un objet d'un seul élément sera considéré comme un vecteur de longueur 1.

Exemples de manipulations de vecteurs 1. data1 _ c(12.1,8.4,0.1,3) : la fonction c() crée un vecteur dont la longueur est le nombre d'éléments donné 2. data2 _ c(6.02,2.8,0.025,.6) 3. data1 / 2

   [1] 6.05 4.20 0.05 1.5
   Remarques:
   1) Les 2 objets n'ayant pas la même longueur, l'objet 2 est répété pour compléter l'opération.
   2) Le symbole [1] indique que le résultat est un vecteur et sert à numéroter les éléments lorsque ceux-ci n'ont pas de noms (voir la fonction names). 

4. data1 + c(2,4)

   [1] 14.1 12.4 2.1 7.0 

5. resul _ data1 / 2 : création de l'objet resul qui sera un vecteur 6. data1 < 1.0

   [1] F F T F : manipulation logique dont le résultat est un vecteur d'éléments logiques (mode logique); F signifie False et T True 

7. data2[3]

   [1] 0.025 : élément 3 du vecteur data2 qui devient un vecteur de longueur 1 

8. data1[2:4]

   [1] 8.4 0.1 3.0 : les éléments 2 à 4 du vecteur data1 qui deviennent un vecteur de longueur 3 

9. data1[-1]

   [1] 8.4 0.1 3.0 : les éléments de data1 sauf l'élément 1 

10. data1[data1 > 1]

   [1] 12.1 8.4 3 : les éléments de data1 qui appartiennent à la condition [...]; note : ceci est différent de data1 > 1 

11. data2[data1 > 1]

   [1] 6.02 2.8 .6 : les éléments de data2 qui sont vrais sous la condition faite sur data1 

12. (1:33)

   [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   [26] 26 27 28 29 30 31 32 33 : générer une séquence de nombres; forme abrégée de la fonction seq 

13. (1:3)[data1 < 1]

   [1] 3 : le(s) numéro(s) de séquence parmi les 3 premiers éléments soumis à la condition 

14. (1:4)[data1 < 1 & data2 < 1]

   [1] 3 : le(s) numéro(s) de séquence des éléments de valeur True du vecteur logique créé par la condition 

15. mean(data1)

   [1] 5.9 : appel de la fonction pré-définie mean (moyenne arithmétique) 

16. length(data1)

   [1] 4 : appel de la fonction pré-définie length (taille du vecteur) 

17. data1.moy _ mean(data1)

   (1:length(data1))[data1 > data1.moy]
   [1] 1 2 : le(s) numéro(s) de séquence des éléments de data1 supérieurs à leur moyenne 

18. names(data1) _ c("Christian","Normand","Robert","Roch") : associe des noms à chaque élément du vecteur. Ainsi:

   data1
    Christian Normand Robert Roch
         12.1     8.4    0.1    3

Matrices et tableaux

L'objet matrice est évidemment semblable à la notion bien connue en mathématique. On peut associer des noms aux lignes et colonnes de cet objet. De plus, il est facile de manipuler des sous-matrices d'une matrice. Enfin, l'objet matrice fait référence uniquement à des tableaux à 2 dimensions; c'est l'objet tableau ( array) qui représente les tableaux à plus de 2 dimensions. Dans ce document, on ne traite que de l'objet matrice. Les exemples qui suivant présentent des matrices dont les entrées sont des nombres mais S-PLUS peut manipuler des matrices de caractères ou d'éléments logiques.

Exemples de manipulations de matrices

1. mat1 _ matrix((1:15),nrow=3,ncol=5,byrow=T) : création d'un objet matrice à l'aide de la fonction matrix. Ainsi:

   mat1
        [,1] [,2] [,3] [,4] [,5]
   [1,]    1    2    3    4    5
   [2,]    6    7    8    9   10
   [3,]   11   12   13   14   15

2. mat1[2,1]

   [1] 6 : élément mat121 

3. L'utilisation d'une ligne ou colonne d'une matrice est possible de plusieurs façons:

   (a) mat1[,2] : vecteur contenant la deuxième colonne de la matrice mat1 
   (b) mat1[,2,drop=F] : une matrice $3 \times 1$ contenant la deuxième colonne de la matrice mat1 
   (c) mat1[1,,drop=F] : une matrice $1 \times 3$ contenant la première ligne de la matrice mat1 

4. mat1[,2] - 2

   [1] 0 5 10 : cette soustraction produit ce vecteur 

5. mat2 _ mat1[,-2] : produit une nouvelle matrice $3 \times 4$ ayant ôté la deuxième colonne de la matrice mat1 6. t(mat1) : appel de la fonction pré-définie t (transposée) 7. mat1 %*% t(mat1) : produit matriciel de la matrice mat1 par sa transposée 8. dimnames(mat1) _ list(c("r1","r2","r3"),c("c1","c2","c3","c4","c5")) : fonction pré-définie dimnames qui associe aux lignes et aux colonnes de la matrice des noms; voir à la section 3.6 pour la notion de liste ( list). De plus, lors de transformations arithmétiques de cette matrice identifiée les noms associés seront conservés si possible. Ainsi:

   mat1
      c1 c2 c3 c4 c5
   r1  1  2  3  4  5
   r2  6  7  8  9 10
   r3 11 12 13 14 15
   t(mat1)
      r1 r2 r3
   c1  1  6 11
   c2  2  7 12
   c3  3  8 13
   c4  4  9 14
   c5  5 10 15

9. mat1["r3","c2"]

   [1] 12 : élément de la matrice retracé par ses noms aux indices de ligne et colonne 

10. ncol(mat1)

   [1] 5 : fonction pré-définie indiquant le nombre de colonnes de la matrice 

11. nrow(mat1)

   [1] 3 : fonction pré-définie indiquant le nombre de lignes (rangées) de la matrice 

12. dim(mat1)

   [1] 3 5 : fonction pré-définie produisant un vecteur de longueur 2 contenant le nombre de lignes et de colonnes. Ainsi:
   nrow(mat1) est équivalent à dim(mat1)[1] et ncol(mat1) est équivalent à dim(mat1)[2] 

13. mat3 _ rbind(mat1,c(-2,-1,0,1,2)) : création d'une nouvelle matrice formée de la matrice mat1 et d'une rangée ( row) supplémentaire indiquée par le vecteur nommé 14. mat4 _ cbind(mat1,rep(1,row(mat1))) : création d'une nouvelle matrice formée de la matrice mat1 et d'une colonne ( column) supplémentaire de 1

Data frame

S-PLUS offre un autre type d'objet: data frame. Celui-ci est en fait semblable au type matrice. Dans le cas d'une matrice toutes les valeurs sont du même type tandis que le cas du data frame, on peut mettre dans chaque colonne des types différents. Dans l'exemple suivant: nouvo _ data.frame(data1,data2,data1<1) l'objet nouvo contiendra:

          data1 data2 data1...1
Christian  12.1 6.020     FALSE
  Normand   8.4 2.800     FALSE
   Robert   0.1 0.025      TRUE
     Roch   3.0 0.600     FALSE

dont les colonnes sont de type numérique et logique. De plus, S-PLUS a attribué automatiquement des noms aux lignes et aux colonnes de ce data frame en utilisant, pour identifier les lignes, les noms d'un des vecteurs (data1) utilisés pour la création de cet objet et, pour identifier les colonnes, les noms des arguments. Pour plus de détails, voir le chapitre 5 de S-PLUS 5 User's Guide.

Liste

Fonction

Principes fondamentaux

Écrire ses propres fonctions

Éditeur

Règles de construction d'une fonction (Exemple avec vi)

Voir aussi

Articles connexes

Références externes