Exemples

Transcription

Exemples
Cours 6
Exemples de
statistiques
descriptives
Exercice 1 : Dans une enquête sur
les conditions de vie des
ménages de banlieue, on dispose
de la série statistique du
nombre d’enfants de 10 ménages:
D=data.frame(men=1:11,nbenf=c(3,2,5,3,6,3
,5,5,1,5,2));D;
men nbenf
1
1
3
2
2
2
3
3
5
4
4
3
5
5
6
6
6
3
7
7
5
8
8
5
9
9
1
10 10
5...
Calculer la moyenne du nombre
d’enfants par ménage de deux
façons différentes
mean(D$nbenf);
[1] 3.636364
sum(D$nbenf)/length(D$nbenf)
[1] 3.636364
Construire le tableau de la
distribution des fréquences de cette
série
• df=D$nbenf/sum(D$nbenf)
• > df
• [1] 0.075 0.050 0.125 0.075
0.150 0.075 0.125 0.125 0.025
0.125 0.050
Représenter graphiquement cette
distribution.
plot(table(D$nbenf),main="diagramme
en batons des effectifs")
plot(table(D$nbenf),main="polygone
des effectifs ", type="b", col=2)
0.2
0.1
0.0
frequence
0.3
plot(table(D$nbenf)/length(D$nbenf),x
lab="nombre d'enfants",
ylab="frequence")
1
2
3
nombre d'enfants
5
6
2
1
0
table(D$nbenf)
3
4
polygone des effectifs
1
2
3
5
6
Exercice 2 : Au poste de
péage, on compte le
nombre de voitures se
présentant sur une
période de 5mn. Sur 100
observations de 5mn, on
obtient les résultats
suivants:...
Construire le diagramme en
bâtons et le polygone des
fréquences cumulées de la série
du nombre de voitures.
• D1=data.frame(nv=1:12,no=c(2,8,1
4,20,19,15,9,6,2,3,1,1))
●
•
plot(D1$nv,D1$no,type="h",
main="diagramme en
batons",xlab="nombre de
voitures", ylab="nombre
d'observations")
15
10
5
nombre d'observations
20
diagramme en batons
2
4
6
8
nombre de voitures
10
12
Polygone des fréquences
cumuléees
●
fc=cumsum(no)
• plot(D1$nv,fc,type="l",
main="polygone des frequences
cumulées",xlab="nombre de
voitures", ylab="frequences
cumulees")
•
●
80
60
40
20
0
frequences cumulees
100
polygone des frequences cumulées
2
4
6
8
nombre de voitures
10
12
Calculer la moyenne et l’écarttype de cette série.
(attention il s'agit de moyennes
• et d'ecart type pondérés)
moy=sum(D1$nv*D1$no)/100
[1] 5.07
et=sqrt(sum(0.01*D1$no*(D1$nvmoy)^2))
> et
[1] 2.182911
Déterminer la médiane, les
quartiles et tracer le box-plot.
●
s=rep(D1$nv,D1$no);s
summary(s)
Min. 1st Qu.
3rd Qu.
Max.
1.00
4.00
5.07
6.00
boxplot(s)
Median
5.00
12.00
Mean
2
4
6
8
10
12
Etudier la symétrie de
la série
calcul du moment d'ordre r
r=2
mr=(sum(0.01*D1$no*(D1$nvmoy)^r))^(1/r):
2.18
r=3
mr=(sum(0.01*D1$no*(D1$nvmoy)^r))^(1/r)
mr
[1] 1.944207
r=4
[1] 2.982554
Cours 6
Boucles,
Programmation de base
Boucles et Tests
for( in
while(
)
)
{
{
}
}
Exemple:
x=rep(5,0)
for (i in 1:5) x[i]=2*i+1
• Les fonctions du type apply(),replicate() évitent
d’écrire des boucles.
Boucles et exécutions
conditionnelles
if(expr1) expr2 else expr3
avec pour expr1 une expression
de type logique,
Remarques:
• Plusieurs commandes entre accolades:
{expr;… ;expr n}
• Les exécutions conditionnelles (if ..
else) peuvent quelquefois être
remplacées efficacement par des
indexations logiques.
• Exemple:
y=numeric(length(x));
for(i in 1:length(x))
{if(x[i]==b)y[i]=0 else
• Remarque:
L'exemple précédent peut
y[x==b]=0;
y[x!=b]=1;
y[i]=1}
être remplacé par:
Des Expressions de type
logique
utilisant des opérateurs
relationnels:
x<y;x>y;x<=y;x>=y;x==y; x!=y
ou bien (et) les opérateurs
NOT !
AND &
OR I
if(expr1) expr2 else expr3
• Le résultat de cette commande
est expr2 si expr1 vaut TRUE
et expr3 si expr1 vaut FALSE
• Il existe une version
vectorisée de cette commande:
ifelse(condition, a,b)
exemples
• x=1; if(x<5) y=1 else y=2
y;
[1] 1
• x=1:10
if(x<5) y=1 else y=2
Suite:
ifelse(condition, a,b)
• ifelse(x<5,1,2)
[1] 1 1 1 1 2 2 2 2 2 2
• y=ifelse(x<5,1,2);y;
[1] 1 1 1 1 2 2 2 2 2 2
repeat expr
while(condition)
• La commande break peut être
utilisée pour terminer une boucle
quelconque, et c’est le seul
moyen pour interrompre une boucle
avec repeat
• La commande next peut être
utilisée pour pour interrompre
une boucle particulière et passer
aux instructions suivant next
Programmer avec R
• Point fort:la programmation
d'une suite d'analyses qui
seront exécutées successivement
• Un programme en R sera écrit
dans un fichier ascii et
sauvegardé avec l'extension .R
• Exemple: tracer le même graphe
pour 3 espèces d'oiseaux
Programme 1
•
•
•
•
•
•
•
•
•
•
layout(matrix(1:3,3,1))
data=read.table(« swal.dat »)
plot(data$v1,data$v2, type= »l »)
Title(« swallow »)
data=read.table(« wren.dat »)
plot(data$v1,data$v2, type= »l »)
Title(« wren »)
data=read.table(« dunn.dat »)
plot(data$v1,data$v2, type= »l »)
Title(« dunn »)...
Programme 2:les noms de fichier
et d'especes sont utilises comme
des variables
• layout(matrix(1:3,3,1))
• species=c(«swallow »,»wren »,»dunnock»)
• file=c(« swal.dat »,»wren.dat »,»dunn.d
at »)
• for(i in 1:length(species))
{data=read.table(file[i])
plot(data$v1,data$v2,type= »l »)
title(species[i])
}
Les fonctions
• On peut écrire ses propres fonctions:
• Pour pouvoir être exécutée une fonction doit être
chargée en mémoire, cela peut se faire de
plusieurs façons:
• Entrer les lignes au clavier,
• ou les copier /coller à partir d’un éditeur
• Enregistrer la fonction dans un fichier ascii et
la charger par la commande source()
• Si on souhaite que la fonction soit chargée au
démarrage, il peut les enregistrer dans un
workspace avec l’extension .Rdata qui sera chargé
en mémoire s’il est localisé dans le répertoire de
travail de démarrage
getwd(): indique le
repertoire de travail
Exemple de fonction
• carre=function(x){print(x*x)}
• carre(3);9
• Il y a deux manières de spécifier les
arguments à une fonction:
par leur position
par leur nom
Exemple: fonc=function(arg1,arg2,arg3)
fonc(x,y,z);
fonc(arg2=y,arg1=x,arg3=z);
print() pour afficher le contenu d ’un objet
dans une fonction
Arguments par défaut
Exemple:
Moy.et.etype=function(x=1:10)
{moyenne=mean(x);
etype=sd(x);
print(c(moyenne,etype));
}
moy.et.etype()
[1] 5.500000 3.027650
moy.et.etype(1:100)
[1] 50.50000 29.01149
Programme 3
myfun=function(S,F)
{
data=read.table(F)
plot(data$v1,data$v2,type= »l »)
title(S)
};
layout(matrix(1:3,3,1)
myfun(« swallow », »sawl.dat »)...
Les fonctions
• On peut écrire ses propres fonctions:
Pour pouvoir être exécutée une fonction doit être
chargée en mémoire, cela peut se faire de
plusieurs façons:
• Entrer les lignes au clavier,
ou les copier /coller à partir d’un éditeur
• Enregistrer la fonction dans un fichier ascii
et la charger par la commande source()
• Si on souhaite que la fonction soit chargée au
démarrage, on peut les enregistrer dans un
workspace avec l’extension .Rdata qui sera
chargé en mémoire s’il est localisé dans le
répertoire de travail de démarrage
getwd():
indique le repertoire de travail
nom=function(arg1,arg2
,…)expression
• Où expression peut être un groupe
d’expressions rassemblées entre
accolades:
• nom=function(arg1,arg2,…)
{expression1,
expression2,
expression3,…
}
Fonctions (suite)
• print() pour afficher le
contenu d ’un objet dans une
fonction
• Le résultat de la fonction
sera en général la dernière
valeur calculée.
• Un appel de fonction est fait
de la façon suivante:
nom(arg1,arg2,…)
Exemples
• carre=function(x){print(x*x)}
• carre(3);9
Il y a deux manières de spécifier
les arguments à une fonction:
par leur position
par leur nom
• fonc=function(arg1,arg2,arg3)
fonc(x,y,z);
fonc(arg2=y,arg1=x,arg3=z);
Arguments par défaut
• Exemple:
• moy.et.etype=function(x=1:10)
{moyenne=mean(x);
etype=sd(x);
print(c(moyenne,etype));
}
moy.et.etype()
[1] 5.500000 3.027650
moy.et.etype(1:100)
[1] 50.50000 29.01149
Tableaux récapitulatifs
Distributions de probabilités
classiques suite
distributions
Géométrique
Noms sous R
geom
Hypergéométrique
hyper
Log-normale lnorm
Normale
norm
Poisson
pois
T de student t
Uniforme
unif
Weibull
weibull
Wilcoxon
wilcox
Arguments
additionnels
prob
n,m,k
meanlog,sdlog
mean,sd
lambda
df,ncp
min,max
shape,scale
M,n
Fonctions mathématiques de base
sum(x)
Somme des éléments
de x
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
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