Medianas ponderadas en R
La mediana de 1:3
es 2. Pero puede ser que queramos dar a 1:3
los pesos 2, 1, 2. En ese caso, el cálculo de la mediana sigue siendo sencillo (y sigue siendo 2). Pero la situación puede complicarse más.
Mientras los pesos sean enteros, todavía pueden usarse trucos:
x <- 1:3
pesos <- c(2,1,2)
median(rep(x, times = pesos ))
¿Pero qué hacemos cuando hay pesos fraccionarios? Bueno, en realidad, podemos ordenar:
n <- 1000
x <- runif(n)
pesos <- runif(n)
o <- order(x)
x.o <- x[o]
pesos.o <- pesos[o]
x.o[min(which(cumsum(pesos.o) > .5 * sum(pesos.o)))]
Pero me parece más limpio usar el paquete quantreg
: