นี่อาจดูเหมือนการโปรโมตตัวเองเล็กน้อย (และฉันคิดว่ามันเป็น) แต่ฉันพัฒนาแพ็คเกจlsmeansสำหรับ R (มีให้ใน CRAN) ที่ออกแบบมาเพื่อจัดการกับสถานการณ์แบบนี้ นี่คือวิธีการทำงานสำหรับตัวอย่างของคุณ:
> sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
> sample.aov <- aov(DV ~ factor(IV), data = sample.data)
> library("lsmeans")
> (sample.lsm <- lsmeans(sample.aov, "IV"))
IV lsmean SE df lower.CL upper.CL
1 -3.009669 0.2237448 76 -3.4552957 -2.564043
2 -3.046072 0.2237448 76 -3.4916980 -2.600445
3 1.147080 0.2237448 76 0.7014539 1.592707
4 3.049153 0.2237448 76 2.6035264 3.494779
> contrast(sample.lsm, list(mycon = c(-3,-1,1,3)))
contrast estimate SE df t.ratio p.value
mycon 22.36962 1.000617 76 22.356 <.0001
คุณสามารถระบุความแตกต่างเพิ่มเติมในรายการหากคุณต้องการ สำหรับตัวอย่างนี้คุณจะได้ผลลัพธ์เดียวกันกับความคมชัดเชิงพหุนามเชิงเส้นในตัว:
> con <- contrast(sample.lsm, "poly")
> con
contrast estimate SE df t.ratio p.value
linear 22.369618 1.0006172 76 22.356 <.0001
quadratic 1.938475 0.4474896 76 4.332 <.0001
cubic -6.520633 1.0006172 76 -6.517 <.0001
เพื่อยืนยันสิ่งนี้โปรดทราบว่า"poly"
ข้อมูลจำเพาะนำไปสู่การโทรpoly.lsmc
ซึ่งจะสร้างผลลัพธ์เหล่านี้:
> poly.lsmc(1:4)
linear quadratic cubic
1 -3 1 -1
2 -1 -1 3
3 1 -1 -3
4 3 1 1
หากคุณต้องการที่จะทำการทดสอบร่วมกันของหลายความแตกต่างให้ใช้ฟังก์ชั่นtest
joint = TRUE
ตัวอย่างเช่น,
> test(con, joint = TRUE)
สิ่งนี้จะสร้างการทดสอบ "type III" ต่างจากcar::Anova()
มันจะทำอย่างถูกต้องโดยไม่คำนึงถึงการเข้ารหัสความคมชัดที่ใช้ในขั้นตอนการปรับรุ่น นี่เป็นเพราะฟังก์ชั่นเชิงเส้นที่ถูกทดสอบถูกระบุโดยตรงมากกว่าโดยนัยผ่านการลดแบบจำลอง คุณลักษณะเพิ่มเติมคือกรณีที่ตรวจพบความแตกต่างที่ขึ้นอยู่กับการตรวจจับเชิงเส้นและสถิติการทดสอบที่ถูกต้องและองศาความเป็นอิสระถูกสร้างขึ้น