quantile {base} | R Documentation |
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.
## Default S3 method:
quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,
names = TRUE, ...)
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. |
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 <- order(x)
(the “order statistics”) 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.
ecdf
for empirical distributions of
which quantile
is the "inverse".
boxplot.stats
and fivenum
for computing
“versions” of quartiles, etc.
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)