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 nombresIl 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 argumentLes
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-plusQuelques commentaires et questions
Commandes générales
ls()
donne la liste de tous les objets créés dans le directoire .Dataobjects() 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 xwrite, 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()
:=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, ..., 30c(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
l
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