Un guide sur dnorm, pnorm, qnorm et rnorm dans R
La distribution normale est la distribution la plus couramment utilisée en statistiques. Ce didacticiel explique comment utiliser la distribution normale dans R à l’aide des fonctions dnorm , pnorm , rnorm et qnorm .
dnorme
La fonction dnorm renvoie la valeur de la fonction de densité de probabilité (pdf) de la distribution normale étant donné une certaine variable aléatoire x , une moyenne de population μ et un écart type de population σ . La syntaxe d’utilisation de dnorm est la suivante :
dnorm(x, moyenne, sd)
Le code suivant illustre quelques exemples de dnorm en action :
#find the value of the standard normal distribution pdf at x=0 dnorm(x=0, mean=0, sd=1) # [1] 0.3989423 #by default, R uses mean=0 and sd=1 dnorm(x=0) # [1] 0.3989423 #find the value of the normal distribution pdf at x=10 with mean=20 and sd=5 dnorm(x=10, mean=20, sd=5) # [1] 0.01079819
Généralement, lorsque vous essayez de résoudre des questions sur la probabilité en utilisant la distribution normale, vous utiliserez souvent pnorm au lieu de dnorm . Une application utile de dnorm , cependant, consiste à créer un diagramme de distribution normale dans R. Le code suivant illustre comment procéder :
#Create a sequence of 100 equally spaced numbers between -4 and 4 x <- seq(-4, 4, length=100) #create a vector of values that shows the height of the probability distribution #for each value in x y <- dnorm(x) #plot x and y as a scatterplot with connected lines (type = "l") and add #an x-axis with custom labels plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "") axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))
Cela génère le tracé suivant :
pnorm
La fonction pnorm renvoie la valeur de la fonction de densité cumulative (cdf) de la distribution normale étant donné une certaine variable aléatoire q , une moyenne de population μ et un écart type de population σ . La syntaxe d’utilisation de pnorm est la suivante :
pnorm(q, moyenne, sd)
En termes simples, pnorm renvoie l’aire à gauche d’une valeur donnée x dans la distribution normale. Si vous êtes intéressé par la zone à droite d’une valeur donnée q , vous pouvez simplement ajouter l’argument lower.tail = FALSE
pnorm(q, moyenne, sd, lower.tail = FALSE)
Les exemples suivants illustrent comment résoudre certaines questions de probabilité à l’aide de pnorm.
Exemple 1 : Supposons que la taille des hommes dans une certaine école soit normalement distribuée avec une moyenne de un écart type de
#find percentage of males that are taller than 74 inches in a population with #mean = 70 and sd = 2 pnorm(74, mean=70, sd=2, lower.tail=FALSE) # [1] 0.02275013
Dans cette école, 2,275 % des hommes mesurent plus de 74 pouces.
Exemple 2 : Supposons que le poids d’une certaine espèce de loutre soit normalement distribué avec une moyenne de un écart type de
#find percentage of otters that weight less than 22 lbs in a population with #mean = 30 and sd = 5 pnorm(22, mean=30, sd=5) # [1] 0.05479929
Environ 5,4799 % de cette espèce de loutre pèse moins de 22 livres.
Exemple 3 : Supposons que la hauteur des plantes dans une certaine région soit normalement distribuée avec une moyenne de un écart type de
#find percentage of plants that are less than 14 inches tall, then subtract the #percentage of plants that are less than 10 inches tall, based on a population #with mean = 13 and sd = 2 pnorm(14, mean=13, sd=2) - pnorm(10, mean=13, sd=2) # [1] 0.6246553
Environ 62,4655 % des plantes de cette région mesurent entre 10 et 14 pouces de hauteur.
qnorme
La fonction qnorm renvoie la valeur de la fonction de densité cumulative inverse (cdf) de la distribution normale étant donné une certaine variable aléatoire p , une moyenne de population μ et un écart type de population σ . La syntaxe d’utilisation de qnorm est la suivante :
qnorme (p, moyenne, sd)
En termes simples, vous pouvez utiliser qnorm pour découvrir quel est le score Z du p ème quantile de la distribution normale.
Le code suivant illustre quelques exemples de qnorm en action :
#find the Z-score of the 99th quantile of the standard normal distribution qnorm(.99, mean=0, sd=1) # [1] 2.326348 #by default, R uses mean=0 and sd=1 qnorm(.99) # [1] 2.326348 #find the Z-score of the 95th quantile of the standard normal distribution qnorm(.95) # [1] 1.644854 #find the Z-score of the 10th quantile of the standard normal distribution qnorm(.10) # [1] -1.281552
rnorme
La fonction rnorm génère un vecteur de variables aléatoires normalement distribuées étant donné une longueur de vecteur n , une moyenne de population μ et un écart type de population σ . La syntaxe d’utilisation de rnorm est la suivante :
rnorm(n, moyenne, sd)
Le code suivant illustre quelques exemples de rnorm en action :
#generate a vector of 5 normally distributed random variables with mean=10 and sd=2 five <- rnorm(5, mean = 10, sd = 2) five # [1] 10.658117 8.613495 10.561760 11.123492 10.802768 #generate a vector of 1000 normally distributed random variables with mean=50 and sd=5 narrowDistribution <- rnorm(1000, mean = 50, sd = 15) #generate a vector of 1000 normally distributed random variables with mean=50 and sd=25 wideDistribution <- rnorm(1000, mean = 50, sd = 25) #generate two histograms to view these two distributions side by side, specify #50 bars in histogram and x-axis limits of -50 to 150 par(mfrow=c(1, 2)) #one row, two columns hist(narrowDistribution, breaks=50, xlim=c(-50, 150)) hist(wideDistribution, breaks=50, xlim=c(-50, 150))
Cela génère les histogrammes suivants :
Remarquez à quel point la distribution large est beaucoup plus étendue que la distribution étroite. En effet, nous avons spécifié que l’écart type dans la distribution large était de 25, contre seulement 15 dans la distribution étroite. Notez également que les deux histogrammes sont centrés autour de la moyenne de 50.