ความหนาแน่นของการแจกแจงปกติหลายตัวแปร

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

Surajit Ray

Professor, University of Glasgow

ทำไมต้องคำนวณความหนาแน่นของการแจกแจง?

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ทำไมต้องคำนวณความหนาแน่นของการแจกแจง?

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ฟังก์ชันการแจกแจงปกติตัวแปรเดียว dnorm() normal

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ความหนาแน่นของความน่าจะเป็นของการแจกแจงปกติสองตัวแปร

การแจกแจงปกติสองตัวแปรมาตรฐาน $$ \mu = \begin{pmatrix} 0 \\ 0 \end{pmatrix} , \Sigma = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} $$ animation

dmvnorm() function

ค่าความหนาแน่นที่คำนวณ ณ ตำแหน่งต่าง ๆ (พิกัด xy)

density

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

คำนวณความหนาแน่นด้วย dmvnorm

library(mvtnorm)
dmvnorm(x, mean, sigma)
  • x สามารถเป็นเวกเตอร์แถวหรือเมทริกซ์ก็ได้

 

mu1 <- c(1, 2)
sigma1 <- matrix(c(1, .5, .5, 2), 2)
dmvnorm(x = c(0, 0), mean = mu1, sigma = sigma1)
0.0384
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

คำนวณความหนาแน่นหลายจุดด้วย dmvnorm

x <- rbind(c(0, 0), c(1, 1), c(0, 1)); x 
[1,]    0    0
[2,]    1    1
[3,]    0    1

 

dmvnorm(x = x, mean = mu, sigma = sigma)
[1] 0.0384 0.0904 0.0679
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

พล็อตความหนาแน่นสองตัวแปรด้วย perspective plot

ขั้นตอน:

  • สร้างกริดพิกัด $x$ และ $y$
  • คำนวณความหนาแน่นบนกริด

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

พล็อตความหนาแน่นสองตัวแปรด้วย perspective plot

ขั้นตอน:

  • สร้างกริดพิกัด $x$ และ $y$
  • คำนวณความหนาแน่นบนกริด
  • แปลงค่าความหนาแน่นให้เป็นเมทริกซ์
  • สร้าง perspective plot ด้วยฟังก์ชัน persp()

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

โค้ดสำหรับพล็อตความหนาแน่นสองตัวแปร

# Create grid
d <- expand.grid(seq(-3, 6, length.out = 50 ), seq(-3,  6, length.out = 50))                   

# Calculate density on grid
dens1 <- dmvnorm(as.matrix(d), mean=c(1,2), sigma=matrix(c(1, .5, .5, 2), 2))

# Convert to matrix 
dens1 <-  matrix(dens1, nrow = 50 )

# Use perspective plot
persp(dens1, theta = 80, phi = 30, expand = 0.6, shade = 0.2, col = "lightblue", xlab = "x", ylab = "y", zlab = "dens")

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

การปรับมุมมองใน perspective plot

persp() with theta = 30, phi = 30

persp() with theta = 80, phi = 10

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

มาฝึกกันเถอะ!

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

Preparing Video For Download...