คำนวณความน่าจะเป็นของพล็อตความหนาแน่นได้อย่างไร?

Aug 17 2020

ฉันมีคำถามต่อไปนี้: สามารถคำนวณความน่าจะเป็นของพล็อตความหนาแน่นได้หรือไม่?

ตัวอย่างเช่นฉันมีกรอบข้อมูลต่อไปนี้

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

และฉันวางพล็อตความหนาแน่นด้วยฟังก์ชัน de ggplot:

 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

ตอนนี้เราสามารถค้นหาพิกัด x และ y ของเส้นนี้ได้โดยใช้ฟังก์ชัน R ฐาน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ดังนั้นสัดส่วนพื้นที่สีแดงของพื้นที่ใต้เส้นจึงเป็นอัตราส่วนง่ายๆของผลรวมของค่า y ทั้งหมดที่ค่า x มากกว่าหนึ่งต่อผลรวมของ y:

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

ดังนั้นความน่าจะเป็นที่จะได้ค่า x> 1 คือ 0.15999 หรือ 16%

สร้างเมื่อ 2020-08-17 โดยแพ็คเกจ reprex (v0.3.0)