วิธีดำเนินการ 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() ที่นี่