การตรวจสอบการแจกแจงปกติแบบหลายตัวแปร

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

Surajit Ray

Professor, University of Glasgow

ทำไมต้องตรวจสอบการแจกแจงปกติ?

  • เทคนิคทางสถิติแบบดั้งเดิมที่ต้องสมมติการแจกแจงปกติแบบตัวแปรเดียว/หลายตัวแปร:
    • Multivariate regression
    • Discriminant analysis
    • Model-based clustering
    • Principal component analysis (PCA)
    • Multivariate analysis of variance (MANOVA)
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ทบทวน: การทดสอบการแจกแจงปกติแบบตัวแปรเดียว

qqnorm(iris_raw[, 1])
qqline(iris_raw[, 1])

  • หากค่าต่าง ๆ อยู่บนเส้นอ้างอิง แสดงว่าการแจกแจงใกล้เคียงกับการแจกแจงปกติ
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ทบทวน: การทดสอบการแจกแจงปกติแบบตัวแปรเดียว

qqnorm(iris_raw[, 1])
qqline(iris_raw[, 1])

  • หากค่าต่าง ๆ อยู่บนเส้นอ้างอิง แสดงว่าการแจกแจงใกล้เคียงกับการแจกแจงปกติ

  • การเบี่ยงเบนจากเส้นอาจบ่งชี้ถึง

    • หางที่หนากว่าปกติ
    • ความเบ้
    • ค่าผิดปกติ
    • ข้อมูลที่เป็นกลุ่มก้อน
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

qqnorm ของทุกตัวแปร

mvn(iris_raw[, 1:4], univariatePlot = "qqplot")

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ฟังก์ชันทดสอบการแจกแจงปกติแบบหลายตัวแปรในไลบรารี MVN

MVN version 5.9

  • การทดสอบการแจกแจงปกติแบบหลายตัวแปร โดย

    • Mardia
    • Henze-Zirkler
    • Royston
  • แนวทางเชิงกราฟิก

    • chi-square Q-Q
    • perspective
    • contour plots
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ฟังก์ชันทดสอบการแจกแจงปกติแบบหลายตัวแปรในไลบรารี MVN

  • การทดสอบการแจกแจงปกติแบบหลายตัวแปร โดย

    • Mardia $\checkmark$
    • Henze-Zirkler $\checkmark$
    • Royston
  • แนวทางเชิงกราฟิก

    • chi-square Q-Q $\checkmark$
    • perspective
    • contour plots
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ใช้ Mardia Test ตรวจสอบการแจกแจงปกติแบบหลายตัวแปร

mvn(iris_raw[, 1:4],mvnTest = "mardia")
$multivariateNormality 
             Test          Statistic              p value Result
1 Mardia Skewness   67.4305087780629 4.75799820400705e-07     NO
2 Mardia Kurtosis -0.230112114480775    0.818004651478188    YES
3             MVN               <NA>                 <NA>     NO
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ใช้ qqplot จาก Mardia Test ตรวจสอบการแจกแจงปกติแบบหลายตัวแปร

 mvn(iris_raw[, 1:4],mvnTest = "mardia", multivariatePlot = "qq")

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ใช้ Henze-Zirkler's test ตรวจสอบการแจกแจงปกติแบบหลายตัวแปร

mvn(iris_raw[, 1:4],mvnTest = "hz")
$multivariateNormality
           Test  HZ p value MVN
1 Henze-Zirkler 2.3       0  NO
การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

ทดสอบการแจกแจงปกติแบบหลายตัวแปรจำแนกตามสปีชีส์

mvn(iris[iris$Species  == "setosa", 1:4], 
     mvnTest = "mardia",
     multivariatePlot = "qq")
$multivariateNormality
             Test        Statistic           p value Result
1 Mardia Skewness 25.6643445196298 0.177185884467652    YES
2 Mardia Kurtosis 1.29499223711605 0.195322907441935    YES
3             MVN             <NA>              <NA>    YES

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

มาฝึกกันเถอะ!

การแจกแจงความน่าจะเป็นหลายตัวแปรใน R

Preparing Video For Download...