2011-11-13 9 views
4

上位10%がローカライズされている領域をシェードしたい。私はちょうどこのプロットをプロットするために切り捨て点65を任意に設定します。それは私が探していることです...すべてのデータセットについてです。密度プロットの上位10%の切り捨て点を見つけよう

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

答えて

10

私はあなたが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

あなたは分位を探しています。 http://en.wikipedia.org/wiki/Quantile

+2

が、これは偉大なコメント答えとして、それを改善してください答えていないようだがと...助けてくれてありがとう。私の評判の一部、冗談だけ – jon

+0

なぜこれはdownvotedされましたか?それは質問に答える! –

+0

質問はあなたが探しているものを知っていれば私にとっては完璧な質問なので、私の短い答えです... – Niclas

関連する問題