doc_1_045212

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 16

REPUBLIQUE DU BENIN

******
Ministère de l’enseignement
supérieur et de la recherche
scientifique
******
Université Nationale des Sciences,
Technologies, Ingénierie et
Mathématiques
******
Ecole Nationale Supérieure de
Génie Mathématique et
Modélisation

Matière: Simulation Aléatoire II

Travaux Pratiques
Devoir de Maison

Présenter par: Group II

Membres du groupe: Supervisé par :

Arol TOSSOU Dr. Eliézer BIAO

Uriel H. JOHNSON

Année académique: 2024-2025


Contents
1 I 2
1.1 1. Acquisition et visualisation des données . . . . . . . . . . . . . . . . . 2
1.2 2.Tracé de la fonction de répartition empirique . . . . . . . . . . . . . . . 2
1.3 3. Ajout sur ce graphique la fonction de répartition de la loi normale . . 3
1.4 4. Tracé de fonction de quantile empirique . . . . . . . . . . . . . . . . . 4
1.5 5. Tracé du QQ-plot de la variable Obs . . . . . . . . . . . . . . . . . . . 5
1.6 6. Tracé l’histogramme de la variable Obs et la densité de la loi normale 6
1.7 7. Calcul et représentation d’un estimateur de la densité . . . . . . . . . 6

2 II 7

3 III. Etude des données rivers 11


3.1 2. Supperposition de la fonction de répartition de la loi normale . . . . . 11
3.2 3. Test d’ajustement de Kolmogorov-Smirnov et Shapiro-Wilks . . . . . . 12
3.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 IV 13
4.1 1.Supposition de la normalité des données . . . . . . . . . . . . . . . . . 13
4.1.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 2.Test du signe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 3.Test de Mann-Whitney . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1
1 I

1.1 1. Acquisition et visualisation des données


Les données sur le niveau d’eau du Lac Huron peuvent être récupérées à partir de la base
de données datasets de R. Pour charger ces données et les visualiser, voici le code en R
:

# Charger la base de données ’datasets’ de R


data(LakeHuron)

# Ranger les données dans un vecteur Obs


Obs <- LakeHuron

# Afficher la structure des données


str(Obs)

# Visualisation graphique des données


plot(Obs, type=’o’, col=’blue’, xlab=’Années’, ylab=’Niveau d\’eau’,
main=’Mesures annuelles du niveau d’eau du Lac Huron (1875-1972)’)

RESURLTAT

Time-Series [1:98] from 1875 to 1972:


580 582 581 581 580 580 579 578 577 576 ...

Après avoir chargé les données et les visualisées, voici le graphique généré :

Figure 1: Mesures annuelles du niveau d’eau du Lac Huron (1875-1972)

1.2 2.Tracé de la fonction de répartition empirique


CODE sous R:

2
plot(ecdf(Obs), xlab="Niveau d’eau", main="Fonction de répartition empirique
du Lac Huron", xlim=c(min(Obs), max(Obs)))

RESULTAT

Figure 2: Fonction de répartition empirique du niveau d’eau du Lac Huron (1875-1972)

1.3 3. Ajout sur ce graphique la fonction de répartition de la loi


normale
CODE sous R:

ptx = seq(min(Obs),max(Obs), length=98)


lines(ptx, pnorm(ptx, mean=mean(Obs), sd=sd(Obs)),lty=3,col=’red’)

RESULTAT

3
Figure 3: Fonction de répartition empirique du niveau d’eau du Lac Huron (1875-1972)
et fonction de répartition normale

1.4 4. Tracé de fonction de quantile empirique


CODE sous R:

n=length(Obs)
ptx = seq(from=1/n,to=1,by=1/n)
Qn = quantile(Obs,ptx)

plot(ptx,Qn,type=’l’,xlab="p",ylab=’Qn(p)’,main=’Quantile d’ordre p’)


lines(ptx,qnorm(ptx,mean=mean(Obs),sd=sd(Obs)), lty=3,col=’red’)

RESULTAT

4
Figure 4: Fonction de quantile empirique du niveau d’eau du Lac Huron (1875-1972)

1.5 5. Tracé du QQ-plot de la variable Obs


CODE sous R:

qqnorm(Obs, xlab="Quantile théorique", ylab="Quantile empirique", col=4,


main="QQ-plot")
abline(mean(Obs),sd(Obs),col=2)

RESULTAT

Figure 5: QQ-plot de la variable Obs

5
1.6 6. Tracé l’histogramme de la variable Obs et la densité de la
loi normale
CODE sous R:

hist(Obs,probability=T,xlab=’Vitesse’, ylab=’Densité’,main=’Histogramme de Speed’)


ptx = seq(min(Obs),max(Obs), length=98)
lines(ptx, dnorm(ptx, mean=mean(Obs), sd=sd(Obs)))

RESULTAT

Figure 6: Histogramme de la variable Obs et la densité de la loi normale

1.7 7. Calcul et représentation d’un estimateur de la densité


CODE sous R:

kde_default <- density(Obs)

# Calculer l’estimateur à noyau avec une fenêtre plus large (band


width= 10)
kde_large_bandwidth <- density(Obs, bw = 10)

# Calculer l’estimateur à noyau avec une fenêtre plus étroite (band


width = 0.5)
kde_small_bandwidth <- density(Obs, bw = 0.5)

kde_medium_bandwidth <- density(Obs, bw = 2)

6
par(mfrow=c(2, 2)) # Diviser la fenêtre graphique en 4 sections

# Tracer l’estimateur avec fenêtre par défaut (en haut à gauche)


plot(kde_default, main = "Fenêtre par défaut", xlab = "Niveau
d’eau du Lac Huron", ylab = "Densité", col = "blue", lwd = 2)

# Tracer l’estimateur avec fenêtre large (en haut à droite)


plot(kde_large_bandwidth, main = "Fenêtre large", xlab
= "Niveau
d’eau du Lac Huron", ylab = "Densité", col = "red", lwd = 2)

# Tracer l’estimateur avec fenêtre étroite (en bas à gauche)


plot(kde_small_bandwidth, main = "Fenêtre étroite", xlab = "Niveau
d’eau du Lac Huron", ylab = "Densité", col = "green", lwd = 2)

# Tracer l’estimateur avec une fenêtre moyenne (en bas à droite)


plot(kde_medium_bandwidth, main = "Fenêtre moyenne", xlab = "Niveau
d’eau du Lac Huron", ylab = "Densité", col = "purple", lwd = 2)

# Remettre la disposition par défaut pour les graphiques futurs


par(mfrow=c(1, 1))

RESULTAT

Figure 7: Estimateur à noyau de la densité de la variable ‘Obs‘ avec différentes fenêtres

2 II
Trouvons un intervalle de confiance à 95% des moyennes échantillonales (pour échantillons
de taille 20)

7
CODE sous R

# Données de l’échantillon
X = c(51, 45, 49, 66, 53, 41, 58, 56, 60, 63, 75,
89, 73, 84, 66, 85, 73, 71, 78, 65)

# Fonction pour calculer la moyenne sur un échantillon bootstrap


moyenne = function(x, i) {
mean(x[i]) # Calcule la moyenne de l’échantillon basé sur les indices "i"
}

# Tailles de rééchantillonnage pour B (le nombre d’échantillons bootstrap)


B = c(50, 200, 1000, 5000)

# Charger la bibliothèque boot


library(boot)

# Boucle pour appliquer la méthode bootstrap pour chaque taille B


for (i in 1:4) {
print(paste("Nombre d’échantillons bootstrap: ", B[i])) # Affiche la taille B

# Appliquer la méthode bootstrap


simulMoyenne = boot(X, statistic=moyenne, R = B[i], sim="ordinary", stype="i")
print(simulMoyenne) # Afficher les résultats du bootstrap (moyennes calculées)

# Calculer l’intervalle de confiance à 95%


interMoyenne = boot.ci(boot.out = simulMoyenne, conf = 0.95)
print(interMoyenne) # Afficher l’intervalle de confiance
}

RESULTAT

Nombre d’échantillons bootstrap: 50

ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = X, statistic = moyenne, R = B[i], sim = "ordinary",
stype = "i")

Bootstrap Statistics :
original bias std. error
t1* 65.05 -0.13 2.614735

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 50 bootstrap replicates

8
CALL :
boot.ci(boot.out = simulMoyenne, conf = 0.95)

Intervals :
Level Normal Basic
95% (60.06, 70.30 ) (59.07, 72.39 )

Level Percentile BCa


95% (57.71, 71.03 ) (58.65, 71.10 )
Calculations and Intervals on Original Scale
Some basic intervals may be unstable
Some percentile intervals may be unstable
Warning : BCa Intervals used Extreme Quantiles
Some BCa intervals may be unstable

Nombre d’échantillons bootstrap: 200

ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = X, statistic = moyenne, R = B[i], sim = "ordinary",
stype = "i")

Bootstrap Statistics :
original bias std. error
t1* 65.05 0.14525 3.102064

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 200 bootstrap replicates

CALL :
boot.ci(boot.out = simulMoyenne, conf = 0.95)

Intervals :
Level Normal Basic
95% (58.82, 70.98 ) (57.81, 71.58 )

Level Percentile BCa


95% (58.52, 72.29 ) (59.27, 72.58 )
Calculations and Intervals on Original Scale
Some basic intervals may be unstable
Some percentile intervals may be unstable
Some BCa intervals may be unstable

Nombre d’échantillons bootstrap: 1000

ORDINARY NONPARAMETRIC BOOTSTRAP

9
Call:
boot(data = X, statistic = moyenne, R = B[i], sim = "ordinary",
stype = "i")

Bootstrap Statistics :
original bias std. error
t1* 65.05 0.1027 2.842481

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates

CALL :
boot.ci(boot.out = simulMoyenne, conf = 0.95)

Intervals :
Level Normal Basic
95% (59.38, 70.52 ) (59.30, 70.15 )

Level Percentile BCa


95% (59.95, 70.80 ) (59.72, 70.55 )
Calculations and Intervals on Original Scale

Nombre d’échantillons bootstrap: 5000

ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = X, statistic = moyenne, R = B[i], sim = "ordinary",
stype = "i")

Bootstrap Statistics :
original bias std. error
t1* 65.05 -0.0232 2.921219

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 5000 bootstrap replicates

CALL :
boot.ci(boot.out = simulMoyenne, conf = 0.95)

Intervals :
Level Normal Basic
95% (59.35, 70.80 ) (59.35, 70.65 )

Level Percentile BCa


95% (59.45, 70.75 ) (59.45, 70.75 )
Calculations and Intervals on Original Scale

10
3 III. Etude des données rivers

1. Tracé de la fonction de répartition empirique


CODE sous R

plot(ecdf(rivers), main="Fonction de répartition empirique des données rivers",


xlab="Longueur des fleuves (km)", ylab="F(x)")

RESULTAT

Figure 8: Fonction de répartition empirique

3.1 2. Supperposition de la fonction de répartition de la loi nor-


male
CODE sous R:

mu <- mean(rivers)
sigma <- sd(rivers)
curve(pnorm(x, mean=mu, sd=sigma), add=TRUE, col="red", lwd=2)

RESULTAT

11
Figure 9: Fonction de répartition empirique avec loi normale

3.2 3. Test d’ajustement de Kolmogorov-Smirnov et Shapiro-


Wilks
CODE sous R:

# 3. Test de Kolmogorov-Smirnov
ks_test <- ks.test(rivers, "pnorm", mean=mu, sd=sigma)
print(ks_test)

# 4. Test de Shapiro-Wilks
shapiro_test <- shapiro.test(rivers)
print(shapiro_test)

RESULTAT

Asymptotic one-sample Kolmogorov-Smirnov test

data: rivers
D = 0.20825, p-value = 9.768e-06
alternative hypothesis: two-sided

Shapiro-Wilk normality test

data: rivers
W = 0.66662, p-value < 2.2e-16

12
3.3 Conclusion
Les résultats des tests de Kolmogorov-Smirnov et de Shapiro-Wilk montrent qu’il est
possible, au risque de 5 %, de rejeter l’hypothèse selon laquelle les données "rivers"
suivent une loi normale.

• Le test de Kolmogorov-Smirnov retourne une p-value de 9.768 × 10−6 , ce qui est


très inférieur à 0.05. Ainsi, au risque de 5 %, il est possible de rejeter l’hypothèse
nulle de normalité des données.

• Le test de Shapiro-Wilk donne une p-value extrêmement petite (< 2.2 × 10−16 ), ce
qui permet également de rejeter l’hypothèse de normalité des données au risque de
5 %.

En conséquence, au risque de 5 %, on peut conclure que les données "rivers" ne suivent


pas une distribution normale.

4 IV

4.1 1.Supposition de la normalité des données


CODE sous R:

# Données des bactéries par cm³ pour chaque vache


juste_apres <- c(12000, 13000, 21500, 17000, 15000, 22000, 11000, 21000)
apres_24h <- c(11000, 20000, 31000, 28000, 26000, 30000, 16000, 29000)

# Créer un data frame avec ces données


data <- data.frame(
vache = 1:8,
juste_apres = juste_apres,
apres_24h = apres_24h
)

# Test t de Student pour échantillons appariés


t_test <- t.test(juste_apres, apres_24h, paired = TRUE)
print(t_test)

RESULTAT

Paired t-test

data: juste_apres and apres_24h


t = -5.2786, df = 7, p-value = 0.00115
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:

13
-10588.238 -4036.762
sample estimates:
mean difference
-7312.5

4.1.1 Conclusion

Les résultats du test t apparié montrent qu’il existe une réduction significative du
nombre de bactéries par cm³ entre juste après la traite et 24 heures après la traite. La
probabilité que cette différence soit due au hasard est inférieure à 0.05, ce qui nous permet
de conclure avec 95% de certitude que le nombre de bactéries est significativement plus
faible après 24 heures.

4.2 2.Test du signe


CODE sous R:

# Calcul des différences entre les deux mesures


differences <- juste_apres - apres_24h

# Appliquer le test du signe


sign_test <- binom.test(sum(differences > 0), length(differences), p = 0.5)
print(sign_test)

RESULTAT

Exact binomial test

data: sum(differences > 0) and length(differences)


number of successes = 1, number of trials = 8, p-value = 0.07031
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
0.003159724 0.526509671
sample estimates:
probability of success
0.125

4.2.1 Conclusion

Le test exact binomial donne une p-value de 0.07031, supérieure au seuil de significativité
de 0.05. Cela signifie qu’il n’y a pas suffisamment de preuves pour rejeter l’hypothèse
nulle, suggérant que la proportion de différences positives n’est pas significativement
différente de 0.5. En termes de risque, la probabilité de succès (i.e., une différence positive)
n’est pas significativement plus élevée ou plus faible que ce qui serait attendu par hasard.
Ainsi, on ne peut pas conclure à une tendance significative dans l’évolution du nombre
de bactéries entre les deux moments.

14
4.3 3.Test de Mann-Whitney
CODE sous R:

# Test de Mann-Whitney (test de Wilcoxon pour échantillons appariés)


mann_whitney_test <- wilcox.test(juste_apres, apres_24h, paired = TRUE)
print(mann_whitney_test)

RESULTAT

Wilcoxon signed rank test with continuity correction

data: juste_apres and apres_24h


V = 1, p-value = 0.02055
alternative hypothesis: true location shift is not equal to 0

4.3.1 Conclusion

Le test de Wilcoxon donne une p-value de 0.02055, inférieure au seuil de significativité


de 0.05. Cela implique qu’il existe un risque inférieur à 2% de rejeter à tort l’hypothèse
nulle. En d’autres termes, la probabilité que la différence observée soit due au hasard est
faible, ce qui indique une différence significative entre les deux moments.

15

Vous aimerez peut-être aussi