quantile {base} | R Documentation |
Sample Quantiles
Description
The generic function quantile
produces sample quantiles
corresponding to the given probabilities.
The smallest observation corresponds to a probability of 0 and the
largest to a probability of 1.
Usage
## Default S3 method:
quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,
names = TRUE, ...)
Arguments
x |
numeric vectors whose sample quantiles are wanted. |
probs |
numeric vector with values in |
na.rm |
logical; if true, any |
names |
logical; if true, the result has a |
... |
further arguments passed to or from other methods. |
Details
A vector of length length(probs)
is returned;
if names = TRUE
, it has a names
attribute.
quantile(x,p)
as a function of p
linearly interpolates
the points ( (i-1)/(n-1), ox[i] ), where
ox <- sort(x)
and n <- length(x)
.
This gives quantile(x, p) == (1-f)*ox[i] + f*ox[i+1]
, where
r <- 1 + (n-1)*p
, i <- floor(r)
, f <- r - i
and ox[n+1] := ox[n]
.
NA
and NaN
values in probs
are
propagated to the result.
See Also
ecdf
(in the stepfun
package) for
empirical distributions of which quantile
is the "inverse".
boxplot.stats
and fivenum
for computing
“versions” of quartiles, etc.
Examples
quantile(x <- rnorm(1001))# Extremes & Quartiles by default
quantile(x, probs=c(.1,.5,1,2,5,10,50, NA)/100)
n <- length(x) ## the following is exact, because 1/(1001-1) is exact:
stopifnot(sort(x) == quantile(x, probs = ((1:n)-1)/(n-1), names=FALSE))
n <- 777
ox <- sort(x <- round(rnorm(n),1))# round() produces ties
ox <- c(ox, ox[n]) #- such that ox[n+1] := ox[n]
p <- c(0,1,runif(100))
i <- floor(r <- 1 + (n-1)*p)
f <- r - i
all(abs(quantile(x,p) - ((1-f)*ox[i] + f*ox[i+1])) < 20*.Machine$double.eps)