Compute the median or quantiles a set of numbers which have weights associated with them.
weighted.median(x, w, na.rm = TRUE, type = 2)weighted.quantile(x, w, probs = seq(0, 1, 0.25), na.rm = TRUE, type = 4)
A numeric vector.
a numeric vector of values
a numeric vector of weights
a logical indicating whether to ignore NA
values
Integer specifying the rule for calculating the median or
quantile, corresponding to the rules available for stats:quantile()
.
The only valid choices are type=1, 2 or 4. See Details.
probabilities for which the quantiles should be computed, a numeric vector of values between 0 and 1
The i
th observation x[i]
is treated as having a weight proportional to
w[i]
.
The weighted median is a value m
such that the total weight of data less
than or equal to m
is equal to half the total weight. More generally, the
weighted quantile with probability p
is a value q
such that the total
weight of data less than or equal to q
is equal to p
times the total
weight.
If there is no such value, then
if type = 1
, the next largest value is returned (this is the
right-continuous inverse of the left-continuous cumulative distribution
function);
if type = 2
, the average of the two surrounding values is returned
(the average of the right-continuous and left-continuous inverses);
if type = 4
, linear interpolation is performed.
Note that the default rule for weighted.median()
is type = 2
, consistent
with the traditional definition of the median, while the default for
weighted.quantile()
is type = 4
.
x <- 1:20
w <- runif(20)
weighted.median(x, w)
weighted.quantile(x, w)
Run the code above in your browser using DataLab