Normal {stats} | R Documentation |
Density, distribution function, quantile function and random
generation for the normal distribution with mean equal to mean
and standard deviation equal to sd
.
dnorm(x, mean = 0, sd = 1, log = FALSE) pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) rnorm(n, mean = 0, sd = 1)
x,q |
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
mean |
vector of means. |
sd |
vector of standard deviations. |
log, log.p |
logical; if TRUE, probabilities p are given as log(p). |
lower.tail |
logical; if TRUE (default), probabilities are P[X ≤ x] otherwise, P[X > x]. |
If mean
or sd
are not specified they assume the default
values of 0
and 1
, respectively.
The normal distribution has density
f(x) = 1/(√(2 π) σ) e^-((x - μ)^2/(2 σ^2))
where μ is the mean of the distribution and σ the standard deviation.
qnorm
is based on Wichura's algorithm AS 241 which provides
precise results up to about 16 digits.
dnorm
gives the density,
pnorm
gives the distribution function,
qnorm
gives the quantile function, and
rnorm
generates random deviates.
For pnorm
, based on
Cody, W. D. (1993) Algorithm 715: SPECFUN – A portable FORTRAN package of special function routines and test drivers. ACM Transactions on Mathematical Software 19, 22–32.
For qnorm
, the code is a C translation of
Wichura, M. J. (1988) Algorithm AS 241: The Percentage Points of the Normal Distribution. Applied Statistics, 37, 477–484.
For rnorm
, see RNG for how to select the algorithm and
for references to the supplied methods.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, volume 1, chapter 13. Wiley, New York.
Distributions for other standard distributions, including
dlnorm
for the Lognormal distribution.
require(graphics) dnorm(0) == 1/ sqrt(2*pi) dnorm(1) == exp(-1/2)/ sqrt(2*pi) dnorm(1) == 1/ sqrt(2*pi*exp(1)) ## Using "log = TRUE" for an extended range : par(mfrow=c(2,1)) plot(function(x) dnorm(x, log=TRUE), -60, 50, main = "log { Normal density }") curve(log(dnorm(x)), add=TRUE, col="red",lwd=2) mtext("dnorm(x, log=TRUE)", adj=0) mtext("log(dnorm(x))", col="red", adj=1) plot(function(x) pnorm(x, log.p=TRUE), -50, 10, main = "log { Normal Cumulative }") curve(log(pnorm(x)), add=TRUE, col="red",lwd=2) mtext("pnorm(x, log=TRUE)", adj=0) mtext("log(pnorm(x))", col="red", adj=1) ## if you want the so-called 'error function' erf <- function(x) 2 * pnorm(x * sqrt(2)) - 1 ## (see Abramowitz and Stegun 29.2.29) ## and the so-called 'complementary error function' erfc <- function(x) 2 * pnorm(x * sqrt(2), lower = FALSE) ## and the inverses erfinv <- function (x) qnorm((1 + x)/2)/sqrt(2) erfcinv <- function (x) qnorm(x/2, lower = FALSE)/sqrt(2)