เมื่อใดจึงควรใช้ aov() กับ anova() ใน r


ฟังก์ชัน aov() และ anova() ใน R ดูเหมือนจะคล้ายกัน แต่จริงๆ แล้วเราใช้ฟังก์ชันเหล่านี้ในสองสถานการณ์ที่แตกต่างกัน

เราใช้ aov() เมื่อเราต้องการปรับโมเดล ANOVA ให้พอดี และแสดงผลลัพธ์ในตารางสรุป ANOVA

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

ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละฟังก์ชันในทางปฏิบัติ

ตัวอย่างที่ 1: วิธีใช้ aov() ใน R

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

เรารับสมัครคน 90 คนเพื่อเข้าร่วมในการทดลอง โดยสุ่มให้คน 30 คนติดตามโปรแกรม A โปรแกรม B หรือโปรแกรม C เป็นเวลาหนึ่งเดือน

รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน aov() ใน R เพื่อทำการวิเคราะห์ความแปรปรวนทางเดียวนี้:

 #make this example reproducible
set. seeds (0)

#create data frame
df <- data. frame (program = rep(c("A", "B", "C"), each= 30 ),
                 weight_loss = c(runif(30, 0, 3),
                                 runif(30, 0, 5),
                                 runif(30, 1, 7)))

#fit one-way anova using aov()
fit <- aov(weight_loss ~ program, data=df)

#view results
summary(fit)

            Df Sum Sq Mean Sq F value Pr(>F)    
program 2 98.93 49.46 30.83 7.55e-11 ***
Residuals 87 139.57 1.60                     
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

จากผลลัพธ์ของแบบจำลอง เราจะเห็นว่าค่า p ของโปรแกรม (0.0000000000755) น้อยกว่า 0.05 ซึ่งหมายความว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติในการลดน้ำหนักโดยเฉลี่ยระหว่างทั้งสามโปรแกรม

ตัวอย่างที่ 2: วิธีใช้ anova() ใน R

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

แบบจำลองเต็ม: คะแนน = β 0 + B 1 (ชั่วโมง) + B 2 (ชั่วโมง) 2

แบบจำลองที่ลดลง: คะแนน = β 0 + B 1 (ชั่วโมง)

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

 #make this example reproducible
set. seeds (1)

#create dataset
df <- data.frame(hours = runif(50, 5, 15), score=50)
df$score = df$score + df$hours^3/150 + df$hours*runif(50, 1, 2)

#view head of data
head(df)

      hours score
1 7.655087 64.30191
2 8.721239 70.65430
3 10.728534 73.66114
4 14.082078 86.14630
5 7.016819 59.81595
6 13.983897 83.60510

#fit full model
full <- lm(score ~ poly(hours,2), data=df)

#fit reduced model
reduced <- lm(score ~ hours, data=df)

#perform lack of fit test using anova()
anova(full, reduced)

Analysis of Variance Table

Model 1: score ~ poly(hours, 2)
Model 2: score ~ hours
  Res.Df RSS Df Sum of Sq F Pr(>F)   
1 47 368.48                                
2 48 451.22 -1 -82.744 10.554 0.002144 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

เนื่องจากค่า p ในตารางผลลัพธ์ (0.002144) น้อยกว่า 0.05 เราจึงสามารถปฏิเสธสมมติฐานว่างของการทดสอบได้ และสรุปได้ว่าแบบจำลองแบบเต็มมีความพอดีที่ดีกว่าแบบจำลองแบบลดขนาดอย่างมีนัยสำคัญทางสถิติ

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีดำเนินการวิเคราะห์ความแปรปรวนแบบทางเดียวใน R
วิธีดำเนินการวิเคราะห์ความแปรปรวนแบบสองทางใน R
วิธีการวัด ANOVA ซ้ำใน R

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

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