Una guida a dnorm, pnorm, qnorm e rnorm in r


La distribuzione normale è la distribuzione più comunemente utilizzata in statistica. Questo tutorial spiega come utilizzare la distribuzione normale in R utilizzando le funzioni dnorm , pnorm , rnorm e qnorm .

dnormo

La funzione dnorm restituisce il valore della funzione di densità di probabilità (pdf) della distribuzione normale data una variabile casuale x , una media della popolazione μ e una deviazione standard della popolazione σ . La sintassi per utilizzare dnorm è la seguente:

dnorm(x, media, sd)

Il codice seguente mostra alcuni esempi di dnorm in azione:

 #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

In genere, quando si tenta di risolvere domande sulla probabilità utilizzando la distribuzione normale, si utilizza spesso pnorm anziché dnorm . Un’applicazione utile di dnorm , tuttavia, è creare un grafico di distribuzione normale in R. Il codice seguente illustra come eseguire questa operazione:

 #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"))

Questo genera il seguente grafico:

norma

La funzione pnorm restituisce il valore della funzione di densità cumulativa (cdf) della distribuzione normale data una variabile casuale q , una media della popolazione μ e una deviazione standard della popolazione σ . La sintassi per utilizzare pnorm è la seguente:

pnorm(q, media, sd)

In termini semplici, pnorm restituisce l’area a sinistra di un dato valore x nella distribuzione normale. Se sei interessato all’area a destra di un dato valore q , puoi semplicemente aggiungere l’argomento lower.tail = FALSE

pnorm(q, media, sd, lower.tail = FALSE)

I seguenti esempi illustrano come risolvere alcune domande di probabilità utilizzando pnorm.

Esempio 1: supponiamo che l’altezza degli uomini in una certa scuola sia distribuita normalmente con una media di una deviazione standard di

 #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

In questa scuola, il 2,275% degli uomini sono alti più di 74 pollici.

Esempio 2: supponiamo che il peso di una certa specie di lontra sia distribuito normalmente con una media di una deviazione standard di

 #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

Circa il 5,4799% di questa specie di lontra pesa meno di 22 libbre.

Esempio 3: supponiamo che l’altezza delle piante in una determinata regione sia distribuita normalmente con una media di una deviazione standard di

 #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

Circa il 62,4655% delle piante in questa regione sono alte tra 10 e 14 pollici.

qnorma

La funzione qnorm restituisce il valore della funzione di densità cumulativa inversa (cdf) della distribuzione normale data una variabile casuale p , una media della popolazione μ e una deviazione standard della popolazione σ . La sintassi per utilizzare qnorm è la seguente:

qnorm (p, media, sd)

In termini semplici, puoi usare qnorm per scoprire qual è il punteggio Z del p-esimo quantile della distribuzione normale.

Il codice seguente mostra alcuni esempi di qnorm in azione:

 #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

norma

La funzione rnorm genera un vettore di variabili casuali normalmente distribuite data una lunghezza del vettore n , una media della popolazione μ e una deviazione standard della popolazione σ . La sintassi per utilizzare rnorm è la seguente:

rnorm(n, media, sd)

Il codice seguente mostra alcuni esempi di rnorm in azione:

 #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))

Questo genera i seguenti istogrammi:

Si noti come la distribuzione ampia sia molto più ampia di quella ristretta. Abbiamo infatti specificato che la deviazione standard nella distribuzione ampia era pari a 25, contro solo 15 nella distribuzione ristretta. Si noti inoltre che entrambi gli istogrammi sono centrati attorno alla media di 50.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *