> Statistiques > Tests statistiques > Lois et génération des échantillons
Lois et génération des échantillons
combn : permet d'énumérer toutes les combinaisons des éléments d'un vecteur :
- combn(c("a", "b", "c", "d"), 2) : renvoie une matrice dont chaque colonne a 2 éléments choisi parmi le vecteur en respectant l'ordre ("a" "b" renvoyé, mais pas "b" "a") :
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a" "a" "a" "b" "b" "c"
[2,] "b" "c" "d" "c" "d" "d"
- combn(c("a", "b", "c", "d"), 2, FUN = function(x) paste(x, collapse = ",")) : applique la fonction indiquée sur chaque combinaison et renvoie le résultat (ici, "a,b" "a,c" "a,d" "b,c" "b,d" "c,d")
Génération d'échantillons aléatoires à partir d'un vecteur :
- vect <- seq(3, 12); sample(vect, 5) : fournit un échantillon aléatoire de 5 valeurs prises dans le vecteur donné, sans remise (taille de l'échantillon doit être inférieure à la taille du vecteur).
- sample(vect, 5, replace = TRUE) : fournit un échantillon aléatoire de 5 valeurs prises dans le vecteur donné, mais avec remise.
- sample(vect) : fournit un échantillon aléatoire de length(vect) valeurs prises dans vect (c'est à dire une permutation).
- sample(10, 5) : fournit un échantillon aléatoire de 5 valeurs parmi les 10 premiers entiers (i.e. parmi seq(1, 10)).
- sample(seq(1, 4), 3, prob = c(0.1, 0.2, 0.3, 0.4), replace = TRUE) : fournit un échantillon aléatoire de 3 valeurs prises parmi le vecteur donné, chaque valeur étant choisie avec une probabilité proportionnelle aux valeurs données dans l'argument prob. La somme des poids n'a pas besoin d'être 1.
Génération d'échantillons aléatoires : si on veut avoir des valeurs reproductibles d'un run à l'autre, faire : set.seed(12345) (avec une valeur quelconque fixée).
Génération d'un échantillon gaussien :
- rnorm(100, 0, 1) : retourne un vecteur de 100 valeurs tirées d'une distribution gaussienne de moyenne 0 et d'écart-type 1.
- rnorm(100, mean = 0, sd = 1) : pareil.
- rnorm(1000, mean = c(0, 3), sd = c(0.5, 1)) : permet d'obtenir une distribution de valeurs bimodale.
- rnorm(100, mean = seq(0, 1, length = 100), sd = seq(0, 1, length = 100)) : série de valeurs normales, dont la moyenne et l'écart-type augmente au fur et à mesure des positions.
Génération d'un échantillon suivant une loi uniforme :
- runif(100, 0, 5) : retourne 100 valeurs issues d'une distribution uniforme entre 0 et 5.
- runif(100, min 0, max = 5) : pareil.
- runif(100, c(0, 1), c(5, 7)) : permet d'avoir la superposition de 2 distributions uniformes.
Génération d'un échantillon ayant la même distribution qu'un vecteur donné de taille n :
- on génère p * n valeurs au total, avec p valeurs par valeur du vecteur, en suivant une loi gaussienne dont la moyenne est la valeur du vecteur.
- Exemple : v <- c(2, 2, 4, 5, 5, 5); v2 <- rnorm(100 * length(v), mean = v, sd = 1)
- sd donne la largeur de bande, comme dans la fonction density.
Tables de lois de probabilités : pour chaque loi (par exemple, la loi normale : norm), on a :
- La fonction de densité de probabilité, préfixe "d" : dnorm (la courbe en cloche). Pour les probabilités discrètes, c'est la probabilité toute simple d'avoir une valeur donnée.
- La fonction de probabilité qui varie entre 0 et 1, préfixe "p" : pnorm (pnorm(x) est la probabilité d'avoir une valeur inférieur à x).
- La fonction quantile qui est l'inverse de la fonction de probabilité, préfixe "q" : qnorm (qnorm(y) est la valeur pour laquelle la probabilité d'être inférieure à cette valeur est y, donc qnorm(pnorm(x)) = x).
- La fonction de génération de nombres aléatoires, préfixe "r" : rnorm (génère des nombres aléatoires suivant la loi). Le premier argument est la taille de l'échantillon souhaité.
Lois pour lesquelles les fonctions d, p, q et r sont disponibles :
- [dpqr]binom(x, size, prob) : loi binomiale (x doit être entier pour dbinom, sinon le résultat est 0).
- [dpqr]geom(x, prob) : loi géométrique (p(1-p)^x)
- [dpqr]dpois(x, lambda) : loi de poisson (x doit être entier pour dpois, sinon le résultat est 0).
- [dpqr]hyper(k, K, N - K, n) où k est le nombre de boules blanches tirées, K est le nom de boules blanches total, N - K est le nombre de boules noires (N boules au total) et n est le nombre de boules tiré.
- [dpqr]norm(x, mean = 0, sd = 1) : loi normale.
- [dpqr]unif(x, min = 0, max = 1) : loi uniforme.
- [dpqr]chisq(x, df, ncp = 0) : loi du chi2.
- [dpqr]t(x, df) : loi t de Student.
- [dpqr]f(x, df1, df2, ncp) : loi F de Fisher.
- [dpqr]exp(x, rate = 1) : loi exponentielle.
- [dpqr]gamma(x, shape, rate = 1, scale = 1 / rate) : loi gamma.
- Autres lois : beta, cauchy, lnorm (log-normale), logis (logistique), nbinom(négative binomiale), weibull, wilcox.
Quantiles :
- quantile(vect, probs = seq(0, 1, 0.1)) : donne les 11 valeurs qui déterminent les intervalles de déciles (autant de valeurs renvoyées que de valeurs de probs).
- quantile(vect, probs = c(0, 1)) : équivalent simplement à range(vect) (min et max).
- quantile(vect, probs = c(0.5)) : c'est simplement la médiane !
- quantile(vect, seq(0, 1, 0.01)) : tous les percentiles
Copyright Aymeric Duclert
programmer en R, tutoriel R, graphes en R