Exemple

Transcription

Exemple
Cours de R
Statistiques unidimensionnelles
Généralités sur
R
• R est un système d ’analyse statistique et
graphique, clone de S+(très cher), basé
sur le langage S (statistiques),écrit
essentiellement en C
• R est gratuit, compatible avec toutes les
plate-formes
• Les fichiers pour installer R sont
disponibles à partir du site du CRAN
(Comprehensive R Archive Network)
Généralités (suite)
• R est un langage interprété et pas compilé
constitué de packages et de bibliothèques
• langage orienté objet
•
• on agit sur ces objets avec des opérateurs
arithmétiques, logiques ou de comparaison, et avec
des fonctions
•
• Avec R une fonction s’écrit toujours avec des
parenthèses, même si elle ne contient rien
Exemples: mean(); var(x)
Aides au démarrage
• Une commande est exécutée dés que l'on
utilise la touche entrée
• plusieurs commandes sur la même ligne
séparées par des;
• pour voir le contenu d ’un objet, taper
son nom
• Commentaires aprés le symbole #
L’aide en ligne
• Exemples: help(mean) ou help(« mean ») ou ?mean()
ouvre une page sur le modèle suivant:
mean(base)
R Documentation
Arithmetic Mean
Description
Generic function for the (trimmed) arithmetic mean.
Usage
mean(x, ...)
## Default S3 method:
mean(x, trim = 0, na.rm = FALSE, ...)
Arguments
x :An R object. Currently there are methods for
numeric data frames, numeric vectors and dates. A
complex vector is allowed for trim = 0, only.
trim: the fraction (0 to 0.5) of observations to be
trimmed from each end of x before the mean is
computed.
na.rm a logical value indicating whether NA values
should be stripped before the computation proceeds.
...
●
Value
For a data frame, a named vector with the appropriate method being applied column by
column.
If trim is zero (the default), the arithmetic mean of the values in x is computed, as a
numeric or complex vector of length one. If any argument is not logical (coerced to
numeric), integer, numeric or complex, NA is returned, with a warning.
If trim is non-zero, a symmetrically trimmed mean is computed with a fraction of trim
observations deleted from each end before the mean is computed.
●
• References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth &
Brooks/Cole.
●
• See Also
weighted.mean, mean.POSIXct
•
•
• Examples
x <- c(0:10, 50)
●
xm <- mean(x)
●
c(xm, mean(x, trim = 0.10))
●
●
mean(USArrests, trim = 0.2)
●
Lancement de R, les
menus(sous windows)
La barre de menus de
l’éditeur
•Ouvrir un script
•Enregistrer un script
•Soumettre une ligne de code
•Passer d’un fenêtre à l’autre
•imprimer
La barre de menus de RGui
•Ouvrir un script
•Charger une image
•Sauvegarder une image
•Copier coller
•Arrêter le calcul en cours
•imprimer
Pour débuter
• Pour créer un objet on utilise l’opérateur d'affectation =
Exemples:n=5
M=c(1,2,3)
k=c(T,F)
• Il faut respecter la casse: n est différent de N
• Voir l’ensemble des objets créés:
objects()
tous les objets
ls(pat=« n »)
objets dont le nom commence par la
lettre n
rm() remove() élimine des objets ex: rm(n,M,k)
• c() ,objects(), ls() sont des fonctions
•
•
Pour mettre une ligne en commentaire: #
Pour afficher des valeurs: print() dans le script ou le nom de
la valeur dans R
suite…
Un objet est caractérisé par son nom, son contenu,
mais aussi ses deux attributs
son mode: il en existe quatre principaux:
numérique, caractère, complexe et logique
sa longueur: nombre d’éléments de l’objet
Pour connaître son mode et sa longueur, on peut
utiliser respectivement les fonctions
mode() et length()
Une valeur manquante est représentée par NA,
Une valeur de mode caractère est représentée entre
guillemets doubles
Génération de vecteurs
• En saisissant les valeurs séparées par des
virgules à l’aide de la fonction c() :
v=c(1,2,3)
• En générant des suites numériques avec l’opérateur
:
v=1:10
• Avec les fonctions
seq(): génère des suites régulières
rep(): duplique une suite
sample():tirage aléatoire
• En utilisant d’autres vecteurs et des opérations
numériques + ,- ,* , / , ^
ou logiques
(&,I,!,>,<,>=,<=,==,!=)
Si v1 et v2 sont deux vecteurs de même longueur,
v3=v1+v2
V3=v1/v2
V3=v1^2
V3=v1>v2
•
length(v) donne la longueur de v
Séléction d’éléments dans
un vecteur
 Deux modes
de sélection dans un vecteur v
 Utiliser les indices de position des éléments de v
 Utiliser un vecteur booléen de même longueur que v, valant
TRUE aux positions des éléments à sélectionner
v= -3:2
 Exemples:
v[3]
v[c(4,6)]
a=c(4,6); v[a]
l=c(TRUE, TRUE, TRUE,FALSE,TRUE,FALSE); v[l]
l=v>0; v[l]
 Utilisation d’indices négatifs pour dé-selectionner
exemple w=v[-4]
Génération de nombres
aléatoires
•
Exemples: sample():échantillon, tirages avec ou sans remise,
permutations
exemples:
v1= sample(1:10):permutation de{1,2,..,10}
v2= sample(1:10,3): tirage sans remise (par défaut )de 3
éléments parmi 10
v3= sample(1:2,10,replace=TRUE): tirage avec remise de 10
valeurs 1 ou 2 au hasard
• pour un tirage non uniforme on précise le vecteur
probabilité(p1,…pn) avec Σpi=1.
exemple:v4=sample(1:5,3,prob=c(0.1,0.2,0.1,0.5,0.1))
• rnorm(100):génère 100 observations issues de la loi normale de
paramètres 0 et 1 (par défaut)
rnorm(100, mean=2,var=3): génére 100 observations issues de la
loi normale de paramètres 2 et 3
Distribution d’un ensemble
d’observations
Quelques fonctions: si v est un ensemble d’observations,
• table(v):
compte les fréquences des éléments de v
• summary(v):
renvoie un résumé statistique du contenu
de v,avec le min 1er quartile, moyenne, médiane,3iemme
quartile et max
• min(), max(),mean(), var(), cov(), cor(),...
• quantile(v): renvoie les quantiles correspondant au
vecteur de probabilité donné. Par défaut renvoie les
quartiles
Quelques fonctions
graphiques principales
•
•
x
•
•
•
•
•
•
•
plot(x): valeurs de x en ordonnées
plot(x,y): nuage de points y en ordonnées x en abcisses
et y étant des nombres ou des vecteurs de même longueur
coplot():trace tous les nuages conditionnels
boxplot():boites à moustaches
pairs(): plusieurs nuages, tous les nuages possible sur
toutes les colonnes possible du data frame
hist():histogramme ( des fréquences par défaut)
barplot(), matplot(): : diagrammes en batons
curve(): tracé d ’une courbe
Moins utilisées
stem():arbre
qqplot(x,y):trace les quantiles de x /quantiles de
y
0
5
10
15
20
barplot(): diagrammes en batons
x=rpois(100,lambda=5)
T =table(x)
r = barplot(T, col='gray')
1
2
3
4
5
6
7
8
9
10
11
Représentation de données:
histogrammes
La fonction hist()
Exemple: v=rbinom(1000,10,0.4)
table(v)
v
0
1
2
3
4
44
110
215
hist(v)
4
5
253
194
6
7
8
125
42
13
hist(x,breaks= « Sturges »,prob=FALSE)
• X un vecteur de valeurs pour lequel on
souhaite un histogramme
• breaks:soit
-un vecteur chaine de caractère donnant
un algorithme pour calculer le nombre
d'intervalles
-un nombre donnant le nombre
d'intervalles
• prob=FALSE:fréquences
• prob=TRUE: fréquences relatives ou
probabilités
la fonction curve()
curve(sin,0, pi)
curve(x^3-3*x, -2, 2)
curve(x^2-2, add =
TRUE, col =
"violet")
La fonction stem()
essai=sample(1:20,200,replace=TRUE)
•
stem(essai)
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
1 | 0000000000000000
1|
2 | 0000000000000000000000000
2|
3 | 00000000000000000000000
3|
4 | 0000000000000000
4|
5 | 00000000000000000000
5|
6 | 000000000000000000000
6|
7 | 00000000000000000
7|
8 | 00000000000000000000000000
8|
9 | 00000000000000000
9|
10 | 0000000000000000000
curve(pnorm(x),-3,3, col="red")
curve(dnorm(x),-3,3,col="blue",add=TRUE)
simdonnees=rexp(1000, rate=0.1)
hist(simdonnees,prob=T)
curve(dexp(x,rate=.1),add=TRUE)
Les arguments des fonctions
principales
add=TRUE
Force la fonction à agir comme une
fonction de bas niveau (superpose au
graphique précédent)
axes=FALSE
log=« x »
log=« y »
log=« xy »
Considère les axes comme
logarithmiques
type=
« p »dessine des points « l » dessine
une ligne, « s » ou « S » une
fonction en escalier…
xlab=
ylab=
Nom de l’axe des x des y
Fixe les limites des axes
xlim= ylim=
main=
Titre de la figure (en haut du
graphique)
Fonctions graphiques
secondaires
• points():comme plot(), mais superpose au graphique
précédent
• lines(),segments() :trace des segments
• text(),mtext():
•
•
•
•
•
•
ajout de texte
arrows():
ajoute des flèches
abline(h=):
lignes horizontales
abline(v=):
lignes verticales
abline(a,b): ligne de pente b, ordonnée à l’origine a
legend(x,y):
ajoute la légende au point (x,y)
title():
ajout du titre
fonction plot()
x=rnorm(10);plot(x)
plot(x,type="l")
x=rnorm(10);y=rnorm(10); plot(x,y,xlab="dix
valeurs au hasard", ylab="dix autres
valeurs")
plot(x,y,xlab="dix valeurs au hasard",
ylab="dix autres valeurs",
xlim=c(2,2),ylim=c(2,2),
pch=22,col="red",bg="yellow")
• x=rnorm(10);y=rnorm(10);
• plot(x,y,xlab="dix valeurs au
hasard", ylab="dix autres
valeurs",xlim=c(-2,2),ylim=c(2,2),pch=22,col="red",bg="yello
w",bty="l",tcl=0.4,main="commen
t customiser un graphique avec
R")
Statistiques
bi-dimensionnelles
Génération de matrices
• Ce sont des vecteurs qui possèdent un argument
supplémentaire, qui est lui-même un vecteur de longueur
2, sa dimension, et qui définit le nombre de lignes et
de colonnes
• ex:
M=matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL
)
• Sélection dans une matrice,sous-matrices
M[1,2],M[c(2,3),c(3,4)]
M[i,],M[,j]: sélection d’une ligne ou d’une colonne
M[c(1,5,4),]: sélection de plusieurs lignes (1,5 et 4)
• Dimension d’une matrice: dim(): renvoie la dimension de
la matrice. On peut aussi imposer cette dimension
• exemple: v=1:12;
M=matrix(v);dim(M)=c(3,4);M;
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
• M[M[,1]>0,]:sélectionne la sous matrice
pour laquelle les valeurs dans la première
colonne sont positives
Opérations sur les matrices
• Les opérateurs habituels fonctionnent élément par
élément
• Le produit matriciel algébrique:%*%
• t():transposition
• diag(): si v est un vecteur, diag(v)crée une
matrice diagonale ayant v sur la diagonale
si M est une matrice, diag(M) extrait la
diagonale de M
• sum():si v est un vecteur ou une matrice, sum(v)
calcule la somme de tous les éléments de v
sum(v,na.rm=TRUE):somme sans tenir compte des NA
Opérations sur les matrices suite
• apply(M,margin,fun,…):applique à M la fonction fun
(ou un opérateur, mais qui doit alors être mis
entre guillemets),margin indique si l’action doit
être appliquée sur les lignes ( margin=1), les
colonnes ( margin=2), ou les deux ( margin=c(1,2))
• exemples:
• apply(M,1,sum):le résultat est une colonne formée
des sommes des lignes de la matrice
• apply(M,2,sum):pareil pour les colonnes
data.frame
• En apparence ce sont des matrices, avec
comme différence essentielle que les
différentes colonnes peuvent être de
modes distincts:alphanumériques,
booléennes, facteurs…
• Les lignes et les colonnes sont nommées
et on peut y accéder par leur indice de
position ou par leur nom…
exemple: L= LETTERS[1:3];
•
D=data.frame(=rep(1,10),y=1:10,fac=sample(L,10,
repl=TRUE));
La troisième colonne est D[,3]ou D[,”fac”]ouD$fac
• C’est le type par défaut résultant de
la lecture de fichiers externes et
nécéssaire pour exporter des tableaux
de R
1
2
3
4
5
6
7
8
9
10
x y
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
fac
C
C
A
B
A
A
B
A
B
C
Fonctions pour les data
frames
x
1
2
3
4
5
6
7
8
9
10
y fac salle
1 1 B 1
1 2 A 2
1 3 B 1
1 4 A 2
1 5 C 1
1 6 C 2
1 7 B 1
1 8 C 2
1 9 B 1
1 10 A 2
• data.frame():
• names(),colnames()rownames()lis
te des noms de ligne et de
colonnes
• dimnames():liste ayant 2
champs: les noms de lignes et
les noms de colonne
• dim():liste donnant les
dimensions du data frame
• cbind():concaténation en
colonne
• rbind():concaténation en ligne
• Exemple:cbind(d,salle=rep(c(1,2
),5))
La fonction data() :
• Cette fonction permet de lire des données internes
un data frame ou de lister les data frame
existants
Exemples:
data() # liste de tous les data frame dans le
package par défaut « datasets »
data(USArrests) # charge le data frame USArrests
help(USArrests) # donne des informations sur le
data frame « USArrests », si elles existent
data(package = .packages(all.available = TRUE))#
Donne la liste de tous les data frames de tous les
packages disponibles
try(data(package = "rpart") )# liste des data frame
dans le package rpart
La fonction library()
Exemples:
library():donne la liste des packages (ou
bibliothèques)disponibles
On peut en charger d’autres par le CRAN par exemple
library(cluster);data(agriculture);permet de charger
le data frame « agriculture » du package
« cluster »
data(agriculture, package=« cluster »); permet aussi
de charger ce data frame
boxplot():boites à moustaches
boxplot(len ~ dose, data = ToothGrowth)
Guinea Pigs' Tooth Growth
35
len supp dose
30
1 4.2 VC 0.5
2 11.5 VC 0.5
6 10.0 VC 0.5
20
15
10
5 6.4 VC 0.5
tooth length
4 5.8 VC 0.5
25
3 7.3 VC 0.5
5
7 11.2 VC 0.5
9 5.2 VC 0.5
10 7.0 VC 0.5
0
8 11.2 VC 0.5
0.5
1
Vitamin C dose mg
2
pairs(): plusieurs nuages, tous les nuages
possible sur toutes les colonnes possible du
data frame
pairs(iris[1:4], pch = 21, bg = c("red",
"green3", "blue")[unclass(iris$Species)])
iris
Sepal.Length
Sepal.Width Petal.Length
Petal.Width
Species
1
5.1
3.5
1.4
0.2
setosa
2
4.9
3.0
1.4
0.2
setosa
3
4.7
3.2
1.3
0.2
setosa
4
4.6
3.1
1.5
0.2
setosa
5
5.0
3.6
1.4
0.2
setosa
6
5.4
3.9
1.7
0.4
setosa
Anderson's Iris Data -- 3 species
3.0
4.0
0.5
1.5
2.5
7.5
2.0
4.0
4.5
6.0
Sepal.Length
5
7
2.0
3.0
Sepal.Width
1.5
2.5
1
3
Petal.Length
0.5
Petal.Width
4.5 5.5 6.5 7.5
1 2 3 4 5 6 7
Importer des fichiers
ascii
• Pour les lectures et écritures dans un fichier,R
utilise le repertoire de travail.
• getwd():permet de connaître ce repertoire
• setwd():permet de modifier le repertoire de
travail exemple setwd(« c:/data »)
• R peut lire des données stockées dans un fichier
texte (ascii):read.table()
la sortie est un data.frame
arguments de cette fonction:
file= nom du fichier
sep= séparateur (espace par défaut)
header= booléen (=TRUE si le nom des
colonnes est en tête, FALSE sinon)
Exemple: fichier c:\ArR\fic.txt
read.table(file=,sep=,header=)
F=read.table(« c:\\ArR\\fic.txt », sep=«
\t»,header=TRUE);
• Variantes:read.csv(), read.delim(),read.fwf()…ou
des fichiers dans d ’autres
formats(Excell,SAS,SPSS), bases de données SQL…
• les fonctions ne sont pas toujours dans le package
base
et exporter
• Ecriture d’un fichier write.table()
arguments:
file= nom du fichier
append= booléen si TRUE ajoute au fichier
existant, si FALSE ecrase le fichier existant
col.names= booléen si TRUE écrit les noms de
colonnes
row.names= idem pour les lignes
Sauvegarder certains objets en binaire ou en
ASCII et les restaurer
Fonctions:
• dump():
sauve en ascii des objets R
• source():recharge les objets sauvés par dump(),par
exemple un script sauvegardé sous le nom test.R
sera rappelé par source(« test.R », echo=TRUE)
• save(): comme dump() mais en binaire
• load(): comme source() mais en binaire
En pratique, on pourra créer un repertoire
de travail par analyse de données, et y
déposer:
• les fichiers de données brutes
• le fichier script contenant les commandes
R
• le workspace et les fichiers
résultats(textes et graphiques)
Lois de probabilité,
distributions
•
On peut évaluer les quantités suivantes:
Fonctions de répartition
Densité
Quantiles
Simulations
• Les fonctions ont le même nom avec des préfixes différents
r: donne des échantillons
d: donne les valeurs P(X=j)
p: donne les valeurs P(X<=x)
q: donne la valeur y telle que P(X=x)=y
•
Exemples: dnorm(),pnorm(),qnorm(),rnorm()
:loi normale
dbinom(),pbinom(),qbinom(),rbinom():loi binomiale
dt(),pt(),qt(),rt():loi de student
dpois(), ppois(), qpois(), tpois():loi de poisson
…
exemples
dbinom(k, n, p) donne la valeur P(X=k) sachant que X suit
une loi B(n,p),c’est-à-dire
Exemple: dbinom(3,10,0.2)
0.2013266
rbinom(10,n,p) donne un échantillon de taille 10 extrait
d’une population suivant une loi B(n,p):
Exemple: rbinom(10,10,0.2)
[1] 5 2 3 2 4 0 4 2 0 2
pbinom(k,n,p) donne P(X<=k) sachant que X suit une loi
B(n,p),c’est-à-dire la valeur de la fonction de
distribution F(k)
Exemples:pbinom(1,10,0.2)
[1] 0.3758096
pbinom(2,10,0.2)
[1] 0.6777995
qbinom(q,n,p) est le quantile, c’est-à-dire la plus petite
valeur x telle que P(X<=x)>=q
Exemple: qbinom(0.5,10,0.2)
[1] 2
qchisq(.1,df=8)
est le premier décile deX^2(8)
• Exemple 1
n=10
p=0.2
x=0:n
y=choose(n,x)*p^x*(1p)^(n-x)
#ou bien y=dbinom(x,n,p)
plot(x,y,type="h"
,lwd=10)
• Exemple 2
prod(1:8); 40320
identique à factorial(8)
exemples
dbinom(k, n, p) donne la valeur
une loi B(n,p),c’est-à-dire
Exemple: dbinom(3,10,0.2)
P(X=k) sachant que X suit
0.2013266
rbinom(10,n,p) donne un échantillon de taille 10
extrait d’une population suivant une loi
B(n,p):
Exemple: rbinom(10,10,0.2)
[1] 5 2 3 2 4 0 4 2 0 2
pbinom(k,n,p) donne P(X<=k) sachant que X
suit une loi B(n,p),c’est-à-dire la valeur
de la fonction de distribution F(k)
Exemples:
pbinom(3,10,0.2); 0.8791261
pbinom(1:10,10,0,2)
;
[1] 0.1073742 0.3758096 0.6777995 0.8791261 0.9672065
0.9936306 0.9991356 0.9999221 0.9999958 1.0000000
0
2
4
6
c(-1, x)
8
10
0.0
0.2
0.4
c(0, z)
0.6
0.8
1.0
Exemple d'une loi continue: la loi normale
qnorm(0.2)
[1] -0.8416212
0.6
0.4
0.2
0.0
pnorm(x)
0.8
1.0
•
0
5
x
10
Fonctions mathématiques de base
sum(x)
Somme des éléments
prod(x)
Produit des éléments de x
max(x), min(x)
Maximum, minimum des éléments de x
which.max(x)
Retourne l’indice du maximum des éléments de x
which.min(x)
Retourne l’indice du minimum des éléments de x
range(x)
Idem que c(min,max)
mean(x)
Moyenne des éléments
de x
median(x)
Médiane des éléments
de x
var(x) ou cov(x)
Variance des éléments de x(calculée sur n-1)
matrice des var et cov si x est une matrice
cor(x)
Matrice de corrélation si x est une matrice ou
un data frame
sd(x)
Ecart-type des éléments
de x
de x
Autres fonctions
round(x,n)
Arrondit les éléments de x à n
chiffres après la virgule
rev(x)
Inverse l’ordre des éléments de
x
sort(x)
Trie les éléments de x dans
l’ordre ascendant
rank(x)
Range les éléments de x
scale(x)
Centre et réduit les données
pmin(x,y,…)
Un vecteur dont le iéme élément
est le minimum entre x[i] et
y[i]
cumsum(x)
Un vecteur dont le ieme élément
est la somme de x[1]à x[i]
cumprod(), cummin(),cummax()
Idem pour produit, minimum,
maximum
match(x,y)
Retourne un vecteur de meme
longueur que x contenant les
éléments de x qui sont dans y
encore…
choose(n,k)
Coefficient binomial Cnk
na.omit()
Supprime les observations avec
données manquantes
na.fail()
Retourne un message d’erreur si
x contient au moins un NA
unique()
Si x est un vecteur ou un data
frame, retourne un objet
similaire mais avec les éléments
duppliqués supprimés
table()
Retourne un tableau des
effectifs des différentes
valeurs de x
subset()
Retourne une selection de x en
fonction de critères
sample(x,size)
Ré-échantillonnage aléatoire et
sans remise de size éléments
dans x