Split-Plot ANOVA: การทดสอบเปรียบเทียบแบบใน R


12

ฉันจะทดสอบเอฟเฟกต์ใน ANOVA แบบแยกส่วนได้อย่างไรโดยใช้การเปรียบเทียบแบบจำลองที่เหมาะสมสำหรับใช้กับXและMข้อโต้แย้งของanova.mlm()ใน R ฉันคุ้นเคยกับ?anova.mlmDalgaard (2007) [1] น่าเสียดายที่มันมีเฉพาะแปรงแบบแยกส่วน การทำเช่นนี้ในการออกแบบแบบสุ่มอย่างสมบูรณ์ด้วยสองปัจจัยภายในวิชา:

N  <- 20  # 20 subjects total
P  <- 3   # levels within-factor 1
Q  <- 3   # levels within-factor 2
DV <- matrix(rnorm(N* P*Q), ncol=P*Q)           # random data in wide format
id <- expand.grid(IVw1=gl(P, 1), IVw2=gl(Q, 1)) # intra-subjects layout of data matrix

library(car)        # for Anova()
fitA <- lm(DV ~ 1)  # between-subjects design: here no between factor
resA <- Anova(fitA, idata=id, idesign=~IVw1*IVw2)
summary(resA, multivariate=FALSE, univariate=TRUE)  # all tests ...

การเปรียบเทียบโมเดลต่อไปนี้นำไปสู่ผลลัพธ์เดียวกัน โมเดลที่ถูก จำกัด ไม่รวมเอฟเฟกต์ที่เป็นปัญหา แต่เอฟเฟกต์อื่นทั้งหมดของคำสั่งซื้อเดียวกันหรือต่ำกว่ารุ่นเต็มจะเพิ่มเอฟเฟกต์ที่เป็นปัญหา

anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitA, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                      X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

การออกแบบ Splot Splot พร้อมปัจจัยภายในและอีกหนึ่งปัจจัย:

idB  <- subset(id, IVw2==1, select="IVw1")          # use only first within factor
IVb  <- gl(2, 10, labels=c("A", "B"))               # between-subjects factor
fitB <- lm(DV[ , 1:P] ~ IVb)                        # between-subjects design
resB <- Anova(fitB, idata=idB, idesign=~IVw1)
summary(resB, multivariate=FALSE, univariate=TRUE)  # all tests ...

นี่เป็นanova()คำสั่งที่ทำซ้ำการทดสอบ แต่ฉันไม่รู้ว่าทำไมมันถึงทำงาน ทำไมการทดสอบการเปรียบเทียบแบบจำลองต่อไปนี้นำไปสู่ผลลัพธ์เดียวกัน

anova(fitB, idata=idB, X=~1, test="Spherical") # IVw1, IVw1:IVb
anova(fitB, idata=idB, M=~1, test="Spherical") # IVb

สองปัจจัยภายในวิชาและอีกหนึ่งปัจจัยระหว่างวิชา:

fitC <- lm(DV ~ IVb)  # between-subjects design
resC <- Anova(fitC, idata=id, idesign=~IVw1*IVw2)
summary(resC, multivariate=FALSE, univariate=TRUE)  # all tests ...

ฉันจะทำซ้ำผลลัพธ์ที่ได้รับข้างต้นด้วยการเปรียบเทียบแบบจำลองที่สอดคล้องกันเพื่อใช้กับXและMข้อโต้แย้งของได้anova.mlm()อย่างไร ตรรกะที่อยู่เบื้องหลังการเปรียบเทียบแบบจำลองเหล่านี้คืออะไร

แก้ไข: suncoolsu ชี้ให้เห็นว่าสำหรับวัตถุประสงค์ในทางปฏิบัติทั้งหมดข้อมูลจากการออกแบบเหล่านี้ควรวิเคราะห์โดยใช้แบบจำลองผสม แต่ผมยังคงต้องการที่จะเข้าใจวิธีที่จะทำซ้ำผลของการมีsummary(Anova())anova.mlm(..., X=?, M=?)

[1]: Dalgaard, P. 2007. ฟังก์ชั่นใหม่สำหรับการวิเคราะห์หลายตัวแปร ข่าว R, 7 (2), 2-7


เฮ้ @Caracal ฉันคิดว่าวิธีที่คุณใช้ "การออกแบบแยกส่วน" ไม่ใช่วิธีที่ Casella จอร์จกำหนดไว้ในหนังสือของเขาการออกแบบเชิงสถิติ Split Plot พูดถึงการทำรังอย่างแน่นอน แต่เป็นวิธีพิเศษในการกำหนดโครงสร้างความสัมพันธ์ และส่วนใหญ่เวลาที่คุณจะสิ้นสุดการใช้แพคเกจเพื่อให้พอดีกับรูปแบบและไม่ได้lme4 lmแต่นี่อาจเป็นมุมมองหนังสือที่เฉพาะเจาะจงมาก ฉันจะให้ความคิดเห็นของคนอื่นเกี่ยวกับมัน ฉันสามารถยกตัวอย่างตามวิธีที่ฉันตีความซึ่งแตกต่างจากของคุณ
suncoolsu

2
@suncoolsu คำศัพท์ในสังคมศาสตร์อาจแตกต่างกัน แต่ทั้ง Kirk (1995, p512) และ Maxwell & Delaney (2004, p592) มีรูปแบบการโทรที่มีหนึ่งระหว่างและหนึ่งในปัจจัย "split-plot" ปัจจัยระหว่างให้ "แปลง" (คล้ายกับแหล่งกำเนิดทางการเกษตร)
caracal

ฉันมีหลายสิ่งในจานของฉันในขณะนี้ ฉันจะขยายคำตอบของฉันให้เฉพาะเจาะจงกับคำถามของคุณมากขึ้น ฉันเห็นว่าคุณใช้ความพยายามอย่างมากในการกำหนดกรอบคำถามของคุณ ขอบคุณสำหรับสิ่งนั้น
suncoolsu

คำตอบ:


10

XและMพื้นระบุรุ่นที่สองคุณต้องการเปรียบเทียบ แต่ในแง่ของผลกระทบภายในเรื่อง; มันก็แสดงให้เห็นถึงผลการค้นหาสำหรับการทำงานร่วมกันของทุกผลกระทบระหว่างเรื่อง (รวมทั้งตัด) กับผลกระทบภายในเรื่องที่มีการเปลี่ยนแปลงระหว่างและXM

ตัวอย่างของคุณfitBง่ายต่อการเข้าใจถ้าเราเพิ่มค่าเริ่มต้นXและM:

anova(fitB, idata=idB, M=~1, X=~0, test="Spherical") # IVb
anova(fitB, idata=idB, M=diag(3), X=~1, test="Spherical") # IVw1, IVw1:IVb

โมเดลแรกคือการเปลี่ยนแปลงจากไม่มีผลกระทบของหัวเรื่อง (ทั้งหมดมีค่าเฉลี่ยเท่ากัน) เป็นค่าเฉลี่ยที่แตกต่างกันไปในแต่ละค่าดังนั้นเราจึงได้เพิ่มเอidฟเฟกต์แบบสุ่มซึ่งเป็นสิ่งที่ถูกต้องในการทดสอบการสกัดกั้นโดยรวม บน.

รุ่นที่สองโฆษณาid:IVw1ปฏิสัมพันธ์ซึ่งเป็นสิ่งที่ถูกต้องในการทดสอบIVw1และIVw1:IVbข้อกำหนด เนื่องจากมีเอฟเฟกต์ภายในเรื่องเดียวเท่านั้น (มีสามระดับ) ค่าเริ่มต้นของdiag(3)โมเดลที่สองจะคำนึงถึงมัน มันจะเทียบเท่ากับการทำงาน

anova(fitB, idata=idB, M=~IVw1, X=~1, test="Spherical") # IVw1, IVw1:IVb

สำหรับคุณfitCฉันเชื่อว่าคำสั่งเหล่านี้จะสร้างการAnovaสรุปใหม่

anova(fitC, idata=id, M=~1, X=~0, test="Spherical") #IVb
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitC, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                  X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

ตอนนี้อย่างที่คุณค้นพบคำสั่งเหล่านี้ยุ่งยากมาก โชคดีที่มีเหตุผลไม่มากที่จะใช้อีกต่อไป หากคุณยินดีที่จะใช้ความกลมกลืนคุณควรใช้aovหรือเพื่อให้ง่ายขึ้นกว่าเดิมเพียงใช้lmและคำนวณการทดสอบ F ที่เหมาะสมด้วยตัวคุณเอง หากคุณไม่เต็มใจที่จะใช้ความกลมกลืนการใช้lmeเป็นวิธีที่จะไปตามที่คุณมีความยืดหยุ่นมากกว่าที่คุณทำกับการแก้ไข GG และ HF

ยกตัวอย่างเช่นที่นี่aovและสำหรับคุณlm fitAคุณจำเป็นต้องมีข้อมูลในรูปแบบยาวก่อน นี่เป็นวิธีหนึ่งในการทำเช่นนั้น:

library(reshape)
d0 <- data.frame(id=1:nrow(DV), DV)
d0$IVb <- IVb
d0 <- melt(d0, id.vars=c(1,11), measure.vars=2:10)
id0 <- id
id0$variable <- factor(levels(d0$variable), levels=levels(d0$variable))
d <- merge(d0, id0)
d$id <- factor(d$id)

และนี่คือlm andรหัส aov`:

anova(lm(value ~ IVw1*IVw2*id, data=d))
summary(aov(value ~ IVw1*IVw2 + Error(id/(IVw1*IVw2)), data=d))

ขอบคุณมากนั่นคือสิ่งที่ฉันกำลังมองหา! ผมสนใจยังคงอยู่ในanova()เพราะมีปัญหากับการAnova()อธิบายไว้ที่นี่ แต่ข้อเสนอแนะสุดท้ายของคุณก็ใช้ได้เช่นกันและเรียบง่ายกว่า (สิ่งเล็กน้อย: ฉันคิดว่า 2 บรรทัดสุดท้ายคือแต่ละวงเล็บที่หายไป 1 ปิดที่ขาดหายไปและมันควรอ่านError(id/(IVw1*IVw2)))
caracal

8

การออกแบบแยกส่วนมีต้นกำเนิดในการเกษตรจึงเป็นชื่อ แต่พวกเขามักจะเกิดขึ้นและฉันจะบอกว่า - เทียมของการทดลองทางคลินิกส่วนใหญ่ พล็อตหลักได้รับการปฏิบัติด้วยระดับของปัจจัยหนึ่งในขณะที่ระดับของปัจจัยอื่น ๆ ที่ได้รับอนุญาตให้แตกต่างกันไปด้วยย่อย การออกแบบเกิดขึ้นเนื่องจากข้อ จำกัด ในการสุ่มเต็มรูปแบบ ตัวอย่างเช่น: เขตข้อมูลอาจแบ่งออกเป็นสี่ส่วนย่อย อาจเป็นไปได้ที่จะปลูกสายพันธุ์ต่าง ๆ ในแผนการย่อย แต่อาจใช้การชลประทานเพียงประเภทเดียวเท่านั้นสำหรับพื้นที่ทั้งหมด ไม่ใช่ความแตกต่างระหว่างการแยกและบล็อก. บล็อกเป็นคุณลักษณะของหน่วยการทดลองซึ่งเรามีตัวเลือกให้ใช้ประโยชน์จากการออกแบบการทดลองเพราะเรารู้ว่ามีอยู่ ในทางกลับกันการแยกกำหนดข้อ จำกัด เกี่ยวกับสิ่งที่ได้รับมอบหมายจากปัจจัยที่เป็นไปได้ พวกเขากำหนดข้อกำหนดในการออกแบบที่ป้องกันการสุ่มสมบูรณ์

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

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

นี่คือวิธีที่คุณทำในR:

install.packages("faraway")
data(irrigation)
summary(irrigation)

library(lme4)

R> (lmer(yield ~ irrigation * variety + (1|field), data = irrigation))
Linear mixed model fit by REML 
Formula: yield ~ irrigation * variety + (1 | field) 
   Data: irrigation 
  AIC  BIC logLik deviance REMLdev
 65.4 73.1  -22.7     68.6    45.4
Random effects:
 Groups   Name        Variance Std.Dev.
 field    (Intercept) 16.20    4.02    
 Residual              2.11    1.45    
Number of obs: 16, groups: field, 8

Fixed effects:
                       Estimate Std. Error t value
(Intercept)               38.50       3.02   12.73
irrigationi2               1.20       4.28    0.28
irrigationi3               0.70       4.28    0.16
irrigationi4               3.50       4.28    0.82
varietyv2                  0.60       1.45    0.41
irrigationi2:varietyv2    -0.40       2.05   -0.19
irrigationi3:varietyv2    -0.20       2.05   -0.10
irrigationi4:varietyv2     1.20       2.05    0.58

Correlation of Fixed Effects:
            (Intr) irrgt2 irrgt3 irrgt4 vrtyv2 irr2:2 irr3:2
irrigation2 -0.707                                          
irrigation3 -0.707  0.500                                   
irrigation4 -0.707  0.500  0.500                            
varietyv2   -0.240  0.170  0.170  0.170                     
irrgtn2:vr2  0.170 -0.240 -0.120 -0.120 -0.707              
irrgtn3:vr2  0.170 -0.120 -0.240 -0.120 -0.707  0.500       
irrgtn4:vr2  0.170 -0.120 -0.120 -0.240 -0.707  0.500  0.500

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

I_1 | I_2 | I_3 | I_4

V_1 V_2 | V_1 V_2 | V_1 V_2 | V_1 V_2

แต่นี่เป็นตัวแปรพิเศษที่มีเอฟเฟกต์พล็อตคงที่และเอฟเฟกต์ย่อย สามารถมีตัวแปรที่หนึ่งหรือมากกว่านั้นสุ่ม อาจมีการออกแบบที่ซับซ้อนมากขึ้นเช่นการแบ่งการออกแบบ .. โดยทั่วไปคุณสามารถก้าวร้าวและบ้าคลั่ง แต่เนื่องจากโครงสร้างและการแจกแจงแบบพื้นฐาน (เช่นแบบคงที่หรือแบบสุ่มซ้อนกันหรือข้าม, .. ) เป็นที่เข้าใจกันอย่างชัดเจน a lmer-Ninjaจะไม่มีปัญหาในการสร้างแบบจำลอง อาจเป็นการตีความหมายที่ไม่เป็นระเบียบ

เกี่ยวกับการเปรียบเทียบพูดว่าคุณมีlmer1และlmer2:

anova(lmer1, lmer2)

จะให้การทดสอบที่เหมาะสมตามสถิติการทดสอบไคสแควร์ที่ มีองศาอิสระเท่ากับความแตกต่างของพารามิเตอร์

cf: Faraway, J. , ขยายโมเดลเชิงเส้นด้วย R

Casella, G. , การออกแบบทางสถิติ


ฉันขอขอบคุณคำแนะนำสำหรับการวิเคราะห์การออกแบบ splot splot ด้วยโมเดลเอฟเฟกต์ผสมและข้อมูลพื้นหลังเพิ่มเติม! แน่นอนว่าเป็นวิธีที่ต้องการในการวิเคราะห์ ฉันได้อัปเดตคำถามของฉันเพื่อเน้นย้ำว่าฉันยังต้องการทราบวิธีการทำสิ่งนี้ "แบบเก่า"
caracal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.