องศาอิสระใน lmerTest :: anova ถูกต้องหรือไม่? พวกเขาแตกต่างจาก RM-ANOVA มาก


10

ฉันกำลังวิเคราะห์ผลลัพธ์ของการทดสอบเวลาตอบสนองใน R

ฉันใช้มาตรการ ANOVA ซ้ำหลายครั้ง (1 ปัจจัยภายในเรื่องที่มี 2 ระดับและ 1 ระหว่างปัจจัยหัวเรื่องกับ 2 ระดับ) ฉันวิ่งคล้ายรูปแบบผสมเชิงเส้นและผมอยากจะสรุปผลการ lmer lmerTest::anovaในรูปแบบของตารางโดยใช้การวิเคราะห์ความแปรปรวน

อย่าเข้าใจฉันผิด: ฉันไม่ได้คาดหวังผลลัพธ์ที่เหมือนกัน แต่ฉันไม่แน่ใจเกี่ยวกับระดับของเสรีภาพในlmerTest::anovaผลลัพธ์ สำหรับฉันแล้วมันค่อนข้างสะท้อนถึง ANOVA ที่ไม่มีการรวมกลุ่มวิชา

ผมตระหนักถึงความจริงที่ว่าการคำนวณองศาอิสระในรูปแบบผสมผลเป็นเรื่องยุ่งยาก แต่lmerTest::anovaเป็นที่กล่าวถึงเป็นวิธีแก้ปัญหาที่เป็นไปได้ในการปรับปรุง?pvaluesหัวข้อ ( lme4แพคเกจ)

การคำนวณนี้ถูกต้องหรือไม่ ผลลัพธ์ของการlmerTest::anovaสะท้อนรุ่นที่ระบุถูกต้องหรือไม่

ปรับปรุง:ฉันทำให้ความแตกต่างของแต่ละบุคคลมีขนาดใหญ่ขึ้น องศาความอิสระlmerTest::anovaนั้นแตกต่างจากโนวาแบบง่าย ๆ แต่ฉันก็ยังไม่แน่ใจว่าทำไมพวกเขาถึงมีขนาดใหญ่มากสำหรับปัจจัย / การโต้ตอบภายใน

# mini example with ANT dataset from ez package
library(ez); library(lme4); library(lmerTest)

# repeated measures ANOVA with ez package
data(ANT)
ANT.2 <- subset(ANT, !error)
# update: make individual differences larger
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]

anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum), 
  within = .(direction), between = .(group))
anova.ez

# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)

# simple ANOVA on all available data
m <- lm(rt ~ group * direction, data = ANT.2)
anova(m)

ผลลัพธ์ของโค้ดด้านบน [ อัพเดท ]:

anova.ez

$ ANOVA

           Effect DFn DFd         F          p p<.05          ges
2           group   1  18 2.6854464 0.11862957       0.1294475137
3       direction   1  18 0.9160571 0.35119193       0.0001690471
4 group:direction   1  18 4.9169156 0.03970473     * 0.0009066868

lmerTest :: ANOVA (โมเดล)

Analysis of Variance Table of type 3  with  Satterthwaite 
approximation for degrees of freedom
                Df Sum Sq Mean Sq F value Denom Pr(>F)
group            1  13293   13293  2.6830    18 0.1188
direction        1   1946    1946  0.3935  5169 0.5305
group:direction  1  11563   11563  2.3321  5169 0.1268

ANOVA (เมตร)

Analysis of Variance Table

Response: rt
                  Df   Sum Sq Mean Sq  F value Pr(>F)    
group              1  1791568 1791568 242.3094 <2e-16 ***
direction          1      728     728   0.0985 0.7537    
group:direction    1    12024   12024   1.6262 0.2023    
Residuals       5187 38351225    7394                    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

คำตอบ:


13

ฉันคิดว่าlmerTestมันทำให้ถูกต้องและezanovaทำให้มันผิดในกรณีนี้

  • ผลลัพธ์จากการlmerTestเห็นด้วยกับสัญชาติญาณ / ความเข้าใจของฉัน
  • การคำนวณที่แตกต่างกันสองในlmerTest(Satterthwaite และ Kenward-Roger) เห็นด้วย
  • พวกเขายังเห็นด้วย nlme::lme
  • เมื่อฉันเรียกใช้ezanovaให้เตือนซึ่งฉันไม่เข้าใจทั้งหมด แต่ไม่ควรมองข้าม ...

ตัวอย่างการเรียกใช้ซ้ำ:

library(ez); library(lmerTest); library(nlme)
data(ANT)
ANT.2 <- subset(ANT, !error)
set.seed(101)  ## for reproducibility
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]

คิดการออกแบบการทดลอง

with(ANT.2,table(subnum,group,direction))

ดังนั้นดูเหมือนว่าปัจเจกบุคคล ( subnum) จะอยู่ในกลุ่มควบคุมหรือกลุ่มการรักษาและแต่ละกลุ่มจะถูกทดสอบสำหรับทั้งสองทิศทาง - คือสามารถทดสอบทิศทางภายในบุคคล (ตัวหาร df มีขนาดใหญ่) แต่กลุ่มและกลุ่ม: สามารถทดสอบทิศทางได้เท่านั้น บุคคล

(anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum), 
    within = .(direction), between = .(group)))
## $ANOVA
##            Effect DFn DFd         F          p p<.05          ges
## 2           group   1  18 2.4290721 0.13651174       0.1183150147
## 3       direction   1  18 0.9160571 0.35119193       0.0002852171
## 4 group:direction   1  18 4.9169156 0.03970473     * 0.0015289914

ที่นี่ฉันจะได้รับWarning: collapsing data to cell means. *IF* the requested effects are a subset of the full design, you must use the "within_full" argument, else results may be inaccurate. ตัวหาร DF ดูขี้ขลาดเล็กน้อย (ทั้งหมดเท่ากับ 18): ฉันคิดว่าพวกเขาควรใหญ่กว่าสำหรับทิศทางและกลุ่ม: ทิศทางซึ่งสามารถทดสอบได้อย่างอิสระ (แต่จะเล็กกว่านี้ถ้าคุณเพิ่ม(direction|subnum)โมเดล)

# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)
##                 Df  Sum Sq Mean Sq F value Denom Pr(>F)
## group            1 12065.7 12065.7  2.4310    18 0.1364
## direction        1  1952.2  1952.2  0.3948  5169 0.5298
## group:direction  1 11552.2 11552.2  2.3299  5169 0.1270

Dfคอลัมน์ที่นี่หมายถึง DF เศษ, Denom(ที่สองไปแล้ว) ให้ DF หารประมาณ; พวกเขาเห็นด้วยกับสัญชาตญาณคลาสสิก ที่สำคัญกว่านั้นเรายังได้คำตอบที่แตกต่างกันสำหรับค่า F ...

นอกจากนี้เรายังสามารถตรวจสอบกับ Kenward-Roger อีกครั้ง ( ช้ามากเพราะเกี่ยวข้องกับการ refitting โมเดลหลายครั้ง)

lmerTest::anova(model,ddf="Kenward-Roger")

ผลลัพธ์ที่เหมือนกัน

สำหรับตัวอย่างนี้lme(จากnlmeแพ็คเกจ) ใช้งานได้ดีอย่างสมบูรณ์แบบโดยคาดเดาส่วนที่เหมาะสม df (ค่า F และ p-values ​​แตกต่างกันเล็กน้อย):

model3 <- lme(rt ~ group * direction, random=~1|subnum, data = ANT.2)
anova(model3)[-1,]
##                 numDF denDF   F-value p-value
## group               1    18 2.4334314  0.1362
## direction           1  5169 0.3937316  0.5304
## group:direction     1  5169 2.3298847  0.1270

ถ้าฉันพอดีกับการโต้ตอบระหว่างdirectionและsubnumdf สำหรับdirectionและgroup:directionมีขนาดเล็กกว่ามาก (ฉันจะคิดว่าพวกเขาจะอายุ 18 แต่บางทีฉันอาจจะผิดพลาด):

model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)
lmerTest::anova(model2)
##                 Df  Sum Sq Mean Sq F value   Denom Pr(>F)
## group            1 20334.7 20334.7  2.4302  17.995 0.1364
## direction        1  1804.3  1804.3  0.3649 124.784 0.5469
## group:direction  1 10616.6 10616.6  2.1418 124.784 0.1459

ขอบคุณ @Ben Bolker สำหรับคำตอบของคุณ ฉันจะคิดถึงความคิดเห็นของคุณและทำการทดสอบเพิ่มเติมอีกสองสามครั้ง ฉันเข้าใจezAnovaคำเตือนที่คุณไม่ควรเรียกใช้ 2x2 anova ถ้าอันที่จริงข้อมูลของคุณมาจากการออกแบบ 2x2x2
Jiri Lukavsky

1
อาจเป็นคำเตือนที่มาพร้อมกับezอาจเป็นคำใหม่; จริงๆแล้วมันมีสองส่วนที่สำคัญ: (1) ข้อมูลนั้นถูกรวบรวมและ (2) บางสิ่งเกี่ยวกับการออกแบบบางส่วน # 1 มีความเกี่ยวข้องมากที่สุดกับความคลาดเคลื่อนเนื่องจากอธิบายว่าในการทำโนวาแบบไม่ผสมเอฟเฟ็กต์แบบดั้งเดิมเราต้องรวบรวมข้อมูลไปยังการสังเกตครั้งเดียวต่อเซลล์ของการออกแบบ ในกรณีนี้เราต้องการหนึ่งการสังเกตต่อเรื่องต่อระดับของตัวแปร "ทิศทาง" (ในขณะที่รักษาป้ายกำกับกลุ่มสำหรับวิชา) ezANOVA คำนวณสิ่งนี้โดยอัตโนมัติ
Mike Lawrence

+1 แต่ฉันไม่แน่ใจว่า ezanova ทำผิด ฉันวิ่งsummary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))และจะให้ 16 (?) สำหรับ DFS groupและ 18 และdirection group:directionความจริงที่ว่ามีการสังเกตการณ์ประมาณ 125 ครั้งต่อกลุ่ม / ทิศทางนั้นไม่เกี่ยวข้องกับ RM-ANOVA มากนักดูคำถามสถิติของฉันเองเช่นคำถามที่ว่า ปฏิสัมพันธ์ทิศทาง
อะมีบา

เบ็นติดตามความคิดเห็นก่อนหน้าของฉัน: จริง ๆ แล้วคุณมีความหมายอย่างไรกับ "ฉันคิดว่าพวกเขาจะอายุ 18 แต่บางทีฉันอาจจะผิดพลาด"? ถ้าเป็นเช่นนั้นเราอยู่ในข้อตกลง แต่อีกครั้ง 18 เห็นด้วยกับ RM-ANOVA และไม่เห็นด้วยกับlmerTestที่ประมาณ ~ 125 dfs
อะมีบา

1
อัปเดตเป็นข้างต้น: lmerTest::anova(model2, ddf="Kenward-Roger")ส่งคืน 18.000 df สำหรับgroupและ17.987df สำหรับอีกสองปัจจัยซึ่งเป็นข้อตกลงที่ยอดเยี่ยมกับ RM-ANOVA (ตาม ezAnova) ข้อสรุปของฉันคือการประมาณของ Satterthwaite ล้มเหลวmodel2ด้วยเหตุผลบางอย่าง
อะมีบา

10

โดยทั่วไปฉันเห็นด้วยกับการวิเคราะห์ของเบ็น แต่ขอเพิ่มข้อสังเกตอีกสองข้อและปรีชาเล็กน้อย

ก่อนผลลัพธ์โดยรวม:

  1. ผลลัพธ์ lmerTest ที่ใช้วิธี Satterthwaite นั้นถูกต้อง
  2. วิธี Kenward-Roger นั้นถูกต้องและเห็นด้วยกับ Satterthwaite

เบนแนวทางการออกแบบที่subnumซ้อนอยู่ในgroupขณะที่direction และมีการข้ามกับgroup:direction subnumซึ่งหมายความว่าระยะผิดพลาดธรรมชาติ (เช่นที่เรียกว่า "การปิดล้อมข้อผิดพลาดชั้น") สำหรับgroupเป็นsubnumในขณะที่ชั้นล้อมรอบข้อผิดพลาดสำหรับคำอื่น ๆ (รวมsubnum) เป็นคลาดเคลื่อน

โครงสร้างนี้สามารถแสดงในแผนภาพปัจจัยที่เรียกว่า:

names <- c(expression("[I]"[5169]^{5191}),
           expression("[subnum]"[18]^{20}), expression(grp:dir[1]^{4}),
           expression(dir[1]^{2}), expression(grp[1]^{2}), expression(0[1]^{1}))
x <- c(2, 4, 4, 6, 6, 8)
y <- c(5, 7, 5, 3, 7, 5)
plot(NA, NA, xlim=c(2, 8), ylim=c(2, 8), type="n", axes=F, xlab="", ylab="")
text(x, y, names) # Add text according to ’names’ vector
# Define coordinates for start (x0, y0) and end (x1, y1) of arrows:
x0 <- c(1.8, 1.8, 4.2, 4.2, 4.2, 6, 6) + .5
y0 <- c(5, 5, 7, 5, 5, 3, 7)
x1 <- c(2.7, 2.7, 5, 5, 5, 7.2, 7.2) + .5
y1 <- c(5, 7, 7, 3, 7, 5, 5)
arrows(x0, y0, x1, y1, length=0.1)

แผนภาพโครงสร้างปัจจัย

ที่นี่คำที่สุ่มอยู่ในวงเล็บ0แสดงถึงค่าเฉลี่ย (หรือสกัดกั้น) [I]แสดงถึงข้อผิดพลาดหมายเลขซุปเปอร์สคริปต์คือจำนวนของระดับและหมายเลขสคริปต์ย่อยคือจำนวนองศาความเป็นอิสระที่สมมติว่ามีการออกแบบที่สมดุล แผนภาพแสดงให้เห็นว่าคำผิดพลาดตามธรรมชาติ (ล้อมรอบชั้นข้อผิดพลาด) สำหรับgroupคือsubnumและว่าตัวเศษ df สำหรับsubnumซึ่งเท่ากับตัวส่วน df สำหรับgroupคือ 18: 20 ลบ 1 df สำหรับgroupและ 1 df สำหรับค่าเฉลี่ยโดยรวม แนะนำที่ครอบคลุมมากขึ้นเพื่อแผนภาพโครงสร้างปัจจัยที่มีอยู่ในบทที่ 2 ที่นี่: https://02429.compute.dtu.dk/eBook

หากข้อมูลที่ถูกปรับให้สมดุลว่าเราจะสามารถที่จะสร้าง F-การทดสอบจาก SSQ anova.lmสลายตัวให้เป็นไปตาม เนื่องจากชุดข้อมูลมีความสมดุลอย่างใกล้ชิดเราจึงสามารถรับการทดสอบ F โดยประมาณดังนี้:

ANT.2 <- subset(ANT, !error)
set.seed(101)
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]
fm <- lm(rt ~ group * direction + subnum, data=ANT.2)
(an <- anova(fm))
Analysis of Variance Table

Response: rt
                  Df   Sum Sq Mean Sq  F value Pr(>F)    
group              1   994365  994365 200.5461 <2e-16 ***
direction          1     1568    1568   0.3163 0.5739    
subnum            18  7576606  420923  84.8927 <2e-16 ***
group:direction    1    11561   11561   2.3316 0.1268    
Residuals       5169 25629383    4958                    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

นี่คือค่าFและpทั้งหมดจะถูกคำนวณโดยสมมติว่าเงื่อนไขทั้งหมดมีส่วนที่เหลือเป็น stratum ข้อผิดพลาดที่ล้อมรอบและนั่นเป็นจริงสำหรับทุกคนยกเว้น 'กลุ่ม' 'ความสมดุลที่ถูกต้อง' F -test สำหรับกลุ่มคือแทน:

F_group <- an["group", "Mean Sq"] / an["subnum", "Mean Sq"]
c(Fvalue=F_group, pvalue=pf(F_group, 1, 18, lower.tail = FALSE))
   Fvalue    pvalue 
2.3623466 0.1416875 

โดยที่เราใช้subnumMS แทนResidualsMS ในตัวหารF -value

โปรดทราบว่าค่าเหล่านี้ตรงกับผลลัพธ์ Satterthwaite ค่อนข้างดี:

model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
anova(model, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group           12065.3 12065.3     1    18  2.4334 0.1362
direction        1951.8  1951.8     1  5169  0.3936 0.5304
group:direction 11552.2 11552.2     1  5169  2.3299 0.1270

ความแตกต่างที่เหลืออยู่เกิดจากข้อมูลไม่สมดุลอย่างแน่นอน

OP เปรียบเทียบanova.lmกับanova.lmerModLmerTestซึ่งก็โอเค แต่เมื่อต้องการเปรียบเทียบ like กับ like เราต้องใช้ความแตกต่างเดียวกัน ในกรณีนี้มีความแตกต่างระหว่างanova.lmและanova.lmerModLmerTestเนื่องจากพวกเขาสร้างการทดสอบ Type I และ III โดยค่าเริ่มต้นตามลำดับและสำหรับชุดข้อมูลนี้มีความแตกต่าง (เล็ก) ระหว่างความแตกต่าง Type I และ III:

show_tests(anova(model, type=1))$group
               (Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment           0              1    0.005202759                     0.5013477

show_tests(anova(model, type=3))$group # type=3 is default
               (Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment           0              1              0                           0.5

หากชุดข้อมูลมีความสมดุลอย่างสมบูรณ์ประเภทที่ฉันตัดกันจะเหมือนกับความแตกต่างของประเภท III (ซึ่งไม่ได้รับผลกระทบจากจำนวนตัวอย่างที่สังเกต)

ข้อสังเกตสุดท้ายอย่างหนึ่งคือ 'ความช้า' ของวิธี Kenward-Roger ไม่ได้เกิดจากการปรับแบบจำลองใหม่ แต่เนื่องจากมันเกี่ยวข้องกับการคำนวณด้วยเมทริกซ์ความแปรปรวนร่วมแปรปรวนร่วมของการสังเกต / เศษเหลือ (5191x5191 ในกรณีนี้) ซึ่งไม่ใช่ กรณีสำหรับวิธีการของ Satterthwaite

เกี่ยวกับ model2

สำหรับ model2 สถานการณ์มีความซับซ้อนมากขึ้นและฉันคิดว่ามันง่ายกว่าที่จะเริ่มการสนทนากับโมเดลอื่นที่ฉันได้รวมการโต้ตอบแบบ 'คลาสสิค' ระหว่างsubnumและdirection:

model3 <- lmer(rt ~ group * direction + (1 | subnum) +
                 (1 | subnum:direction), data = ANT.2)
VarCorr(model3)
 Groups           Name        Std.Dev.  
 subnum:direction (Intercept) 1.7008e-06
 subnum           (Intercept) 4.0100e+01
 Residual                     7.0415e+01

เนื่องจากความแปรปรวนที่เกี่ยวข้องกับการทำงานร่วมกันนั้นเป็นศูนย์ (ในที่ที่มีsubnumผลกระทบหลักแบบสุ่ม) เทอมการโต้ตอบจึงไม่มีผลต่อการคำนวณองศาอิสระของส่วน, F-ค่าและp -values:

anova(model3, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group           12065.3 12065.3     1    18  2.4334 0.1362
direction        1951.8  1951.8     1  5169  0.3936 0.5304
group:direction 11552.2 11552.2     1  5169  2.3299 0.1270

อย่างไรก็ตามsubnum:directionเป็นชั้นข้อผิดพลาดในการปิดล้อมsubnumดังนั้นถ้าเราลบsubnumSSQ ที่เกี่ยวข้องทั้งหมดกลับเข้าไปsubnum:direction

model4 <- lmer(rt ~ group * direction +
                 (1 | subnum:direction), data = ANT.2)

ตอนนี้ระยะผิดพลาดธรรมชาติสำหรับgroup, directionและgroup:directionเป็น subnum:directionและมีnlevels(with(ANT.2, subnum:direction))= 40 และสี่พารามิเตอร์องศาหารของเสรีภาพสำหรับคำเหล่านั้นควรจะประมาณ 36:

anova(model4, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF  DenDF F value  Pr(>F)  
group           24004.5 24004.5     1 35.994  4.8325 0.03444 *
direction          50.6    50.6     1 35.994  0.0102 0.92020  
group:direction   273.4   273.4     1 35.994  0.0551 0.81583  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

การทดสอบFเหล่านี้สามารถประมาณด้วยการทดสอบF ที่ 'สมดุลถูกต้อง' :

an4 <- anova(lm(rt ~ group*direction + subnum:direction, data=ANT.2))
an4[1:3, "F value"] <- an4[1:3, "Mean Sq"] / an4[4, "Mean Sq"]
an4[1:3, "Pr(>F)"] <- pf(an4[1:3, "F value"], 1, 36, lower.tail = FALSE)
an4
Analysis of Variance Table

Response: rt
                   Df   Sum Sq Mean Sq F value Pr(>F)    
group               1   994365  994365  4.6976 0.0369 *  
direction           1     1568    1568  0.0074 0.9319    
group:direction     1    10795   10795  0.0510 0.8226    
direction:subnum   36  7620271  211674 42.6137 <2e-16 ***
Residuals        5151 25586484    4967                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

ตอนนี้หันไป model2:

model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)

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

model2 <- lmer(rt ~ group * direction + (0 + direction | subnum), data = ANT.2)

ถ้าเราเปรียบเทียบmodel2กับmodel4พวกมันมีเอฟเฟกต์สุ่มจำนวนเท่า ๆ กัน; 2 สำหรับแต่ละตัวอย่างsubnumเช่น 2 * 20 = 40 รวม ในขณะที่model4กำหนดพารามิเตอร์ความแปรปรวนเดียวสำหรับเอฟเฟกต์สุ่มทั้ง 40 ชุดmodel2ระบุว่าแต่ละsubnumคู่ของเอฟเฟกต์สุ่มจะมีการแจกแจงปกติสองตัวแปรที่มีเมทริกซ์ความแปรปรวนร่วมแปรปรวน 2x2 กับพารามิเตอร์ที่ได้รับจาก

VarCorr(model2)
 Groups   Name           Std.Dev. Corr 
 subnum   directionleft  38.880        
          directionright 41.324   1.000
 Residual                70.405        

สิ่งนี้บ่งชี้ว่ามีความเหมาะสมมากเกินไป แต่ขอบันทึกไว้อีกวัน จุดสำคัญที่นี่คือmodel4เป็นกรณีพิเศษของmodel2 และว่าmodelเป็นยังmodel2เป็นกรณีพิเศษของ คับ (และสังหรณ์ใจ) พูด(direction | subnum)มีหรือจับรูปแบบที่เกี่ยวข้องกับผลกระทบหลักsubnum เช่นเดียวกับdirection:subnumการมีปฏิสัมพันธ์ ในแง่ของเอฟเฟ็กต์แบบสุ่มเราสามารถนึกถึงเอฟเฟกต์หรือโครงสร้างทั้งสองนี้เป็นการจับความแปรปรวนระหว่างแถวและแถวทีละคอลัมน์ตามลำดับ:

head(ranef(model2)$subnum)
  directionleft directionright
1    -25.453576     -27.053697
2     16.446105      17.479977
3    -47.828568     -50.835277
4     -1.980433      -2.104932
5      5.647213       6.002221
6     41.493591      44.102056

ในกรณีนี้การประเมินเอฟเฟกต์แบบสุ่มเหล่านี้รวมถึงการประมาณค่าพารามิเตอร์ความแปรปรวนทั้งสองระบุว่าเรามีผลกระทบหลักแบบสุ่มของsubnum(การเปลี่ยนแปลงระหว่างแถว) ที่นี่เท่านั้น สิ่งนี้นำไปสู่การเป็นที่องศาอิสระ Satterthwaite

anova(model2, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF   DenDF F value Pr(>F)
group           12059.8 12059.8     1  17.998  2.4329 0.1362
direction        1803.6  1803.6     1 125.135  0.3638 0.5475
group:direction 10616.6 10616.6     1 125.136  2.1418 0.1458

เป็นการประนีประนอมระหว่างโครงสร้างหลักที่มีผลกระทบและการโต้ตอบ: กลุ่ม DenDF ยังคงอยู่ที่ 18 (ซ้อนกันในsubnumการออกแบบ) แต่directionและ group:directionDenDF จะประนีประนอมระหว่าง 36 ( model4) และ 5169 ( model)

ฉันไม่คิดว่าสิ่งใดที่นี่บ่งชี้ว่าการประมาณ Satterthwaite (หรือการนำไปใช้ในlmerTest ) เป็นความผิดพลาด

ตารางเทียบเท่ากับวิธี Kenward-Roger ให้

anova(model2, type=1, ddf="Ken")
Type I Analysis of Variance Table with Kenward-Roger's method
                 Sum Sq Mean Sq NumDF  DenDF F value Pr(>F)
group           12059.8 12059.8     1 18.000  2.4329 0.1362
direction        1803.2  1803.2     1 17.987  0.3638 0.5539
group:direction 10614.7 10614.7     1 17.987  2.1414 0.1606

ไม่น่าแปลกใจที่ KR และ Satterthwaite สามารถแตกต่างกัน แต่สำหรับการปฏิบัติทั้งหมดความแตกต่างของค่าpคือนาที การวิเคราะห์ของฉันข้างต้นบ่งชี้ว่าค่าDenDFfor directionและgroup:directionไม่ควรน้อยกว่า ~ 36 และอาจใหญ่กว่านั้นเนื่องจากโดยทั่วไปแล้วเราจะมีเอฟเฟกต์หลักแบบสุ่มเท่านั้นdirectionดังนั้นหากสิ่งใดที่ฉันคิดว่านี่เป็นข้อบ่งชี้ว่าวิธี KR DenDFต่ำเกินไป ในกรณีนี้. แต่โปรดจำไว้ว่าข้อมูลไม่ได้สนับสนุน(group | direction)โครงสร้างจริงๆดังนั้นการเปรียบเทียบจึงเป็นเรื่องเล็กน้อย - มันน่าสนใจกว่าถ้าแบบจำลองนั้นรองรับจริง


+6 ขอบคุณน่าสนใจมาก! คำถามสองสามข้อ (1) ฉันสามารถอ่านเพิ่มเติมเกี่ยวกับ "stratum ข้อผิดพลาดในการล้อมรอบ" ได้ที่ไหน ฉันทำคำนี้และคำตอบนี้เป็นสิ่งที่ได้รับความนิยมเท่านั้น โดยทั่วไปแล้วคุณต้องการแนะนำวรรณกรรมประเภทใดให้เรียนรู้เกี่ยวกับปัญหาเหล่านี้ (2a) เท่าที่ผมเข้าใจคลาสสิก RM-ANOVA model3สำหรับการออกแบบนี้จะสอดคล้องกับของคุณ แต่จะใช้เป็นคำที่ผิดพลาดสำหรับการทดสอบsubnum:direction directionในขณะที่ที่นี่คุณสามารถบังคับนี้จะเกิดขึ้นโดยการยกเว้นเฉพาะในขณะที่(1|subnum) model4ทำไม? (2b) นอกจากนี้อัตราผลตอบแทน RM-ANOVA DF = 18 directionไม่ 36 model4ที่คุณได้รับใน ทำไม?
อะมีบา

สำหรับจุดของฉัน (2a + 2b) summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))ดู
อะมีบา

1
(1) หัวข้อของชั้นข้อผิดพลาดและเงื่อนไขที่อยู่ในชั้นที่จะได้รับมาจากการแสดงออกที่คาดหวังหมายถึงสแควร์สำหรับรูปแบบ / การออกแบบที่กำหนด นี่คือวัสดุ "มาตรฐาน" การออกแบบการทดลอง (DoE) แม้ว่าหัวข้อทางเทคนิคเพิ่มเติมเหล่านี้มักจะตกหล่นในรูปแบบที่ง่าย ("ใช้") ของหลักสูตรดังกล่าว ดูตัวอย่าง ch 11 & 12 ในusers.stat.umn.edu/~gary/book/fcdae.pdfสำหรับการแนะนำ ฉันได้เรียนรู้หัวข้อจากข้อความที่เทียบเท่าของ DC Montgomery และวัสดุพิเศษมากมายจากศาสตราจารย์ Henrik Spliid (เมื่อเร็ว ๆ นี้และน่าเศร้า)
Rune H Christensen

1
... สำหรับองค์ประกอบการแปรปรวนของการรักษาอย่างละเอียดมากขึ้น (1992 และ 2006) โดย Searle et al เป็นแบบคลาสสิก
Rune H Christensen

Ahh ใช่ฉันควรเห็นว่า: หากเรามีแบบจำลองที่ทั้งสองsubnumและsubnum:directionไม่เป็นศูนย์anova(lm(rt2 ~ group * direction + subnum + subnum:direction, data = ANT.2)) ให้ 18 df สำหรับทั้งสามปัจจัยและนี่คือสิ่งที่วิธี KR หยิบขึ้นมา สิ่งนี้สามารถเห็นได้แล้วmodel3ว่า KR ให้ค่าการออกแบบที่ 18 df สำหรับทุกคำศัพท์แม้เมื่อความแปรปรวนการติดต่อเป็นศูนย์ในขณะที่ Satterthwaite ตระหนักถึงคำแปรปรวนที่หายไปและปรับ df ตามนั้น ...
Rune H Christensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.