Find the truncation point for the top 10% of the density area

I want to obscure the area where 10% are localized. I just arbitrarily set a truncation point of 65 to just build this plot. This is what I intend to find ... for each dataset.

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

+4
source share
2 answers

I think you are looking for the quantile() function:

 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

+10
source

You are looking for quantiles. http://en.wikipedia.org/wiki/Quantile

0
source

Source: https://habr.com/ru/post/1380996/


All Articles