Logiciel S-plus

Débuter une session

Le logiciel statistique S-plus se lance en tapant Splus dans une fenêtre Unix. Ci-dessous, des exemples de commandes S-plus sont fournis; celles-ci sont précédées du prompt > et parfois suivies de commentaires en italique. Ensuite se trouve un petit manuel. Un mode d’emploi plus complet est disponible sur Internet : ici. Cependant pour plus de détails sur les commandes, se référer aux commandes d'aide à l'intérieur de S-plus (voir ci-dessous).

Eléments de base et utilisation de l'aide

Après être entré dans S-plus, effectuez la suite d'instructions suivantes (il est impératif de comprendre chaque instruction !):

> 3*(23-7) S-plus sait calculer !!

> 1:5 Les deux points sont utilisés pour obtenir une séquence

> c(2,5,4,3,-2) La fonction c permet de créer un vecteur

> c("Robert", 1, "Joe", 4)

> x <- c(2,5,4,3,-2) Pour garder un objet, il faut lui affecter un nom

> x visualisation du vecteur x (TOUJOURS VISUALISER LES OBJETS CREES)

> x[c(1,3)] partie d'un vecteur

> x[-c(1,3)] partie d'un vecteur, mais laquelle?

> length(x) qu'est-ce donc?

> exp(x) remarquer que S-plus travaille vectoriellement

> 2*x-1 idem

> x<4 même pour des opérations logiques

> x[x<4]

> sum(x<4) Question: qu'est-ce que ça représente?

> moy.x <- mean(x) Question: que vaut la moyenne des composantes de x?

> y <- 1:5

> z <- rep(11,times=4) qu'est-ce?

> x+y

> c(y,z,4,10) concaténation de y, z et de nombres

Il est grand temps d'apprendre à apprendre (c'est-à-dire de savoir utiliser les manuels d'aide)! Normalement, fenêtre d'aide devrait être déjà ouverte. Si ce n’est pas le cas, il faut taper:

> help.start(gui="motif")

Pour trouver l'aide sur la fonction que vous chercher, il y a trois façons d'y arriver:

Mais comment comprendre ces Help files? Nous allons décortiquer celui qui nous permettra de faire des histogrammes, mais pour cela, il nous faut:

> echantil <- runif(100) cent nombres aléatoires entre 0 et 1

> motif() ouverture d'une fenêtre graphique (Normalement vous devriez déjà en avoir une)

Dans le fichier d'aide, DESCRIPTION nous confirme que la fonction hist fait bien un histogramme. REQUIRED ARGUMENTS nous informe qu'il n'y a qu'un seul argument obligatoire (x) et qu'il s'agit des données dont on veut faire l'histogramme. Ainsi, pour représenter le vecteur echantil, on peut taper:

> hist(x=echantil) ou hist(echantil) puisque x est le 1er argument

Les OPTIONAL ARGUMENTS sont des paramètres qu'on peut changer, mais qui ont une valeur par défaut si l'on n'a rien spécifié. Cette valeur est soit dans USAGE, soit dans l'explication détaillée du paramètre (<<see below>>). Preuve par l'exemple: dans la fonction qui nous intéresse, plot vaut T (=true) par défaut. Ainsi, hist(x=echantil,plot=T) ou hist(echantil,plot=T) sont équivalents à hist(x=echantil). Par contre si l'on ne veut pas le graphique, mais seulement les hauteurs des boites, il faut écrire:

> hist(x=echantil,plot=F) ou hist(echantil,plot=F)

Question: quelle est la différence entre les options probability=T et probability=F?

En outre, le fichier d'aide nous informe que le nombre de classes choisies par défaut est une fonction de log(length(x)). Si nous voulons un nombre différent, il suffit de le demander:

> hist(x=echantil,nclass=3) ou hist(x=echantil,nclass=3,plot=F)

S-plus nous offre même la possibilité de définir exactement où l'on veut couper les classes. L'aide nous informe en effet qu'on peut définir le vecteur des coupures et le donner comme breaks:

> coup <- (0:6-0.5)/5

> hist(echantil,breaks=coup)

Question: il est possible de définir coup directement avec l'instruction seq. Quelle sera la commande? Une fois content du graphique obtenu, on peut mettre un titre, comme par exemple son nom:

> title("Robert de Niro and Joe Pesci")

> M <- cbind(x,y) construction d'une matrice M en ``collant'' x et y (en colonne)

> MtM <- t(M) %*% M transposition et multiplication matricielles

> solve(MtM) que fait cette fonction?

> MtM %*% solve(MtM) vérification

> M * M multiplication élément par élément

> r <- round(20*runif(10));r dix nombres aléatoires entre 0 et 20 et affichage

> sort(r)

> order(r) Question: que font ces deux fonctions?

> ls() liste des objets créés.

> rm(M,MtM,coup,echantil,moy.x,r,x,y,z) "nettoyage" des objets plus utilisés

> q() fin de la session S-plus

Quelques commentaires et questions

)

  1. Créer une matrice 100x20 remplie de réalisations d'une N(2,4).
  2. Calculer le 3e moment empirique centré (voir la fonction apply)

Commandes générales

ls() donne la liste de tous les objets créés dans le directoire .Data

objects() donne la liste de certains types d’objets créés dans le directoire .Data

motif() ouverture d'une fenêtre graphique de grandeur prédéfinie

par() cette fonction, complétée de différents arguments, gère la fenêtre graphique. P.ex:

par(mfrow=c(2,3)) sépare la fenêtre graphique en deux lignes et trois colonnes

dev.off() fermeture de la fenêtre graphique

cex=num argument définissant une échelle pour la taille des caractères

rm() détruit les objets passés en arguments

q() quitter le logiciel

history(menu=F, evaluate=F, reverse=F, max=100, file = "toto")

créé un fichier contenant les 100 dernières commandes tapées durant la session.

source() permet d'exécuter des commandes ou de compiler une fonction d’un fichier extérieur.

# début de commentaire dans une fonction (jusqu'à la fin de la ligne).

 

Affectation et écriture (écran et fichier)

x affiche à l'écran le contenu de l'objet x

write, write.data, dump, cat, print

différentes méthodes pour écrire sur un fichier ou pour afficher à l'écran depuis une fonction

scan() commande de lecture dans un fichier

Opérateurs et fonctions arithmétiques

+, - , *, / opérateurs arithmétiques (él. par él. pour vecteurs et matrices)

%*% produit matriciel

log, exp, sqrt fonctions arithmétiques

length() fonction donnant le nombre de composantes de l'argument

prod() fonction calculant le produit des composantes de l'argument

solve() résout le système linéaire donné par sa matrice et son second membre

sum() fonction calculant la somme des composantes de l'argument

Fonctions statistiques

mean() := moyenne

var(x) :=

si x est une matrice, on obtient, par cette fonction, la matrice de variance-covariance

rnorm(), rexp(), runif(), … fonctions générant un vecteur de nombres pseudo-aléatoires suivant des lois normales, exponentielles, uniformes, ... Les paramètres de ces loi sont à mettre en argument.

Générer un vecteur

1:30 génère un vecteur de longueur 30 dont les composantes sont 1, 2, 3, ..., 30

c(arg1,arg2,...) concatène les arguments dans un vecteur

seq() fonction permettant de générer une séquence. On doit spécifier 3 des 4 arguments suivants:

from = val1 première valeur de la séquence

to = val2 dernière valeur de la séquence

by = val3 taille du pas de la séquence

length = val4 longueur de la séquence

exemple: seq(from = -pi, to = pi, by = 0.5)

Générer une matrice

matrix() fonction générant une matrice dont les dimensions, ainsi que les coefficients, sont définis par des arguments

data valeurs numériques des coefficients

ncol = val1 nombre de colonnes de la matrice (=1 par défaut)

nrow = val2 nombre de lignes de la matrice (=1 par défaut)

exemples:

 

Commande

matrix(3,ncol=4, nrow=3)

matrix(1:12, ncol=4)

Résultat

 

 

exemple: matrix(scan("titi"), ncol=3, byrow=T)

 

cbind() construit une matrice dont les arguments forment les colonnes

rbind() construit une matrice dont les arguments forment les lignes

notation: lorsque l'on affiche une matrice à l'écran, les différentes lignes et colonnes sont spécifiées de la manière suivante:

[,j] jème colonne

[i,] ième ligne

 

 

Boucles

Comme dans beaucoup de langages:

for ( i in 3:n)

{

commande_1

commande_2

:

commande_m

}

 

Valeur manquante

Toute valeur manquante, inaccessible ou indéfinie est signalée par le symbole NAs.

Autres fonctions

Vous trouvez ci-dessous une liste des fonctions que vous êtes susceptibles d'utiliser. Pour toute indication complémentaire, veuillez consulter le mode d'emploi.

 

abline() permet de tracer une droite(voir les options dans help)

apply() effectue une opération sur les lignes ou les colonnes d'une matrice

boxplot() box-plot

hist() histogramme

l1fit() détermine l'estimateur des moindres déviations absolues

lsfit() détermine l'estimateur des moindres carrés

matplot() trace plusieurs plots sur la même paire d'axes

mtext() permet d'écrire du texte dans des fenêtres graphiques

plot() trace des points ou des lignes dans une fenêtre graphique

points(), lines() trace des points ou des lignes sur un graphique existant

qnorm(), qexp(), … calcul des quantiles (loi normale, exponentielle, …) d'un vecteur de valeurs

dnorm(), dexp(), … calcul de la densité (loi normale, exponentielle, …) d'un vecteur de valeurs

qqnorm() Q-Q plot pour la loi normale

qqplot() Q-Q plot d'une loi quelconque

stem() Stem-and-leaf

title() définit un titre à ajouter sur un graphique