วิธีการจำลองและพล็อตการแจกแจงแบบปกติของตัวแปรคู่ใน r


ในสถิติ ตัวแปรสองตัวเป็นไปตาม การแจกแจงแบบปกติแบบสองตัวแปร หากตัวแปรทั้งสองมีการแจกแจงแบบปกติเมื่อรวมเข้าด้วยกัน

บทช่วยสอนนี้จะอธิบายวิธีการทำงานต่อไปนี้ใน R:

  • จำลองการแจกแจงแบบปกติของตัวแปรคู่
  • พล็อตการแจกแจงแบบปกติแบบไบวาเรียตโดยใช้โครงร่าง (พล็อต 2D)
  • พล็อตการแจกแจงแบบปกติของตัวแปรคู่โดยใช้พล็อตพื้นผิว (พล็อต 3 มิติ)

ไปกันเถอะ!

ตัวอย่างที่ 1: จำลองการแจกแจงแบบปกติของตัวแปรคู่ใน R

วิธีที่ง่ายที่สุดในการจำลองการแจกแจงแบบปกติแบบไบวาเรียตใน R คือการใช้ฟังก์ชัน mvrnorm() จากแพ็คเกจ MASS

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้เพื่อจำลองการแจกแจงแบบปกติแบบสองตัวแปรในทางปฏิบัติ:

 library (MASS)

#make this example reproducible
set. seed ( 0 )

#simulate bivariate normal distribution
bivariate_data <- as. data . frame (mvrnorm(n= 100 ,
                                        mu=c(0, 0),
                                        Sigma=matrix(c(5, 3, 4, 4), ncol= 2 )))

#view first six rows of bivariate dataset
head(bivariate_data)

           V1 V2
1 -2.03600343 -2.9623059
2 0.07719131 1.2948982
3 -3.26729701 -1.7928069
4 -2.62985132 -2.3015471
5 -1.75126215 0.3056698
6 3.67698436 2.2020238

ต่อไปนี้คือสิ่งที่แต่ละอาร์กิวเมนต์ของฟังก์ชัน mvrnorm() ทำ:

  • n : กำหนดขนาดตัวอย่าง
  • mu : กำหนดค่าเฉลี่ยของแต่ละตัวแปร
  • ซิกมา : กำหนดเมทริกซ์ความแปรปรวนร่วมของตัวแปรทั้งสอง

ผลลัพธ์ที่ได้คือกรอบข้อมูลที่มีตัวแปรสองตัวที่เป็นไปตามการแจกแจงแบบปกติเมื่อรวมเข้าด้วยกัน

ตัวอย่างที่ 2: พล็อตการแจกแจงแบบปกติแบบสองตัวแปร

วิธีที่ง่ายที่สุดในการพล็อตการแจกแจงแบบปกติแบบไบวาเรียตใน R คือการใช้ฟังก์ชันในแพ็คเกจ mnormt()

ตัวอย่างเช่น เราสามารถใช้ฟังก์ชัน Contour() ของแพ็คเกจนี้เพื่อสร้างพล็อตรูปร่าง ซึ่งแสดงภาพ 2 มิติของการแจกแจงแบบปกติของตัวแปรคู่:

 library (mnormt)

#make this example reproducible
set. seed ( 0 )

#create bivariate normal distribution
x <- seq(-3, 3, 0.1) 
y <- seq(-3, 3, 0.1)
mu <- c(0, 0)
sigma <- matrix(c(2, -1, -1, 2), nrow= 2 )
f <- function(x, y) dmnorm(cbind(x, y), mu, sigma)
z <- outer(x, y, f)

#create contour plot
contour(x, y, z)

แปรผันโครงร่างปกติใน R

นอกจากนี้เรายังสามารถใช้ฟังก์ชัน persp() เพื่อสร้างพล็อตพื้นผิว ซึ่งแสดงภาพ 3 มิติของการแจกแจงแบบปกติของตัวแปรคู่:

 library (mnormt)

#make this example reproducible
set. seed ( 0 )

#create bivariate normal distribution
x <- seq(-3, 3, 0.1) 
y <- seq(-3, 3, 0.1)
mu <- c(0, 0)
sigma <- matrix(c(2, -1, -1, 2), nrow= 2 )
f <- function(x, y) dmnorm(cbind(x, y), mu, sigma)
z <- outer(x, y, f)

#create surface plot
persp(x, y, z, theta= -30 , phi= 25 , expand= 0.6 , ticktype=' detailed ')

แปลงพล็อตพื้นผิวการกระจายแบบปกติแบบไบวาริเอตใน R

ต่อไปนี้คือสิ่งที่แต่ละอาร์กิวเมนต์ของฟังก์ชัน persp() ทำ:

  • theta, phi : ตั้งค่ามุมทิศทางการรับชม
  • ขยาย : ควบคุมขนาดของแกน z
  • Ticktype : ควบคุมลักษณะของเห็บบนแกน

ผลลัพธ์ที่ได้คือพล็อตพื้นผิว 3 มิติของการแจกแจงแบบปกติของตัวแปรคู่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีใช้การแจกแจงความน่าจะเป็นแบบอื่นๆ ใน R:

วิธีใช้การแจกแจงแบบปกติใน R
วิธีใช้การแจกแจงแบบทวินามใน R
วิธีใช้การแจกแจงปัวซองใน R
วิธีใช้การแจกแจงพหุนามใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *