Statistique et Probabilités [M3201]
TP2: Simulation de la loi normale
Exercice 1: Distribution des valeurs
Pour simuler \(n\) valeurs aléatoirement suivant la loi normale de moyenne \(m\) et d’écart-type \(s\) on utilise sous R la commande
# Echantillons de taille n=2000 individus avec differents parametres
n <- 20
nd1 <- rnorm(n,0,1)
nd2 <- rnorm(n,1,1)
nd3 <- rnorm(n,2,1)
nd4 <- rnorm(n,0,2)
nd5 <- rnorm(n,0,4)
nd_en_col <- cbind(nd1, nd2, nd3, nd4, nd5)
res <- rbind(colSums(nd_en_col< -2) / n,
colSums(nd_en_col< 0) / n,
colSums(nd_en_col == 0) / n,
colSums(nd_en_col > 2) / n)
# Pour l'affichage de la table:
colnames(res) <- c('N(0, 1)', 'N(1,1)', 'N(2, 1)', 'N(0, 2^2)', 'N(0, 4^2)')
rownames(res) <- c('% de valuers < -2', '% de valuers < 0', '% de valuers = 0','% de valuers > 2')
kable(res)
N(0, 1) | N(1,1) | N(2, 1) | N(0, 2^2) | N(0, 4^2) | |
---|---|---|---|---|---|
% de valuers < -2 | 0.00 | 0.0 | 0.00 | 0.10 | 0.05 |
% de valuers < 0 | 0.40 | 0.2 | 0.05 | 0.55 | 0.40 |
% de valuers = 0 | 0.00 | 0.0 | 0.00 | 0.00 | 0.00 |
% de valuers > 2 | 0.05 | 0.2 | 0.65 | 0.20 | 0.55 |
Noter que les résultats seront différents d’une experience à une autre; Il s’agit ici d’une approximation des probabiliés.
Question 1 : avec les mêmes valeurs des moyennes et des écart-types, on simule maintenant des échantillons de taille \(n=2000\) individus.
# Echantillons de taille n=2000 individus avec differents parametres
n <- 2000
nd1 <- rnorm(n,0,1)
nd2 <- rnorm(n,1,1)
nd3 <- rnorm(n,2,1)
nd4 <- rnorm(n,0,2)
nd5 <- rnorm(n,0,4)
nd_en_col <- cbind(nd1, nd2, nd3, nd4, nd5)
res <- rbind(colSums(nd_en_col< -2) / n,
colSums(nd_en_col< 0) / n,
colSums(nd_en_col == 0) / n,
colSums(nd_en_col > 2) / n)
# Pour l'affichage de la table:
colnames(res) <- c('N(0, 1)', 'N(1,1)', 'N(2, 1)', 'N(0, 2^2)', 'N(0, 4^2)')
rownames(res) <- c('% de valuers < -2', '% de valuers < 0', '% de valuers = 0','% de valuers > 2')
kable(res)
N(0, 1) | N(1,1) | N(2, 1) | N(0, 2^2) | N(0, 4^2) | |
---|---|---|---|---|---|
% de valuers < -2 | 0.0195 | 0.0015 | 0.0000 | 0.1635 | 0.308 |
% de valuers < 0 | 0.4815 | 0.1620 | 0.0230 | 0.4995 | 0.485 |
% de valuers = 0 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.000 |
% de valuers > 2 | 0.0255 | 0.1595 | 0.5055 | 0.1565 | 0.323 |
Question 2 : On considère uniquement le premier échantillon nd1. Que trace la fonction plot dans le script ? (axe des \(x=\) ? et axe des \(y=\) ?)
# Tracer les valeurs
plot(nd1, pch=19, cex=0.5, xlab="", ylab="")
Axe des abscisses : l’indice de l’echantillon.
Axe des ordonnees : la valeur de l’echantillon.
Pour dessiner la répartition des valeurs on trace un histogramme.
Question 3 : Quelle est la différence entre les trois commandes ci-dessous?
hist(nd1) # occurence, nombre de classes via la regle de Sturges.
hist(nd1,freq=T, breaks=40) # nombre de classes = 40
hist(nd1,freq=T, breaks=50) # nombre de classes = 50
Question 4 : on veut comparer les histogrammes des \(5\) échantillons. Lancer les commandes de Introduction/Densité qui permettent d’afficher les histogrammes et de superposer en rouge la densité théorique associée (pour mieux voir les graphiques cliquer sur zoom dans le menu Plots).
Comparer les graphiques des échantillons nd1, nd2 et nd3 : qu’est-ce qui change ?
l’axe de symetrie x=\(\mu\) change.
La largeur de la courbe change proportionnelement avec \(\sigma\) (approximativement \([\mu-3\sigma, \mu+3\sigma]\).
plotdensity <- function(sample, mu, sigma, infx, supx, title){
hist(sample, freq=FALSE, breaks=40,
xlim=c(infx, supx), xlab="",
main=title, cex.main=2)
# la courbe theorique de la densite
x <- seq(infx, supx, 0.1)
lines(x, dnorm(x, mu, sigma), col="red")
}
par(mfrow=c(1,3))
plotdensity(nd1, 0, 1, -5, 5, 'nd1')
plotdensity(nd2, 1, 1, -5, 5, 'nd2')
plotdensity(nd3, 2, 1, -5, 5, 'nd3')