Q-Q plot สำหรับการตรวจสอบความเป็นโปรดปกติ
Quantile-quantile plot (Q-Q plot) เป็นวิธีแสดงผลเชิงกราฟที่ดีกว่าสำหรับการตรวจสอบว่าข้อมูลไม่เป็นการแจกแจงปกติ โดยทั่วไป Q-Q plot จะเปรียบเทียบ quantile ของข้อมูลกับ quantile ของการแจกแจงอ้างอิง หากข้อมูลมาจากการแจกแจงประเภทเดียวกัน (ต่างกันแค่ scale และ location) เส้นที่ได้ควรใกล้เคียงเส้นตรง นอกจากนี้ควรทราบว่า degrees of freedom (df) หมายถึงจำนวนค่าหรือการสังเกตที่สามารถส่งผลต่อระบบที่กำลังทำงานอยู่
ในวิดีโอ คุณได้เห็นวิธีสร้างข้อมูลการแจกแจงปกติ 1000 จุดด้วยฟังก์ชัน rnorm() รวมถึงการใช้ qqnorm() เพื่อสร้าง Q-Q plot และ qqline() เพื่อเพิ่มเส้นตรงสำหรับอ้างอิง:
> data <- rnorm(1000, mean = 3, sd = 2)
> qqnorm(data)
> qqline(data)
ในแบบฝึกหัดนี้ จะสร้าง Q-Q plot ของ log-return ของ Dow Jones ใน djx เทียบกับการแจกแจงปกติอ้างอิง พร้อมเพิ่มเส้นอ้างอิงเชิงภาพ จากนั้นเปรียบเทียบกราฟกับชุดข้อมูลจำลองจากการแจกแจงปกติ Student t และ uniform ที่สร้างด้วยฟังก์ชัน rnorm(), rt() และ runif() ตามลำดับ โดยจะได้เรียนรู้เกี่ยวกับ t distribution เพิ่มเติมในบทนี้
หากข้อมูลมาจากการแจกแจงปกติ จุดต่าง ๆ ควรอยู่ใกล้เส้นสีแดง (แม้อาจมีบางส่วนเบี่ยงเบนที่ปลายสุดของกราฟ)
djx ถูกโหลดเข้า workspace ของคุณแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Quantitative Risk Management in R
คำแนะนำการฝึกหัด
- สร้าง Q-Q plot ของ
djxเทียบกับการแจกแจงปกติด้วยqqnorm()แล้วเพิ่มเส้นสีแดงด้วยqqline()โดยกำหนดcol = "red"เพื่อตรวจสอบความเป็นเส้นตรงของกราฟ - คำนวณความยาวของ
djxด้วยlength()แล้วกำหนดให้กับออบเจกต์n - สร้างตัวแปรการแจกแจงปกติมาตรฐานจำนวน
nตัวด้วยrnorm()แล้วกำหนดให้กับx1จากนั้นสร้าง Q-Q plot ของx1เทียบกับการแจกแจงปกติ และเพิ่มเส้นสีแดงเช่นเดิม - สร้างตัวแปรการแจกแจง Student t จำนวน
nตัว โดยมี degree of freedom เท่ากับ 4 แล้วกำหนดให้กับx2(ส่วนนี้ทำไว้ให้แล้ว) จากนั้นสร้าง Q-Q plot ของx2เทียบกับการแจกแจงปกติ และเพิ่มเส้นสีแดง - สร้างตัวแปรการแจกแจง uniform จำนวน
nตัว แล้วกำหนดให้กับx3(ส่วนนี้ทำไว้ให้แล้ว) จากนั้นสร้าง Q-Q plot ของx3เทียบกับการแจกแจงปกติ และเพิ่มเส้นสีแดง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Make a Q-Q plot of djx and add a red line
___(___)
___(___, ___)
# Calculate the length of djx as n
n <- ___
# Generate n standard normal variables, make a Q-Q plot, add a red line
x1 <- ___(___)
___(___)
___(___, ___)
# Generate n Student t variables, make a Q-Q plot, add a red line
x2 <- rt(n, df = 4)
___(___)
___(___, ___)
# Generate n standard uniform variables, make a Q-Q plot, add red line
x3 <- runif(n)
___(___)
___(___, ___)