Найти точку усечения для топ 10% на графике плотности - PullRequest
4 голосов
/ 13 ноября 2011

Я хочу заштриховать регион, где локализованы 10% лучших. Я просто произвольно поставил точку усечения 65, чтобы просто построить этот график. Это то, что я собираюсь найти ... для каждого набора данных.

xf <- rnorm(40000, 50, 10);
plot(density(xf),xlim=c(0,100), main = paste(names(xf), "distribution"))
dens <- density(xf)
x1 <- min(which(dens$x >= 65)) # I want identify this point such that 
# the shaded region includes top 10%

x2 <- max(which(dens$x <  max(dens$x)))
with(dens, polygon(x=c(x[c(x1,x1:x2,x2)]), y= c(0, y[x1:x2], 0), col="green"))
abline(v= mean(traitF2),  col = "black", lty = 1, lwd =2)

enter image description here

Ответы [ 2 ]

10 голосов
/ 13 ноября 2011

Я думаю, вы ищете функцию quantile():

xf <- rnorm(40000, 50, 10)
plot(density(xf),xlim=c(0,100), main = paste(names(xf), "distribution"))
dens <- density(xf)
x1 <- min(which(dens$x >= quantile(xf, .90))) # quantile() ftw!

x2 <- max(which(dens$x <  max(dens$x)))
with(dens, polygon(x=c(x[c(x1,x1:x2,x2)]), y= c(0, y[x1:x2], 0), col="green"))

enter image description here

0 голосов
/ 13 ноября 2011

Вы ищете квантили.http://en.wikipedia.org/wiki/Quantile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...