密度プロットの確率をどのように計算しますか?

Aug 17 2020

次の質問があります:密度プロットの確率を計算することは可能ですか?

たとえば、次のデータフレームがあります

 test<- data.frame(
  Gruppe = rep(c("Aktien","Aktien"), 
               times=c(136, 37)),
  Zufriedenheit = c(f_keineErf, f_Erf))

そして、deggplot関数を使用して密度プロットをプロットします。

 ggplot(test, aes(x=Zufriedenheit)) +geom_density()

たとえば70を超える値を取得する確率を計算するにはどうすればよいですか?

ありがとうございました!

回答

2 AllanCameron Aug 17 2020 at 22:54

あなたのデータは質問に含まれていないので、小さなランダムサンプルを作りましょう:

library(ggplot2)

set.seed(69)

df <- data.frame(x = rnorm(10))

これで、例に従って密度プロットを作成できます。

p <- ggplot(df, aes(x)) + 
  geom_density() +
  xlim(c(-5, 5))

p

これで、ベースR関数を使用して、この線のx座標とy座標を実際に見つけ、densityそのx成分とy成分をデータフレームに抽出できます。

dens <- density(df$x) d <- data.frame(x = dens$x, y = dens$y)

head(d)
#>           x            y
#> 1 -3.157056 0.0009453767
#> 2 -3.144949 0.0010145927
#> 3 -3.132841 0.0010870523
#> 4 -3.120733 0.0011665920
#> 5 -3.108625 0.0012488375
#> 6 -3.096517 0.0013382316

これを赤い破線geom_lineでプロットすると、次と同じになりますgeom_density

p + geom_line(data = d, aes(x, y), col = "red", linetype = 2, size = 2) 

ここで、複数の値を持つ確率を知りたいとします。興味のあるエリアを次のように表示できます。

p + geom_area(data = d[d$x >= 1,], aes(x, y), fill = "red")

x値はすべてデータフレーム内で等間隔に配置されているためd、線の下の領域の赤い領域の比率は、1より大きいx値でのすべてのy値の合計とyの総和の単純な比率です。

sum(d$y[d$x > 1])/sum(d$y)
#> [1] 0.1599931

したがって、x値が1より大きい場合の確率は、0.15999、つまり16%です。

reprexパッケージ(v0.3.0)によって2020-08-17に作成されました