Ce devoir maison est à envoyer par mail (aude.sportisse@upmc.fr) pour le mercredi 23 septembre (soir) en format .Rmd et .html.
Il comporte deux exercices, on pourra s’appuyer de la fiche 1 pour le réaliser.
Nous allons nous intéresser au jeux de données decathlon. Ce jeu de données comprend les performances des athlètes pour les dix épreuves du décathlon (10 premières colonnes), le classement des athlètes (colonne 11), les points obtenus (colonne 12) et la compétition où cela s’est déroulé (colonne 13).
data=read.table("https://audesportisse.github.io/files/decathlon.csv",sep=";",header=TRUE,row.names=1)
head(data)
## X100m Longueur Poids Hauteur X400m X110m.H Disque Perche Javelot
## Sebrle 10.85 7.84 16.36 2.12 48.36 14.05 48.72 5.0 70.52
## Clay 10.44 7.96 15.23 2.06 49.19 14.13 50.11 4.9 69.71
## Karpov 10.50 7.81 15.93 2.09 46.81 13.97 51.65 4.6 55.54
## Macey 10.89 7.47 15.73 2.15 48.97 14.56 48.34 4.4 58.46
## Warners 10.62 7.74 14.48 1.97 47.97 14.01 43.73 4.9 55.39
## Zsivoczky 10.91 7.14 15.31 2.12 49.40 14.95 45.62 4.7 63.45
## X1500m Classement Points Competition
## Sebrle 280.01 1 8893 JO
## Clay 282.00 2 8820 JO
## Karpov 278.11 3 8725 JO
## Macey 265.42 4 8414 JO
## Warners 278.05 5 8343 JO
## Zsivoczky 269.54 6 8287 JO
dim(data)
## [1] 41 13
summary(data)
## X100m Longueur Poids Hauteur X400m
## Min. :10.44 Min. :6.61 Min. :12.68 Min. :1.850 Min. :46.81
## 1st Qu.:10.85 1st Qu.:7.03 1st Qu.:13.88 1st Qu.:1.920 1st Qu.:48.93
## Median :10.98 Median :7.30 Median :14.57 Median :1.950 Median :49.40
## Mean :11.00 Mean :7.26 Mean :14.48 Mean :1.977 Mean :49.62
## 3rd Qu.:11.14 3rd Qu.:7.48 3rd Qu.:14.97 3rd Qu.:2.040 3rd Qu.:50.30
## Max. :11.64 Max. :7.96 Max. :16.36 Max. :2.150 Max. :53.20
## X110m.H Disque Perche Javelot
## Min. :13.97 Min. :37.92 Min. :4.200 Min. :50.31
## 1st Qu.:14.21 1st Qu.:41.90 1st Qu.:4.500 1st Qu.:55.27
## Median :14.48 Median :44.41 Median :4.800 Median :58.36
## Mean :14.61 Mean :44.33 Mean :4.762 Mean :58.32
## 3rd Qu.:14.98 3rd Qu.:46.07 3rd Qu.:4.920 3rd Qu.:60.89
## Max. :15.67 Max. :51.65 Max. :5.400 Max. :70.52
## X1500m Classement Points Competition
## Min. :262.1 Min. : 1.00 Min. :7313 Decastar:13
## 1st Qu.:271.0 1st Qu.: 6.00 1st Qu.:7802 JO :28
## Median :278.1 Median :11.00 Median :8021
## Mean :279.0 Mean :12.12 Mean :8005
## 3rd Qu.:285.1 3rd Qu.:18.00 3rd Qu.:8122
## Max. :317.0 Max. :28.00 Max. :8893
#1 variable catégorielles (la treizième)
longueur <- data$Longueur
On peut obtenir la moyenne empirique “à la main” comme suit (on retrouve le résultat du résumé ci-dessus)
n <- length(longueur)
moy <- sum(longueur)/n
moy
## [1] 7.26
Quant à l’écart-type empirique, on peut utiliser indifféremment l’une des deux formules suivantes :
ecart <- sqrt((sum(longueur^2))/n - moy^2)
ecart
## [1] 0.3125193
ou
ecart <- sqrt(sum((longueur - moy)^2)/n)
ecart
## [1] 0.3125193
On rappelle que le quantile empirique d’ordre \(p\) d’un échantillon de taille \(n\) est défini par \[x_{p}(n)=\inf\{x\in\mathbb{R},\ F_n(x)\geq p\}=X_{(\lceil np\rceil)},\]
où \(F_n\) est la fonction de répartition empirique et \(X_{(1)}\leq\dots\leq X_{(n)}\) est l’échantillon ordonné. La médiane empirique correspondant au quantile empirique d’ordre \(1/2\), ceci donne ici
vec <- sort(longueur)
med <- vec[ceiling(n/2)]
med
## [1] 7.3
Pour la moyenne, aucun problème, on retrouve la valeur obtenue ci-dessus
mean(longueur)
## [1] 7.26
L’écart-type est différent
sd(longueur)
## [1] 0.3164016
Ceci est dû au fait que c’est l’estimateur sans biais de la variance qui est calculé par R (voir l’aide). Pour la médiane, il n’y a pas de différence,
median(longueur)
## [1] 7.3
Mais il aurait pu en avoir, voir l’aide de la fonction.
apply(data[,1:10],2,mean)
## X100m Longueur Poids Hauteur X400m X110m.H Disque
## 10.998049 7.260000 14.477073 1.976829 49.616341 14.605854 44.325610
## Perche Javelot X1500m
## 4.762439 58.316585 279.024878
apply(data[,1:10],2,sd)
## X100m Longueur Poids Hauteur X400m X110m.H
## 0.26302300 0.31640164 0.82442781 0.08895052 1.15345081 0.47178902
## Disque Perche Javelot X1500m
## 3.37784476 0.27799982 4.82682018 11.67324722
mean(data[data$Competition=="JO",12])
## [1] 8051.536
mean(data[data$Competition=="Decastar",12])
## [1] 7905.923
max(data[data$Competition=="JO",11])
## [1] 28
max(data[data$Competition=="Decastar",11])
## [1] 13
Cet exercice est un extrait de “Probability: Theory and Examples”, Rick Durrett, page 316 deuxième édition.
Le professeur demande à un étudiant d’écrire au tableau une séquence de 100 nombres, au hasard, compris entre 0 à 9. Un autre étudiant choisit un des dix premiers nombres de la séquence écrite au tableau et ne le dit pas au professeur. Il note bien la position qu’a ce nombre dans la séquence. L’étudiant va parcourir la séquence de nombres de la manière suivante: si le premier nombre choisi est 7 et que c’est le deuxième nombre de la liste, la nouvelle position sera égale à 7+2=9. Si le nombre est 0, la nouvelle position sera calculée en ajoutant 10 à la position initiale. Il parcourt la séquence tant que la nouvelle position ne dépasse pas 100. Quant à lui, le professeur choisit le premier nombre de la séquence de nombres et parcourt ensuite la séquence de nombres en utilisant la même méthode que l’étudiant. La probabilité que le professeur n’obtienne pas la même position finale que l’étudiant est approximativement égale à 0.026.
Le but de cet exercice est d’écrire un programme permettant de retrouver cette probabilité de 0.026.
Pour estimer la probabilité d’un évènement (ici l’évènement est “le professeur se trompe”), nous pouvons répéter l’expérience un grand nombre de fois et compter combien de fois l’évènement se produit. On estime donc la probabilité \(p\) par \(C/n\), où \(C\) est la variable aléatoire de comptage et \(n\) le nombre d’expériences.
Nous allons d’abord simuler une seule expérience (questions 1 à 5).
seq <- sample(1:10, size = 100,replace = TRUE)
seq
## [1] 8 8 7 3 2 3 4 4 4 4 1 9 3 10 4 7 7 5 5 4 10 7 2 2 6
## [26] 1 8 1 9 4 6 2 5 5 3 5 5 9 3 3 2 4 3 9 7 9 10 5 9 9
## [51] 5 3 4 6 8 9 9 9 4 4 5 2 7 9 10 4 7 4 5 8 8 3 10 1 2
## [76] 3 2 10 6 5 1 1 7 5 2 10 2 6 9 3 7 9 2 3 9 3 8 5 8 10
ind = 1 + seq[1]
while(ind+seq[ind] < 100){
ind <- ind + seq[ind]
}
ind
## [1] 97
alea <- sample(1:10,1)
alea
## [1] 8
indbis <- alea + seq[alea]
while(indbis + seq[indbis] < 100){
indbis = indbis + seq[indbis]
}
indbis
## [1] 97
ind != indbis
## [1] FALSE
n <- 10^5
C <- 0
for (i in 1:n){
seq <- sample(1:10, size = 100, replace = TRUE)
ind = 1 + seq[1]
while(ind+seq[ind] < 100){
ind <- ind + seq[ind]
}
alea <- sample(1:10, size = 1)
indbis <- alea + seq[alea]
while(indbis + seq[indbis] < 100){
indbis <- indbis + seq[indbis]
}
if(ind != indbis){
C <- C+1
}
}
phat <- C/n
phat
## [1] 0.02727