การวิเคราะห์ความแปรปรวน (ANOVA) ใน R: การทดสอบแบบทางเดียวและสองทาง พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

การวิเคราะห์ความแปรปรวน (ANOVA) ใน R เปรียบเทียบค่าเฉลี่ยของกลุ่มตั้งแต่สามกลุ่มขึ้นไป โดยแบ่งความแปรปรวนทั้งหมดออกเป็นส่วนประกอบระหว่างกลุ่มและภายในกลุ่ม บทแนะนำนี้จะทำการทดสอบความแปรปรวนแบบทางเดียวและสองทางกับชุดข้อมูลสารพิษ ตรวจสอบสมมติฐาน และแยกคู่ที่แตกต่างกันโดยใช้การทดสอบความแปรปรวนสูงของ Tukey (Tukey HSD)

  • 📐 สถิติหลัก: อัตราส่วน F หารความแปรปรวนระหว่างกลุ่มด้วยความแปรปรวนภายในกลุ่ม ดังนั้นค่าที่มากขึ้นจึงบ่งชี้ว่าค่าเฉลี่ยไม่เท่ากัน
  • 🧪 ไวยากรณ์แบบทางเดียว: คำสั่ง aov(time~poison, data = df) ตามด้วย summary() จะส่งคืนค่าองศาอิสระ ค่า F และค่า p
  • การตรวจสอบสมมติฐาน: ตรวจสอบความเป็นอิสระ ความเป็นปกติของค่าตกค้างด้วย shapiro.test() และความเท่ากันของความแปรปรวนด้วย leveneTest() ก่อนที่จะเชื่อถือค่า p-value
  • 🔎 การวิเคราะห์ภายหลัง: ฟังก์ชัน TukeyHSD() จะเปรียบเทียบกลุ่มทุกคู่โดยคงอัตราความผิดพลาดโดยรวมของกลุ่มไว้ที่ระดับที่ระบุไว้
  • 🧮 ส่วนขยายแบบสองทาง: aov(time~poison + treat, data = df) เพิ่มปัจจัยที่สอง และ poison:treat เพิ่มพจน์ปฏิสัมพันธ์
  • 📊 ผลการค้นหา: ค่า p-value ที่ต่ำกว่า 0.05 ปฏิเสธสมมติฐานหลักที่ว่าค่าเฉลี่ยเท่ากัน แต่ไม่สามารถระบุได้ว่ากลุ่มใดแตกต่างกัน

ANOVA ใน R แบบทางเดียวและสองทาง

ANOVA คืออะไร

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

ก่อนทำการทดสอบ ควรทราบก่อนว่าวิธีการวิเคราะห์ความแปรปรวน (ANOVA) แบบใดเหมาะสมกับรูปแบบการออกแบบของคุณ

ประเภทของการทดสอบ ANOVA ใน R

“ANOVA” เป็นกลุ่มของการทดสอบ ไม่ใช่กระบวนการเดียว การเลือกใช้การทดสอบที่เหมาะสมขึ้นอยู่กับจำนวนปัจจัยและวิธีการเก็บรวบรวมข้อมูล

เอกสาร ควรใช้เมื่อใด R เรียก
ANOVA ทางเดียว ปัจจัยหนึ่งที่มีสามระดับขึ้นไป aov(y ~ x, data = df)
ความแปรปรวนสองทาง ปัจจัยอิสระสองประการ aov(y ~ x1 + x2, data = df)
สองทางพร้อมการโต้ตอบ ผลกระทบของปัจจัยหนึ่งขึ้นอยู่กับปัจจัยอื่น aov(y ~ x1 * x2, data = df)
การวิเคราะห์ความแปรปรวนแบบวัดซ้ำ มีการวัดค่าในกลุ่มตัวอย่างเดียวกันมากกว่าหนึ่งครั้ง aov(y ~ x + ข้อผิดพลาด(subject/x))
อันโควา ต้องควบคุมตัวแปรต่อเนื่องด้วย aov(y ~ x + covariate, data = df)
มาโนวา ตัวแปรตอบสนองสองตัวขึ้นไปพร้อมกัน manova(cbind(y1, y2) ~ x)

บทช่วยสอนนี้ครอบคลุมสามแบบแรก ส่วนแบบอื่นๆ ที่เหลือใช้ส่วนติดต่อ aov() เดียวกัน ดังนั้นเมื่อคุณสามารถอ่านตารางผลลัพธ์แบบหนึ่งได้แล้ว คุณก็จะสามารถอ่านแบบอื่นๆ ได้ทั้งหมด

ความแตกต่างที่สำคัญระหว่าง ANOVA และ T-Test ใน R:

การทดสอบทั้งสองแบบเปรียบเทียบค่าเฉลี่ย ดังนั้นจึงควรระบุให้ชัดเจนว่าการทดสอบหนึ่งใช้แทนอีกการทดสอบหนึ่งในกรณีที่ใด

หลักเกณฑ์ T-ทดสอบ การวิเคราะห์ความแปรปรวน
จำนวนกลุ่ม สองพอดี สองตัวขึ้นไป
สถิติทดสอบ t F เท่ากับ t กำลังสอง เมื่อมีสองกลุ่ม
ผล ระบุทิศทางของความแตกต่าง รายงานเพียงว่ามีความแตกต่างอยู่
จำเป็นต้องมีการติดตามผล ไม่มี การทดสอบหลังการวิเคราะห์ เช่น Tukey HSD
ฟังก์ชันอาร์ การทดสอบ t.test() เอโอวี()

เมื่อมีสามกลุ่ม หลายคนมักจะอยากทำการทดสอบ t-test แยกกันสามครั้ง แต่ควรหลีกเลี่ยง เพราะการทดสอบแต่ละครั้งมีอัตราความผิดพลาด 5 เปอร์เซ็นต์ ดังนั้นการเปรียบเทียบสามครั้งจะเพิ่มโอกาสที่จะเกิดผลบวกเท็จเป็นประมาณ 14 เปอร์เซ็นต์ ANOVA สามารถตอบคำถามเดียวกันได้ด้วยการทดสอบเพียงครั้งเดียว และจากนั้น Tukey HSD จะจัดการรายละเอียดการเปรียบเทียบแบบคู่โดยที่อัตราความผิดพลาดไม่สูงเกินไป สำหรับกรณีสองกลุ่ม โปรดดูที่... บทช่วยสอนเกี่ยวกับการทดสอบ t.

ANOVA ทางเดียว

มีหลายสถานการณ์ที่คุณต้องเปรียบเทียบค่าเฉลี่ยระหว่างหลายกลุ่ม ตัวอย่างเช่น แผนกการตลาดต้องการทราบว่ามี 3 ทีมที่มียอดขายเท่ากันหรือไม่

  • ทีม: ปัจจัย 3 ระดับ: A, B และ C
  • การขาย: การวัดประสิทธิภาพ

การทดสอบ ANOVA สามารถบอกได้ว่าทั้งสามกลุ่มมีประสิทธิภาพที่คล้ายคลึงกันหรือไม่

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

สมมติฐานในการทดสอบ ANOVA แบบทางเดียว

  • H0: ค่าเฉลี่ยระหว่างกลุ่มเหมือนกัน
  • H1: อย่างน้อย ค่าเฉลี่ยของกลุ่มหนึ่งก็แตกต่างกัน

กล่าวอีกนัยหนึ่ง การไม่ปฏิเสธสมมติฐานหลัก (H0) หมายความว่าไม่มีหลักฐานเพียงพอที่จะสรุปได้ว่าค่าเฉลี่ยของกลุ่มใดกลุ่มหนึ่งแตกต่างจากกลุ่มอื่น ๆ

การทดสอบนี้คล้ายกับการทดสอบ t แต่ ANOVA เป็นตัวเลือกที่ถูกต้องเมื่อมีกลุ่มมากกว่าสองกลุ่ม ในกรณีที่มีเพียงสองกลุ่ม การทดสอบทั้งสองจะให้ผลเท่ากัน และค่าสถิติ F จะเท่ากับกำลังสองของค่าสถิติ t

สมมติฐาน

การวิเคราะห์ความแปรปรวนแบบทางเดียว (ANOVA) ขึ้นอยู่กับเงื่อนไขสามประการ ได้แก่ ข้อมูลถูกสุ่มเลือกและเป็นอิสระต่อกัน ค่าความคลาดเคลื่อนภายในแต่ละกลุ่มมีการกระจายแบบปกติโดยประมาณ และความแปรปรวนเท่ากันในทุกกลุ่ม (ความแปรปรวนเป็นเอกรูป) ส่วนการตรวจสอบสมมติฐานด้านล่างจะแสดงวิธีการทดสอบแต่ละข้อใน R

ตีความการทดสอบ ANOVA

สถิติ F ใช้เพื่อทดสอบว่าข้อมูลมาจากประชากรที่แตกต่างกันอย่างมีนัยสำคัญ เช่น ค่าเฉลี่ยตัวอย่างที่แตกต่างกัน

ในการคำนวณสถิติ F คุณต้องหารค่า ความแปรปรวนระหว่างกลุ่ม มากกว่า ความแปรปรวนภายในกลุ่ม.

การขอ ระหว่างกลุ่ม ความแปรปรวนสะท้อนให้เห็นว่าค่าเฉลี่ยของแต่ละกลุ่มอยู่ห่างจากค่าเฉลี่ยโดยรวมมากน้อยเพียงใด ลองเปรียบเทียบกราฟสองกราฟด้านล่างเพื่อทำความเข้าใจแนวคิดนี้

กราฟด้านซ้ายแสดงให้เห็นว่าความแตกต่างระหว่างกลุ่มทั้งสามมีน้อยมาก ดังนั้นค่าเฉลี่ยของทั้งสามกลุ่มจึงอยู่ใกล้เคียงกัน ทั้งหมด ค่าเฉลี่ย

กราฟด้านขวาแสดงการกระจายตัวสามกลุ่มที่อยู่ห่างกันมากโดยไม่มีส่วนที่ทับซ้อนกัน ดังนั้นช่องว่างระหว่างค่าเฉลี่ยโดยรวมกับค่าเฉลี่ยของแต่ละกลุ่มจึงมีขนาดใหญ่

ตีความการทดสอบ ANOVA

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

หากต้องการทำความเข้าใจแนวคิดของความแปรปรวนภายในกลุ่มด้วยภาพ โปรดดูกราฟด้านล่าง

ส่วนด้านซ้ายแสดงการกระจายตัวของกลุ่มที่แตกต่างกันสามกลุ่ม คุณได้เพิ่มการกระจายตัวของแต่ละตัวอย่าง และเห็นได้ชัดว่าความแปรปรวนของแต่ละบุคคลมีขนาดใหญ่ ค่าสถิติ F ลดลง ดังนั้นคุณจึงไม่สามารถปฏิเสธสมมติฐานว่างได้

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

ตีความการทดสอบ ANOVA

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

กล่าวอีกนัยหนึ่ง ค่าสถิติ F ที่ต่ำแสดงให้เห็นว่ามีความแตกต่างเพียงเล็กน้อยหรือไม่มีนัยสำคัญระหว่างค่าเฉลี่ยของกลุ่ม

ตัวอย่างการทดสอบ ANOVA แบบทางเดียว

คุณจะใช้ชุดข้อมูลพิษเพื่อดำเนินการทดสอบ ANOVA แบบทางเดียว ชุดข้อมูลประกอบด้วย 48 แถวและ 3 ตัวแปร:

  • เวลา: เวลาการอยู่รอดของสัตว์
  • ยาพิษ: ประเภทของยาพิษที่ใช้: ระดับปัจจัย: 1,2 และ 3
  • รักษา: ประเภทของการรักษาที่ใช้: ระดับปัจจัย: 1,2 และ 3

ก่อนที่คุณจะเริ่มคำนวณการทดสอบ ANOVA คุณต้องเตรียมข้อมูลดังต่อไปนี้:

  • ขั้นตอนที่ 1: นำเข้าข้อมูล
  • ขั้นตอนที่ 2: ลบตัวแปรที่ไม่จำเป็นออก
  • ขั้นตอนที่ 3: แปลงพิษแปรผันตามระดับที่สั่ง
library(dplyr)
PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv"
df <- read.csv(PATH) %>%
select(-X) %>% 
mutate(poison = factor(poison, ordered = TRUE))
glimpse(df)

Output:

## Observations: 48
## Variables: 3
## $ time   <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0...
## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2...
## $ treat  <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...		

วัตถุประสงค์ของเราคือการทดสอบสมมติฐานต่อไปนี้:

  • H0: ระยะเวลาการรอดชีวิตโดยเฉลี่ยระหว่างกลุ่มไม่มีความแตกต่าง
  • H1: ระยะเวลาการรอดชีวิตโดยเฉลี่ยจะแตกต่างกันสำหรับกลุ่มอย่างน้อยหนึ่งกลุ่ม

กล่าวอีกนัยหนึ่ง คุณต้องการทราบว่ามีความแตกต่างทางสถิติระหว่างค่าเฉลี่ยของระยะเวลาการรอดชีวิตตามประเภทของยาพิษที่ให้แก่หนูตะเภาหรือไม่

คุณจะดำเนินการดังต่อไปนี้:

  • ขั้นตอนที่ 1: ตรวจสอบรูปแบบของพิษที่แปรผัน
  • ขั้นตอนที่ 2: พิมพ์สถิติสรุป: การนับ ค่าเฉลี่ย และส่วนเบี่ยงเบนมาตรฐาน
  • ขั้นตอนที่ 3: พล็อตกล่อง
  • ขั้นตอนที่ 4: คำนวณการทดสอบ ANOVA แบบทางเดียว
  • ขั้นตอนที่ 5: ทำการเปรียบเทียบแบบจับคู่โดยใช้ Tukey HSD

ขั้นตอน 1) ตรวจสอบระดับความเป็นพิษด้วยโค้ดด้านล่าง คุณควรเห็นค่าตัวอักษรสามตัว เนื่องจากคำสั่ง mutate ได้แปลงคอลัมน์ให้เป็นแฟกเตอร์เรียงลำดับแล้ว

levels(df$poison)

Output:

## [1] "1" "2" "3"

ขั้นตอน 2) คุณคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน

df %>%
	group_by(poison) %>%
	summarise(
		count_poison = n(),
		mean_time = mean(time, na.rm = TRUE),
		sd_time = sd(time, na.rm = TRUE)
	)

Output:

## 
# A tibble: 3 x 4
##   poison count_poison mean_time    sd_time
##    <ord>        <int>     <dbl>      <dbl>
## 1      1           16  0.617500 0.20942779
## 2      2           16  0.544375 0.28936641
## 3      3           16  0.276250 0.06227627

ขั้นตอน 3) ในขั้นตอนที่ 3 คุณสามารถตรวจสอบได้อย่างชัดเจนว่ามีความแตกต่างระหว่างการแจกแจงหรือไม่ โปรดทราบว่าคุณรวมจุดกระวนกระวายใจด้วย

ggplot(df, aes(x = poison, y = time, fill = poison)) +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(0.21)) +
    theme_classic()

Output:

ตัวอย่างการทดสอบ ANOVA แบบทางเดียว

ขั้นตอน 4) คุณสามารถรันการทดสอบ ANOVA แบบทางเดียวด้วยคำสั่ง aov รูปแบบพื้นฐานสำหรับการทดสอบ ANOVA คือ:

aov(formula, data)
Arguments:			
- formula: The equation you want to estimate
- data: The dataset used	

ไวยากรณ์ของสูตรคือ:

y ~ X1+ X2+...+Xn # X1 +  X2 +... refers to the independent variables
y ~ . # use all the remaining variables as independent variables

ตอนนี้คุณสามารถตอบคำถามได้แล้วว่า: ระยะเวลาการรอดชีวิตของหนูตะเภาแตกต่างกันหรือไม่ เมื่อพิจารณาจากชนิดของยาพิษที่ให้?

เก็บโมเดลไว้ในอ็อบเจ็กต์แล้วส่งไปยังฟังก์ชัน summary() เพื่อให้ได้ผลลัพธ์ที่อ่านง่าย

anova_one_way <- aov(time~poison, data = df)
summary(anova_one_way)

Code คำอธิบาย

  • aov(time ~ poison, data = df): รันการทดสอบ ANOVA ด้วยสูตรต่อไปนี้
  • summary(anova_one_way): พิมพ์สรุปผลการทดสอบ

Output:

##             Df Sum Sq Mean Sq F value   Pr(>F)
## poison       2  1.033  0.5165   11.79 7.66e-05 ***
## Residuals   45  1.972  0.0438                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ค่า p-value คือ 7.66e-05 ซึ่งต่ำกว่าเกณฑ์ปกติที่ 0.05 มาก และเครื่องหมายสามดาวแสดงถึงระดับนัยสำคัญสูงสุด คุณสามารถปฏิเสธสมมติฐานหลัก (H0) และสรุปได้ว่าอย่างน้อยหนึ่งกลุ่มที่ได้รับสารพิษมีค่าเฉลี่ยเวลาการรอดชีวิตที่แตกต่างกัน

วิธีการตรวจสอบข้อสมมติฐานของ ANOVA ใน R

ค่า p ของ ANOVA จะน่าเชื่อถือได้ก็ต่อเมื่อตรงตามเงื่อนไขทั้งสามข้อที่กล่าวไว้ก่อนหน้านี้ แต่ละเงื่อนไขสามารถตรวจสอบได้โดยตรงใน R และทุกเงื่อนไขจะดำเนินการกับอ็อบเจ็กต์โมเดลที่ปรับให้เหมาะสมแล้ว

1. ความเป็นอิสระของการสังเกตการณ์ นี่เป็นคุณสมบัติของการออกแบบการศึกษา ไม่ใช่คุณสมบัติของข้อมูล ดังนั้นจึงไม่มีการทดสอบใดที่จะช่วยแก้ไขได้ หนูตะเภาแต่ละตัวจะต้องได้รับการวัดเพียงครั้งเดียวและถูกกำหนดให้อยู่ในกลุ่มแบบสุ่ม หากหนูตะเภาตัวเดียวกันปรากฏในหลายแถว คุณจำเป็นต้องใช้แบบจำลองการวัดซ้ำแทน

2. ความปกติของค่าความคลาดเคลื่อน การวิเคราะห์ความแปรปรวน (ANOVA) ถือว่าค่าความคลาดเคลื่อน (residuals) ไม่ใช่ข้อมูลดิบ (raw data) มีการกระจายแบบปกติโดยประมาณ ตรวจสอบแผนภาพ QQ และยืนยันด้วยการทดสอบ Shapiro-Wilk:

par(mfrow = c(2, 2))
plot(anova_one_way)          # four diagnostic plots

shapiro.test(residuals(anova_one_way))

จุดที่อยู่ใกล้เส้นทแยงมุมของกราฟ QQ ปกติ แสดงว่าค่าความคลาดเคลื่อนเป็นค่าปกติ ค่า p-value ของ Shapiro-Wilk ที่สูงกว่า 0.05 หมายความว่าคุณไม่สามารถปฏิเสธสมมติฐานความปกติได้

3. ความเป็นเอกรูปของความแปรปรวน แต่ละกลุ่มควรมีการกระจายตัวที่คล้ายคลึงกัน กราฟแสดงค่าความคลาดเคลื่อนเทียบกับค่าที่คาดการณ์ไว้ ควรมีลักษณะเป็นแถบแบนราบมากกว่ารูปทรงกรวย ตรวจสอบยืนยันด้วยการทดสอบของ Levene ซึ่งมีความทนทานต่อความไม่เป็นปกติของข้อมูลมากกว่าการทดสอบของ Bartlett:

library(car)
leveneTest(time ~ poison, data = df)

bartlett.test(time ~ poison, data = df)

ค่า p-value ที่สูงกว่า 0.05 สนับสนุนสมมติฐานว่าความแปรปรวนเท่ากัน

ควรทำอย่างไรเมื่อสมมติฐานนั้นผิดพลาด ถ้าค่าความแปรปรวนไม่เท่ากัน ให้ใช้ oneway.test(time ~ poison, data = df, var.equal = FALSE) ซึ่งเป็นการแก้ไขแบบ Welch ถ้าค่าความคลาดเคลื่อนไม่เป็นไปตามการแจกแจงแบบปกติอย่างชัดเจนและขนาดตัวอย่างเล็ก ให้เปลี่ยนไปใช้การทดสอบอันดับ Kruskal-Wallis kruskal.test(time ~ poison, data = df) สำหรับตัวอย่างขนาดใหญ่และสมดุล การวิเคราะห์ความแปรปรวน (ANOVA) ค่อนข้างทนทานต่อความเบี่ยงเบนจากภาวะปกติในระดับปานกลาง ดังนั้นผลลัพธ์ Shapiro-Wilk ที่อยู่ในระดับก้ำกึ่งจึงไม่ค่อยส่งผลร้ายแรง

การเปรียบเทียบแบบคู่

การทดสอบ F ที่มีนัยสำคัญจะบอกคุณว่าค่าเฉลี่ยของกลุ่มไม่เท่ากันทั้งหมด แต่ไม่ได้บอกว่าคู่ใดแตกต่างกัน การทดสอบความแตกต่างที่มีนัยสำคัญอย่างแท้จริงของ Tukey จะตอบคำถามนั้นโดยการเปรียบเทียบทุกคู่ในขณะที่ควบคุมอัตราความผิดพลาดแบบครอบคลุมทั้งกลุ่ม

TukeyHSD(anova_one_way)

Output:

การเปรียบเทียบแบบคู่

อ่านผลลัพธ์ทีละแถวต่อคู่ diff คอลัมน์นี้แสดงความแตกต่างระหว่างค่าเฉลี่ยของทั้งสองกลุ่ม ลวร์ และ ขึ้นไป กำหนดขอบเขตช่วงความเชื่อมั่น 95 เปอร์เซ็นต์สำหรับความแตกต่างนั้น และ p adj ค่า p-value ที่ปรับแล้วสำหรับการเปรียบเทียบหลายรายการ คือค่าที่คู่ข้อมูลแตกต่างกันอย่างมีนัยสำคัญเมื่อช่วงความเชื่อมั่นไม่รวมศูนย์ หรือกล่าวอีกนัยหนึ่งคือค่า p-value ที่ปรับแล้วต่ำกว่า 0.05 ในชุดข้อมูลนี้ การเปรียบเทียบที่เกี่ยวข้องกับสารพิษหมายเลข 3 มีนัยสำคัญ ซึ่งสอดคล้องกับแผนภาพกล่อง: กลุ่มที่ 3 มีเวลาการรอดชีวิตเฉลี่ยต่ำกว่ากลุ่มที่ 1 และ 2 อย่างชัดเจน ในขณะที่กลุ่มที่ 1 และ 2 ไม่แตกต่างกันทางสถิติ

ความแปรปรวนสองทาง

การวิเคราะห์ความแปรปรวนแบบสองทาง (Two-way ANOVA) เพิ่มปัจจัยที่สองเข้าไปในสูตร วิธีการทำงานเหมือนกับการทดสอบแบบทางเดียวทุกประการ เพียงแต่สูตรเปลี่ยนไปเท่านั้น:

y ~ x1 + x2

ในที่นี้ y คือตัวแปรตอบสนองเชิงปริมาณ ในขณะที่ x1 และ x2 เป็นปัจจัยเชิงหมวดหมู่

สมมติฐานในการทดสอบ ANOVA สองทาง

  • H0: ค่าเฉลี่ยของกลุ่มเท่ากันสำหรับตัวแปรปัจจัยทั้งสอง
  • H1: อย่างน้อยหนึ่งค่าเฉลี่ยของกลุ่มแตกต่างกัน สำหรับอย่างน้อยหนึ่งในสองปัจจัย

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

ปรับโค้ดโดยเพิ่มคำสั่ง treat ไว้ข้างๆ ตัวแปรอิสระตัวแรก

anova_two_way <- aov(time~poison + treat, data = df)
summary(anova_two_way)

Output:

##             Df Sum Sq Mean Sq F value  Pr(>F)    
## poison       2 1.0330  0.5165   20.64 5.7e-07 ***
## treat        3 0.9212  0.3071   12.27 6.7e-06 ***
## Residuals   42 1.0509  0.0250                    
## ---

ค่า p-value ทั้งสองค่า (5.7e-07 สำหรับสารพิษ และ 6.7e-06 สำหรับการรักษา) อยู่ต่ำกว่า 0.05 มาก ดังนั้นคุณจึงปฏิเสธสมมติฐาน H0 สำหรับทั้งสองปัจจัย และสรุปได้ว่าการเปลี่ยนแปลงสารพิษหรือการรักษามีผลต่อระยะเวลาการรอดชีวิต

การเพิ่มพจน์ปฏิสัมพันธ์

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

anova_interaction <- aov(time~poison * treat, data = df)
summary(anova_interaction)

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

ANOVA ใน R: คู่มืออ้างอิงการทดสอบอย่างรวดเร็ว

ตารางด้านล่างแสดงรายการการทดสอบแต่ละรายการที่ใช้ข้างต้น คำสั่ง R ที่ใช้รันการทดสอบ และสมมติฐานที่การทดสอบนั้นประเมิน:

เอกสาร Code สมมติฐาน ค่า P
การวิเคราะห์ทางสถิติแบบทางเดียว
aov(y ~ X, data = df)
H1: ค่าเฉลี่ยแตกต่างกันสำหรับกลุ่มอย่างน้อยหนึ่งกลุ่ม 0.05
จับคู่
TukeyHSD(ANOVA summary)
0.05
การวิเคราะห์ทางสถิติแบบสองทาง
aov(y ~ X1 + X2, data = df)
H1: อย่างน้อยหนึ่งค่าเฉลี่ยของกลุ่มแตกต่างกันสำหรับปัจจัยใดปัจจัยหนึ่ง 0.05

คำถามที่พบบ่อย

ค่า F คืออัตราส่วนของความแปรปรวนระหว่างกลุ่มต่อความแปรปรวนภายในกลุ่ม ค่าที่ใกล้เคียง 1 แสดงว่าค่าเฉลี่ยของกลุ่มต่างๆ คล้ายคลึงกัน ค่าที่สูงแสดงว่ากลุ่มต่างๆ มาจากประชากรที่มีค่าเฉลี่ยแตกต่างกัน

ใช้ oneway.test() โดยตั้งค่า var.equal = FALSE เมื่อค่าความแปรปรวนไม่เท่ากัน และใช้ kruskal.test() เมื่อค่าความคลาดเคลื่อนไม่เป็นไปตามการแจกแจงแบบปกติอย่างชัดเจน การแปลงค่าการตอบสนองที่เบี่ยงเบนด้วย log() มักจะช่วยคืนค่าให้เป็นแบบปกติและค่าความแปรปรวนเท่ากันได้

การทดสอบ t แต่ละครั้งมีความเสี่ยงที่จะเกิดผลบวกเท็จ 5 เปอร์เซ็นต์ การทดสอบแบบจับคู่สามครั้งจะเพิ่มอัตราความผิดพลาดโดยรวมเป็นประมาณ 14 เปอร์เซ็นต์ การวิเคราะห์ความแปรปรวน (ANOVA) จะคงการทดสอบโดยรวมเพียงครั้งเดียวไว้ที่ 5 เปอร์เซ็นต์ และวิธี Tukey HSD จะปรับการเปรียบเทียบแบบจับคู่

ANOVA เป็นตัวกรองการเลือกคุณลักษณะมาตรฐาน โดยจะจัดอันดับตัวทำนายเชิงหมวดหมู่ตามความสามารถในการแยกเป้าหมายเชิงตัวเลข ทีม AI ยังใช้ ANOVA เพื่อเปรียบเทียบโมเดลเวอร์ชันต่างๆ ในแต่ละรอบของการตรวจสอบแบบไขว้ (cross-validation) อีกด้วย

ใช่แล้ว ผู้ช่วย AI สามารถอธิบายระดับความเป็นอิสระ แปลค่า p เป็นภาษาที่เข้าใจง่าย และแจ้งเตือนการละเมิดข้อสมมติฐานในแผนภาพการวินิจฉัยได้ โปรดตรวจสอบความถูกต้องของการอ่านค่ากับผลลัพธ์จาก leveneTest() และ shapiro.test() ของคุณเองเสมอ

สรุปโพสต์นี้ด้วย: