คำแนะนำเกี่ยวกับ dnorm, pnorm, qnorm และ rnorm ใน r


การแจกแจงแบบปกติ คือการแจกแจงที่ใช้กันมากที่สุดในสถิติ บทช่วยสอนนี้จะอธิบายวิธีใช้การแจกแจงแบบปกติใน R โดยใช้ฟังก์ชัน dnorm , pnorm , rnorm และ qnorm

ไร้สาระ

ฟังก์ชัน dnorm ส่งกลับค่าของฟังก์ชันความหนาแน่นของความน่าจะเป็น (pdf) ของการแจกแจงแบบปกติโดยมีตัวแปรสุ่มบางตัว x ค่าเฉลี่ยประชากร μ และค่าเบี่ยงเบนมาตรฐานของประชากร σ ไวยากรณ์สำหรับการใช้ dnorm มีดังนี้:

dnorm(x, ค่าเฉลี่ย, sd)

รหัสต่อไปนี้สาธิตตัวอย่างการทำงานของ dnorm :

 #find the value of the standard normal distribution pdf at x=0
dnorm(x=0, mean=0, sd=1)
#[1]0.3989423

#by default, R uses mean=0 and sd=1
dnorm(x=0)
#[1]0.3989423

#find the value of the normal distribution pdf at x=10 with mean=20 and sd=5
dnorm(x=10, mean=20, sd=5)
#[1]0.01079819

โดยทั่วไป เมื่อพยายามแก้คำถามเกี่ยวกับความน่าจะเป็นโดยใช้การแจกแจงแบบปกติ คุณมักจะใช้ pnorm แทน dnorm อย่างไรก็ตาม แอปพลิเคชันที่มีประโยชน์ของ dnorm คือการสร้างพล็อตการแจกแจงแบบปกติใน R โค้ดต่อไปนี้แสดงวิธีการทำเช่นนี้:

 #Create a sequence of 100 equally spaced numbers between -4 and 4
x <- seq(-4, 4, length=100)

#create a vector of values that shows the height of the probability distribution
#for each value in x
y <- dnorm(x)

#plot x and y as a scatterplot with connected lines (type = "l") and add
#an x-axis with custom labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

สิ่งนี้จะสร้างพล็อตต่อไปนี้:

พรหมจรรย์

ฟังก์ชัน pnorm ส่งกลับค่าของฟังก์ชันความหนาแน่นสะสม (cdf) ของการแจกแจงแบบปกติโดยให้ตัวแปรสุ่มบางตัว q ค่าเฉลี่ยประชากร μ และค่าเบี่ยงเบนมาตรฐานของประชากร σ ไวยากรณ์สำหรับการใช้ pnorm มีดังนี้:

pnorm(q, ค่าเฉลี่ย, sd)

กล่าวง่ายๆ ก็คือ pnorm จะคืนค่าพื้นที่ทางด้านซ้ายของค่าที่กำหนด x ในการแจกแจงแบบปกติ หากคุณสนใจพื้นที่ทางด้านขวาของค่า q ที่กำหนด คุณสามารถเพิ่มอาร์กิวเมนต์ lower.tail = FALSE ได้

pnorm(q, เฉลี่ย, sd, lower.tail = FALSE)

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการแก้คำถามความน่าจะเป็นโดยใช้ pnorm

ตัวอย่างที่ 1: สมมติว่าความสูงของผู้ชายในโรงเรียนบางแห่งโดยปกติจะแจกแจงด้วยค่าเฉลี่ย ค่าเบี่ยงเบนมาตรฐาน

 #find percentage of males that are taller than 74 inches in a population with
#mean = 70 and sd = 2
pnorm(74, mean=70, sd=2, lower.tail=FALSE)

# [1]0.02275013

ที่โรงเรียนนี้ ผู้ชาย 2,275% สูงเกิน 74 นิ้ว

ตัวอย่างที่ 2: สมมติว่าน้ำหนักของนากบางสายพันธุ์ปกติจะกระจายโดยมีค่าเฉลี่ย ค่าเบี่ยงเบนมาตรฐาน

 #find percentage of otters that weight less than 22 lbs in a population with
#mean = 30 and sd = 5
pnorm(22, mean=30, sd=5)

# [1]0.05479929

นากสายพันธุ์นี้ประมาณ 5.4799% มีน้ำหนักน้อยกว่า 22 ปอนด์

ตัวอย่างที่ 3: สมมติว่าความสูงของต้นไม้ในภูมิภาคหนึ่งโดยปกติจะแจกแจงโดยมีค่าเฉลี่ย ค่าเบี่ยงเบนมาตรฐาน

 #find percentage of plants that are less than 14 inches tall, then subtract the
#percentage of plants that are less than 10 inches tall, based on a population
#with mean = 13 and sd = 2
pnorm(14, mean=13, sd=2) - pnorm(10, mean=13, sd=2)

# [1]0.6246553

ประมาณ 62.4655% ของพืชในภูมิภาคนี้มีความสูงระหว่าง 10 ถึง 14 นิ้ว

นอร์ม

ฟังก์ชัน qnorm ส่งกลับค่าของฟังก์ชันความหนาแน่นสะสมผกผัน (cdf) ของการแจกแจงแบบปกติโดยมีตัวแปรสุ่มบางตัว p ค่าเฉลี่ยประชากร μ และค่าเบี่ยงเบนมาตรฐานของประชากร σ ไวยากรณ์สำหรับการใช้ qnorm เป็นดังนี้:

qnorm (p, ค่าเฉลี่ย, sd)

พูดง่ายๆ ก็คือ คุณสามารถใช้ qnorm เพื่อค้นหาว่าคะแนน Z ของ ควอน ไทล์ p ของการแจกแจงแบบปกติคืออะไร

รหัสต่อไปนี้สาธิตตัวอย่างการทำงานของ qnorm :

 #find the Z-score of the 99th quantile of the standard normal distribution 
qnorm(.99, mean=0, sd=1)
#[1]2.326348

#by default, R uses mean=0 and sd=1
qnorm(.99)
#[1]2.326348

#find the Z-score of the 95th quantile of the standard normal distribution
qnorm(.95)
#[1]1.644854

#find the Z-score of the 10th quantile of the standard normal distribution
qnorm(.10)
#[1]-1.281552

ปกติ

ฟังก์ชัน rnorm สร้างเวกเตอร์ของตัวแปรสุ่มแบบกระจายปกติโดยกำหนดความยาวเวกเตอร์ n ค่าเฉลี่ยประชากร μ และค่าเบี่ยงเบนมาตรฐานของประชากร σ ไวยากรณ์สำหรับการใช้ rnorm มีดังนี้:

rnorm (n, ค่าเฉลี่ย, sd)

รหัสต่อไปนี้แสดงให้เห็นถึงตัวอย่างของ rnorm ในการดำเนินการ:

 #generate a vector of 5 normally distributed random variables with mean=10 and sd=2
five <- rnorm(5, mean = 10, sd = 2)
five
# [1] 10.658117 8.613495 10.561760 11.123492 10.802768

#generate a vector of 1000 normally distributed random variables with mean=50 and sd=5
narrowDistribution <- rnorm(1000, mean = 50, sd = 15)

#generate a vector of 1000 normally distributed random variables with mean=50 and sd=25
wideDistribution <- rnorm(1000, mean = 50, sd = 25)

#generate two histograms to view these two distributions side by side, specify
#50 bars in histogram and x-axis limits of -50 to 150
par(mfrow=c(1, 2)) #one row, two columns
hist(narrowDistribution, breaks=50, xlim=c(-50, 150))
hist(wideDistribution, breaks=50, xlim=c(-50, 150))

สิ่งนี้จะสร้างฮิสโตแกรมต่อไปนี้:

สังเกตว่าการกระจายตัวแบบกว้างนั้นกว้างกว่าการกระจายตัวแบบแคบมากอย่างไร อันที่จริง เราได้ระบุว่าค่าเบี่ยงเบนมาตรฐานในการแจกแจงแบบกว้างคือ 25 เทียบกับเพียง 15 ในการแจกแจงแบบแคบ โปรดทราบว่าฮิสโตแกรมทั้งสองมีศูนย์กลางอยู่ที่ค่าเฉลี่ยของ 50

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

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