วิธีดำเนินการ manova ใน r


เพื่อให้เข้าใจ MANOVA อันดับแรกจะเป็นประโยชน์ในการทำความเข้าใจ ANOVA

การวิเคราะห์ ความแปรปรวน (การวิเคราะห์ความแปรปรวน) ใช้เพื่อพิจารณาว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างค่าเฉลี่ยของกลุ่มอิสระสามกลุ่มขึ้นไปหรือไม่

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

หากต้องการทราบว่าเทคนิคการเรียนรู้มีผลกระทบต่อคะแนนสอบหรือไม่ เราสามารถใช้การวิเคราะห์ความแปรปรวนแบบทางเดียว ซึ่งจะบอกเราว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างคะแนนเฉลี่ยของทั้งสามกลุ่มหรือไม่

ใน ANOVA เรามีตัวแปรตอบสนอง อย่างไรก็ตาม ใน MANOVA (การวิเคราะห์ความแปรปรวนหลายตัวแปร) เรามีตัวแปรตอบสนองหลายตัว

ตัวอย่างเช่น สมมติว่าเราต้องการทราบว่าระดับการศึกษา (เช่น มัธยมศึกษาตอนปลาย อนุปริญญา ปริญญาตรี ปริญญาโท ฯลฯ) มีผลกระทบต่อรายได้ต่อปีและจำนวนหนี้ของนักเรียนอย่างไร ในกรณีนี้ เรามีปัจจัยหนึ่ง (ระดับการศึกษา) และตัวแปรตอบสนองสองตัวแปร (รายได้ต่อปีและหนี้นักเรียน) ดังนั้นเราจึงสามารถดำเนินการ MANOVA แบบทางเดียวได้

ที่เกี่ยวข้อง: การทำความเข้าใจความแตกต่างระหว่าง ANOVA, ANCOVA, MANOVA และ MANCOVA

วิธีดำเนินการ MANOVA ใน R

ในตัวอย่างต่อไปนี้ เราจะแสดงวิธีดำเนินการ MANOVA แบบทางเดียวใน R โดยใช้ชุดข้อมูล ม่านตา ในตัว ซึ่งมีข้อมูลเกี่ยวกับความยาวและความกว้างของการวัดดอกไม้ที่แตกต่างกันสำหรับสามสายพันธุ์ที่แตกต่างกัน (“setosa”, “virginica” , “หลากสี”):

 #view first six rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

สมมติว่าเราต้องการทราบว่าสายพันธุ์มีผลต่อความยาวและความกว้างของกลีบเลี้ยงหรือไม่ การใช้ สปีชีส์ เป็นตัวแปรอิสระ และ ความยาว และ ความกว้าง ของกลีบเลี้ยงเป็นตัวแปรตอบสนอง เราสามารถดำเนินการ MANOVA แบบทางเดียวได้โดยใช้ฟังก์ชัน manova() ใน R

ฟังก์ชัน manova() ใช้ไวยากรณ์ต่อไปนี้:

มาโนวา (cbind (rv1, rv2, …) ~ iv, ข้อมูล)

ทอง:

  • rv1, rv2 : ตัวแปรการตอบสนอง 1, ตัวแปรการตอบสนอง 2 เป็นต้น
  • iv : ตัวแปรอิสระ
  • data : ชื่อของกรอบข้อมูล

ในตัวอย่างของเราที่มีชุดข้อมูลม่านตา เราสามารถใส่ MANOVA และแสดงผลลัพธ์โดยใช้ไวยากรณ์ต่อไปนี้:

 #fit the MANOVA model
model <- manova(cbind(Sepal.Length, Sepal.Width) ~ Species, data = iris)

#view the results
summary(model)
# Df Pillai approx F num Df den Df Pr(>F)    
#Species 2 0.94531 65.878 4,294 < 2.2e-16 ***
#Residuals 147                                             
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

จากผลลัพธ์ เราจะเห็นว่าสถิติ F คือ 65.878 และค่า p ที่สอดคล้องกันนั้นน้อยมาก สิ่งนี้บ่งชี้ว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติในการวัดกลีบเลี้ยงโดยขึ้นอยู่กับชนิดพันธุ์

หมายเหตุทางเทคนิค: ตามค่าเริ่มต้น manova() จะใช้สถิติการทดสอบ Pillai เนื่องจากการแจกแจงสถิติการทดสอบนี้มีความซับซ้อน จึงมีค่า F โดยประมาณเพื่อให้ตีความได้ง่ายขึ้น

นอกจากนี้ ยังสามารถระบุ ‘Roy’, ‘Hotelling-Lawley’ หรือ ‘Wilks’ เป็นสถิติทดสอบเพื่อใช้โดยใช้ไวยากรณ์ต่อไปนี้: summary(model, test = ‘Wilks’)

หากต้องการทราบว่าความ ยาว และ ความกว้าง ของกลีบเลี้ยงได้รับผลกระทบจาก สปีชีส์ อย่างไร เราสามารถดำเนินการ ANOVA แบบตัวแปรเดียวได้โดยใช้ summary.aov() ดังที่แสดงในโค้ดต่อไปนี้:

 summary.aov(model)


# Response Sepal.Length:
# Df Sum Sq Mean Sq F value Pr(>F)    
#Species 2 63.212 31.606 119.26 < 2.2e-16 ***
#Residuals 147 38.956 0.265                      
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Response Sepal.Width:
# Df Sum Sq Mean Sq F value Pr(>F)    
#Species 2 11.345 5.6725 49.16 < 2.2e-16 ***
#Residuals 147 16.962 0.1154                      
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

เราจะเห็นได้จากผลลัพธ์ว่าค่า p สำหรับ ANOVA แบบตัวแปรเดียวนั้นต่ำมาก (<2.2e-16) ซึ่งบ่งชี้ว่า สปีชีส์ มีผลกระทบอย่างมีนัยสำคัญทางสถิติต่อ ความกว้าง และความยาว ของกลีบเลี้ยง

แสดงภาพทรัพยากรของกลุ่ม

นอกจากนี้ยังอาจเป็นประโยชน์หากเห็นภาพกลุ่มหมายถึงสำหรับแต่ละระดับของ สายพันธุ์ ตัวแปรอิสระของเราเพื่อให้เข้าใจผลลัพธ์ของเราได้ดีขึ้น

ตัวอย่างเช่น เราสามารถใช้ไลบรารี gplots และฟังก์ชัน plotmeans() เพื่อแสดงภาพ ความยาวเฉลี่ยของกลีบเลี้ยง ตาม สปีชีส์ :

 #load gplots library
library(gplots)

#visualize mean sepal length by species
plotmeans(iris$Sepal.Length ~ iris$Species)

จากกราฟเราจะเห็นว่าความยาวกลีบเลี้ยงโดยเฉลี่ยแตกต่างกันอย่างมากระหว่างแต่ละสายพันธุ์ ซึ่งตรงกับผลลัพธ์ของ MANOVA ของเรา ซึ่งบอกเราว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติในการวัดกลีบเลี้ยงในสิ่งมีชีวิตต่างๆ

นอกจากนี้เรายังสามารถเห็นภาพ ความกว้างเฉลี่ยของกลีบเลี้ยง ตาม สายพันธุ์ :

 plotmeans(iris$Sepal.Width ~ iris$Species)

ดูเอกสารฉบับเต็มสำหรับฟังก์ชัน manova() ที่นี่

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

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