Writing
BiostatisticsRstats

ทำไง เมื่อจะวิเคราะห์ Two-way (Factorial) แต่ Non-parametric

ทำไง เมื่อจะวิเคราะห์ Two-way (Factorial) แต่ Non-parametric

Two-way Non-parametric ทำไมถึงเป็นปัญหา

การวิเคราะห์ปฏิสัมพันธ์ (Interaction) ระหว่างปัจจัย เช่น “พันธุ์พืช” (Host Resistance) และ “ระดับการใส่ปุ๋ย” (Nutrient Level) คือหัวใจสำคัญของการเข้าใจระบาดวิทยา แต่ในทางปฏิบัติ ข้อมูลร้อยละการเกิดโรค มักจะมีลักษณะเบ้ (Skewed) หรือมีความแปรปรวนไม่คงที่ (Heteroscedasticity)

เมื่อ ANOVA ใช้ไม่ได้ เรามักนึกถึง Scheirer-Ray-Hare test ซึ่งเป็นส่วนขยายของ Kruskal-Wallis สำหรับ Factorial Design แต่ปัญหาคือ

ทางออกเชิงปฏิบัติ: The “Concatenation” Strategy (Treatment Combination)

หากคุณต้องการความเรียบง่าย ประสิทธิภาพ และการสื่อสารที่ตรงไปตรงมากับผู้ทบทวนบทความ (Reviewers) วิธีที่ได้รับความนิยมสูงในวงการระบาดวิทยาภาคสนามคือการยุบรวมปัจจัย (Factor levels) ให้กลายเป็น “Single Treatment Factor”

info Concatenation Strategy

หลักการ: แทนที่จะมองเป็น $2 \times 2$ Factorial ให้เรามองเป็น 4 Treatments ในแผนการทดลองแบบ One-way (CRD หรือ RCBD) แล้วใช้ Kruskal-Wallis Test ตามด้วยการเปรียบเทียบเชิงซ้อน (Post-hoc)

วิธีนี้ช่วยให้เราหลีกเลี่ยงความยุ่งยากของ Non-parametric Interaction และมุ่งเน้นไปที่การเปรียบเทียบ “กลุ่มของปัจจัย” ที่ให้ผลดีที่สุดหรือแย่ที่สุดในทางระบาดวิทยาโดยตรง

ตัวอย่างการเขียน R Code สำหรับ Workflow นี้สมมติเราทดลองเรื่อง “ผลของสายพันธุ์พืช (A, B) และระดับความชื้น (High, Low) ต่อความรุนแรงของโรค”

# 1. โหลด Library ที่จำเป็น

library(tidyverse)
library(agricolae) # สำหรับงานเกษตรโดยเฉพาะ

# 2. จำลองข้อมูล (Data Simulation)
set.seed(123)
df <- data.frame(
  Variety = rep(c("V1", "V2"), each = 10),
  Moisture = rep(c("M1", "M2"), times = 10),
  Severity = c(rbeta(10, 2, 5), rbeta(10, 5, 2)) * 100 # ข้อมูลเบ้ (Non-normal)
)

# 3. สร้าง Column ใหม่โดยการ Concatenate (หัวใจของวิธีนี้)
df <- df %>%
  mutate(Trt_Combo = paste(Variety, Moisture, sep = "_"))

# 4. วิเคราะห์ด้วย Kruskal-Wallis (One-way approach)
# เหมือนเราทำ CRD ปกติ
k_test <- kruskal(df$Severity, df$Trt_Combo, alpha = 0.05, p.adj = "bonferroni", group = TRUE)

# 5. ดูผลลัพธ์
print(k_test$statistics) # ค่าสถิติภาพรวม
print(k_test$groups)     # การจัดกลุ่มตัวอักษร (abc)

แม้ว่าวิธี Concatenation จะสะดวก แต่มีข้อแนะนำเพิ่มเติม 3 ประการ:

info Note

หากต้องรีบ หรือ ต้องการวิเคราะห์ two facterial แต่ assumptions ชี้ ไป ว่า ืเป็น Non-normal หรือ Heteroscedasticity และ ต้องการวิเคราะห์แบบเร็ว ๆ การใช้ Kruskal-Wallis บน Treatment Combination คือ “Practical Shortcut” ที่ power และลดข้อผิดพลาดในการตีความได้อย่างดี