1. ホーム
  2. r

[解決済み] 2点間のカーネル密度プロットをシェーディングする。

2023-01-07 03:12:52

質問

私は分布を説明するためにカーネル密度プロットを頻繁に使用します。これらはRでこのように簡単に素早く作成できます。

set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))

これで、この素敵な小さなPDFが出来上がりました。

PDFの下の領域を75%から95%まで陰影をつけたいのですが、どうすればよいでしょうか?ポイントを計算するのは簡単です。 quantile 関数を使って簡単に計算できます。

q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)

の間の領域はどのようにシェーディングすればよいのでしょうか? q75q95 ?

どのように解決するのですか?

を使用して polygon() 関数については、そのヘルプページを参照してください。また、ここでも同様の質問があったと思います。

分位値のインデックスを求める必要があり、実際の (x,y) のペアを取得する必要があります。

編集してください。 お待たせしました。

x1 <- min(which(dens$x >= q75))  
x2 <- max(which(dens$x <  q95))
with(dens, polygon(x=c(x[c(x1,x1:x2,x2)]), y= c(0, y[x1:x2], 0), col="gray"))

出力(JDLで追加)