Lois de répartitions sous R
L'essentiel de cette page
On peut simuler les données sous R selon différentes lois de répartitions.
Pour chaque loi, on a une fonction commençant par d, une par p, une par q et l'autre par r.
d : densité de probabilité
p : probabilité cumulées
q : quantiles
r : random - générateur de données aléatoires suivant cette loi
Ces lois de répartitions peuvent aussi être contrôlées par différents graphiques et tests disponibles à cette page.
Loi bêta : dbeta, pbeta, qbeta, rbeta
Loi binomiale : dbinom, pbinom, qbinom, rbinom
Loi de Cauchy : dcauchy, pcauchy, qcauchy, rcauchy
Loi χ2 (khi-deux, khi carré) : dchisq, pchisq, qchisq, rchisq
Loi exponentielle : dexp, pexp, qexp, rexp
Loi F de Fisher : df, pf, qf, rf
Loi gamma : dgamma, pgamma, qgamma, rgamma
Loi géométrique : dgeom, pgeom, qgeom, rgeom
Loi hypergéométrique : dhyper, phyper, qhyper, rhyper
Loi log-normale : dlnorm, plnorm, qlnorm, rlnorm
Loi multinomiale : dmultinom, pmultinom, qmultinom, rmultinom
Loi binomiale négative : dnbinom, pnbinom, qnbinom, rnbinom
Loi normale : dnorm, pnorm, qnorm, rnorm
Loi de Poisson : dpois, ppois, qpois, rpois
Loi t de Student : dt, pt, qt, rt
Loi uniforme : dunif, punif, qunif, runif
Loi de Weibull : dweibull, pweibull, qweibull, rweibull1
Loi beta permet de modéliser des courbes très diverses de probabilité entre 0 et 1.
On peut l'adapter ainsi pour faire des simulations de données en fixant les valeurs min, max, l'écart-type, le mode, comme dans cet exemple :
# Fonction pour générer des données beta avec transformation
generate_custom_data <- function(min_val, max_val, mode_val, sd_val, n) {
# Calculer les paramètres alpha et beta de la distribution beta
range_val <- max_val - min_val
mean_val <- (min_val + max_val + mode_val) / 3
variance <- sd_val^2
alpha <- (mean_val - min_val) * (2 * (max_val - mean_val) / variance - 1)
beta <- alpha * (max_val - mean_val) / (mean_val - min_val)
# Vérifier que alpha et beta sont valides
if (alpha <= 0 | beta <= 0) {
stop("Les paramètres calculés pour alpha et beta ne sont pas valides.")
}
# Générer les données beta
beta_data <- rbeta(n, alpha, beta)
# Transformer les données beta pour correspondre à [min_val, max_val]
data <- min_val + range_val * beta_data
return(data)
}
# Définir les paramètres
min_val <- 1
max_val <- 10
mode_val <- 8
sd_val <- 2 # exemple d'écart-type
n <- 1000 # taille du vecteur
# Générer le vecteur de données
data <- generate_custom_data(min_val, max_val, mode_val, sd_val, n) ; hist(data)
Loi triangulaire
Une répartition triangulaire permet de fixer le minimum, le maximum et la place du sommet (mode).
library(triangle)
# Définir les paramètres
min_val <- 1
max_val <- 10
mode_val <- 5
n <- 1000 # taille du vecteur
# Générer le vecteur de données
data <- rtriangle(n, a = min_val, b = max_val, c = mode_val)
hist(data)