วิธีการจำลองและพล็อตการแจกแจงแบบปกติของตัวแปรคู่ใน 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)

นอกจากนี้เรายังสามารถใช้ฟังก์ชัน 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 ')

ต่อไปนี้คือสิ่งที่แต่ละอาร์กิวเมนต์ของฟังก์ชัน persp() ทำ:
- theta, phi : ตั้งค่ามุมทิศทางการรับชม
- ขยาย : ควบคุมขนาดของแกน z
- Ticktype : ควบคุมลักษณะของเห็บบนแกน
ผลลัพธ์ที่ได้คือพล็อตพื้นผิว 3 มิติของการแจกแจงแบบปกติของตัวแปรคู่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีใช้การแจกแจงความน่าจะเป็นแบบอื่นๆ ใน R:
วิธีใช้การแจกแจงแบบปกติใน R
วิธีใช้การแจกแจงแบบทวินามใน R
วิธีใช้การแจกแจงปัวซองใน R
วิธีใช้การแจกแจงพหุนามใน R