เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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)
___(___)
___(___, ___)
แก้ไขและรันโค้ด