วิธีการพล็อตการแจกแจงแบบปกติใน r
หากต้องการพล็อต การแจกแจงแบบปกติ ใน R เราสามารถใช้ฐาน R หรือติดตั้งแพ็คเกจที่ซับซ้อนกว่านี้เช่น ggplot2
การใช้ BaseR
ต่อไปนี้เป็นสามตัวอย่างของการสร้างพล็อตการแจกแจงแบบปกติโดยใช้ Base R
ตัวอย่างที่ 1: การแจกแจงแบบปกติที่มีค่าเฉลี่ย = 0 และส่วนเบี่ยงเบนมาตรฐาน = 1
หากต้องการสร้างพล็อตการแจกแจงแบบปกติโดยมีค่าเฉลี่ย = 0 และส่วนเบี่ยงเบนมาตรฐาน = 1 เราสามารถใช้โค้ดต่อไปนี้:
#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"))
สิ่งนี้จะสร้างพล็อตต่อไปนี้:
ตัวอย่างที่ 2: การแจกแจงแบบปกติที่มีค่าเฉลี่ย = 0 และส่วนเบี่ยงเบนมาตรฐาน = 1 (โค้ดน้อยกว่า)
นอกจากนี้เรายังสามารถสร้างพล็อตการแจกแจงแบบปกติโดยไม่ต้องกำหนด x และ y และใช้ฟังก์ชัน “curve” โดยใช้โค้ดต่อไปนี้:
curve(dnorm, -3.5, 3.5, lwd=2, axes = FALSE, xlab = "", ylab = "") axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))
สิ่งนี้สร้างพล็อตเดียวกันทุกประการ:
ตัวอย่างที่ 3: การแจกแจงแบบปกติด้วยค่าเฉลี่ยที่กำหนดเองและส่วนเบี่ยงเบนมาตรฐาน
ในการสร้างพล็อตการแจกแจงแบบปกติด้วยค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานที่ผู้ใช้กำหนด เราสามารถใช้โค้ดต่อไปนี้:
#define population mean and standard deviation population_mean <- 50 population_sd <- 5 #define upper and lower bound lower_bound <- population_mean - population_sd upper_bound <- population_mean + population_sd #Create a sequence of 1000 x values based on population mean and standard deviation x <- seq(-4, 4, length = 1000) * population_sd + population_mean #create a vector of values that shows the height of the probability distribution #for each value in x y <- dnorm(x, population_mean, population_sd) #plot normal distribution with customized x-axis labels plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "") sd_axis_bounds = 5 axis_bounds <- seq(-sd_axis_bounds * population_sd + population_mean, sd_axis_bounds * population_sd + population_mean, by = population_sd) axis(side = 1, at = axis_bounds, pos = 0)
สิ่งนี้จะสร้างพล็อตต่อไปนี้:
ใช้ ggplot2
อีกวิธีหนึ่งในการสร้างพล็อตการแจกแจงแบบปกติใน R คือการใช้แพ็คเกจ ggplot2 ต่อไปนี้เป็นสองตัวอย่างของการสร้างพล็อตการแจกแจงแบบปกติโดยใช้ ggplot2
ตัวอย่างที่ 1: การแจกแจงแบบปกติที่มีค่าเฉลี่ย = 0 และส่วนเบี่ยงเบนมาตรฐาน = 1
หากต้องการสร้างพล็อตการแจกแจงแบบปกติโดยมีค่าเฉลี่ย = 0 และส่วนเบี่ยงเบนมาตรฐาน = 1 เราสามารถใช้โค้ดต่อไปนี้:
#install (if not already installed) and load ggplot2 if(!(require(ggplot2))){install.packages('ggplot2')} #generate a normal distribution plot ggplot(data.frame(x = c(-4, 4)), aes(x = x)) + stat_function(fun = dnorm)
สิ่งนี้จะสร้างพล็อตต่อไปนี้:
ตัวอย่างที่ 2: การแจกแจงแบบปกติโดยใช้ชุดข้อมูล ‘mtcars’
รหัสต่อไปนี้สาธิตวิธีการสร้างการแจกแจงแบบปกติสำหรับคอลัมน์ ไมล์ต่อแกลลอน ในชุดข้อมูล R ที่ฝังตัว ของ mtcars :
ggplot(mtcars, aes(x = mpg)) + stat_function( fun = dnorm, args = with(mtcars, c(mean = mean(mpg), sd = sd(mpg))) ) + scale_x_continuous("Miles per gallon")
สิ่งนี้จะสร้างพล็อตต่อไปนี้: