วิธีสร้างและตีความพล็อต qq ใน r


พล็อต QQ ย่อมาจาก “ควอนไทล์-ควอนไทล์” เป็นพล็อตประเภทหนึ่งที่เราสามารถใช้เพื่อพิจารณาว่าชุดข้อมูลอาจมาจากการแจกแจงทางทฤษฎีหรือไม่

การทดสอบทางสถิติจำนวนมากสันนิษฐานว่าชุดข้อมูลเป็นไปตามการแจกแจงแบบปกติ และมักใช้พล็อต QQ เพื่อประเมินว่าเป็นไปตามสมมติฐานนี้หรือไม่

แม้ว่าพล็อต QQ ไม่ใช่การทดสอบทางสถิติอย่างเป็นทางการ แต่ก็มอบวิธีง่ายๆ ในการตรวจสอบด้วยภาพว่าชุดข้อมูลเป็นไปตามการแจกแจงแบบปกติหรือไม่ และหากไม่เป็นเช่นนั้น สมมติฐานนี้ถูกละเมิดอย่างไร และจุดข้อมูลใดที่อาจเป็นต้นตอของการละเมิดนี้

เราสามารถสร้างพล็อต QQ ได้โดยพล็อตควอไทล์สองชุดต่อกัน หากควอนไทล์ทั้งสองชุดมาจากการกระจายตัวเดียวกัน จุดบนโครงเรื่องควรสร้างเป็นเส้นทแยงมุมโดยประมาณ

ตัวอย่างพล็อต QQ

ควอนไทล์ แสดงถึงจุดต่างๆ ในชุดข้อมูลที่ด้านล่างซึ่งมีข้อมูลบางส่วนอยู่ ตัวอย่างเช่น ควอนไทล์ 0.9 แสดงถึงจุดที่ข้อมูลอยู่ต่ำกว่า 90% ควอไทล์ 0.5 แสดงถึงจุดที่ข้อมูลอยู่ต่ำกว่า 50% เป็นต้น

พล็อต QQ ระบุควอนไทล์ของตัวอย่างข้อมูลของคุณ และเปรียบเทียบกับควอนไทล์ของการแจกแจงทางทฤษฎี ในกรณีส่วนใหญ่ จะใช้การแจกแจงแบบปกติ แต่จริงๆ แล้วสามารถสร้างพล็อต QQ สำหรับการแจกแจงทางทฤษฎีใดๆ ได้

หากจุดข้อมูลอยู่ตามแนวเส้นทแยงมุมตรงในพล็อต QQ ชุดข้อมูลก็น่าจะเป็นไปตามการแจกแจงแบบปกติ

วิธีสร้างพล็อต QQ ใน R

เราสามารถสร้างพล็อต QQ ได้อย่างง่ายดายเพื่อตรวจสอบว่าชุดข้อมูลเป็นไปตามการแจกแจงแบบปกติหรือไม่โดยใช้ฟังก์ชัน qqnorm() ในตัว

ตัวอย่างเช่น โค้ดต่อไปนี้สร้างเวกเตอร์ของค่าสุ่ม 100 ค่าที่เป็นไปตามการแจกแจงแบบปกติ และสร้างพล็อต QQ สำหรับชุดข้อมูลนั้นเพื่อตรวจสอบว่าเป็นไปตามการแจกแจงแบบปกติจริงหรือไม่:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a normal distribution
data <- rnorm(100)

#create QQ plot to compare this dataset to a theoretical normal distribution
qqnorm(data)

เพื่อให้ง่ายต่อการดูว่าข้อมูลเป็นเส้นตรงหรือไม่ เราสามารถใช้ฟังก์ชัน qqline() ได้:

 #create QQ plot
qqnorm(data)

#add straight diagonal line to plot
qqline(data)

เราจะเห็นว่าจุดข้อมูลใกล้กับส่วนท้ายไม่ได้เป็นไปตามเส้นตรงทุกประการ แต่ข้อมูลตัวอย่างส่วนใหญ่เหล่านี้ดูเหมือนว่าจะมีการกระจายแบบปกติ (อย่างที่ควรจะเป็นเนื่องจากเราขอให้ R สร้างข้อมูลที่ จากการแจกแจงแบบปกติ) ). ).

ให้พิจารณาโค้ดต่อไปนี้ที่สร้างเวกเตอร์ค่าสุ่ม 100 ค่าตามการแจกแจงแกมมาและสร้างพล็อต QQ สำหรับข้อมูลนี้เพื่อตรวจสอบว่าเป็นไปตามการแจกแจงแบบปกติหรือไม่:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a gamma distribution
data <- rgamma(100, 1)

#create QQ plot to compare this dataset to a theoretical normal distribution
qqnorm(data)
qqline(data)

เราสามารถเห็นความเบี่ยงเบนจากเส้นตรงได้ชัดเจนในพล็อต QQ นี้ ซึ่งบ่งชี้ว่าชุดข้อมูลนี้ไม่น่าจะเป็นไปตามการแจกแจงแบบปกติ

พิจารณาโค้ดอีกชิ้นหนึ่งที่สร้างเวกเตอร์ของค่าสุ่ม 100 ค่าที่ตามหลังการแจกแจงแบบไคสแควร์ด้วยความอิสระ 5 องศา และสร้างพล็อต QQ สำหรับข้อมูลนี้เพื่อตรวจสอบว่าเป็นไปตามการแจกแจงแบบปกติหรือไม่:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a Chi-Square distribution
data <- rchisq(100, 5)

#create QQ plot to compare this dataset to a theoretical normal distribution
qqnorm(data)
qqline(data)

เป็นอีกครั้งที่เราเห็นได้ว่าชุดข้อมูลนี้ดูเหมือนจะไม่เป็นไปตามการแจกแจงแบบปกติ โดยเฉพาะบริเวณส่วนท้าย

เปลี่ยนความสวยงามของพล็อต QQ ใน R

เราสามารถเปลี่ยนความสวยงามบางอย่างของพล็อต QQ ใน R ได้ รวมถึงชื่อเรื่อง ป้ายแกน สีจุดข้อมูล สีของเส้น และความกว้างของเส้น

รหัสต่อไปนี้จะเปลี่ยนชื่อ ป้ายกำกับแกน และสีของจุดลงจุด:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a normal distribution
data <- rnorm(100)

#create QQ plot
qqnorm(data, main = 'QQ Plot for Normality', xlab = 'Theoretical Dist',
       ylab = 'Sample dist', col = 'steelblue')

จากนั้นโค้ดต่อไปนี้จะเพิ่มเส้นทแยงมุมตรงลงในพล็อตด้วยสีแดง ความกว้างของเส้น 2 (lwd = 2 ค่าเริ่มต้นคือ 1) และเส้นประ (lty = 2 ค่าเริ่มต้นคือ 1):

 qqline(data, col = 'red', lwd = 2, lty = 2)

หมายเหตุทางเทคนิค

โปรดทราบว่าพล็อต QQ เป็นเพียงวิธีการตรวจสอบ ด้วยภาพ ว่าชุดข้อมูลเป็นไปตามการแจกแจงทางทฤษฎีหรือไม่ หากต้องการทดสอบอย่างเป็นทางการว่าชุดข้อมูลเป็นไปตามการแจกแจงแบบเฉพาะเจาะจงหรือไม่ ให้ทำการทดสอบต่อไปนี้ (สมมติว่าคุณกำลังเปรียบเทียบชุดข้อมูลกับการแจกแจงแบบปกติ):

การทดสอบแอนเดอร์สัน–ดาร์ลิ่ง
การทดสอบชาปิโร-วิลค์
การทดสอบโคลโมโกรอฟ-สมีร์นอฟ

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

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