เอฟเฟ็กต์แบบซ้อน vs แบบซ้อน: พวกมันต่างกันอย่างไรและพวกมันระบุอย่างถูกต้องใน lme4 ได้อย่างไร?


88

นี่คือวิธีที่ฉันเข้าใจการซ้อนแบบสุ่มกับเอฟเฟกต์แบบข้าม:

เอฟเฟกต์แบบสุ่มซ้อนกันเกิดขึ้นเมื่อปัจจัยระดับล่างลดลงจะปรากฏเฉพาะภายในระดับเฉพาะของปัจจัยระดับบน

  • ตัวอย่างเช่นนักเรียนในชั้นเรียนที่จุดคงที่ในเวลา
  • ในlme4ฉันคิดว่าเราเป็นตัวแทนผลสุ่มสำหรับข้อมูลที่ซ้อนกันในสองวิธีที่เทียบเท่า:

    (1|class/pupil)  # or  
    (1|class) + (1|class:pupil)

ข้ามสุ่มผลหมายความว่าปัจจัยที่กำหนดปรากฏในมากกว่าหนึ่งระดับของปัจจัยระดับบน

  • ตัวอย่างเช่นมีนักเรียนภายในชั้นเรียนที่ถูกวัดเป็นเวลาหลายปี
  • ในlme4เราจะเขียน:

    (1|class) + (1|pupil)

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

mydata <- read.csv("https://web.archive.org/web/20160624172041if_/http://www-personal.umich.edu/~bwest/classroom.csv")
# (the data is no longer at `http://www-personal.umich.edu/~bwest/classroom.csv`
# hence the link to web.archive.org)
# Crossed version: 
Linear mixed model fit by REML ['lmerMod']
Formula: mathgain ~ (1 | schoolid) + (1 | classid)
   Data: mydata

REML criterion at convergence: 11768.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.6441 -0.5984 -0.0336  0.5334  5.6335 

Random effects:
 Groups   Name        Variance Std.Dev.
 classid  (Intercept)   99.23   9.961  
 schoolid (Intercept)   77.49   8.803  
 Residual             1028.23  32.066  
Number of obs: 1190, groups:  classid, 312; schoolid, 107


# Nested version:
Formula: mathgain ~ (1 | schoolid/classid)

REML criterion at convergence: 11768.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.6441 -0.5984 -0.0336  0.5334  5.6335 

Random effects:
 Groups           Name        Variance Std.Dev.
 classid:schoolid (Intercept)   99.23   9.961  
 schoolid         (Intercept)   77.49   8.803  
 Residual                     1028.23  32.066  
Number of obs: 1190, groups:  classid:schoolid, 312; schoolid, 107

คำตอบ:


148

(นี่เป็นคำตอบที่ค่อนข้างยาวมีการสรุปในตอนท้าย)

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

ทราบก่อนว่า:

การทำรังเป็นคุณสมบัติของข้อมูลหรือเป็นการออกแบบทดลองไม่ใช่โมเดล

นอกจากนี้

ข้อมูลที่ซ้อนกันสามารถเข้ารหัสได้อย่างน้อย 2 วิธีและนี่คือหัวใจของปัญหาที่คุณพบ

ชุดข้อมูลในตัวอย่างของคุณมีขนาดค่อนข้างใหญ่ดังนั้นฉันจะใช้ตัวอย่างโรงเรียนอื่นจากอินเทอร์เน็ตเพื่ออธิบายปัญหา แต่ก่อนอื่นให้พิจารณาตัวอย่างที่ง่ายเกินไปดังต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ที่นี่เรามีชั้นเรียนที่ซ้อนกันในโรงเรียนซึ่งเป็นสถานการณ์ที่คุ้นเคย จุดสำคัญที่นี่คือระหว่างแต่ละโรงเรียนเรียนมีตัวระบุเดียวกันแม้ว่าพวกเขาจะแตกต่างกันถ้าพวกเขาจะซ้อนกัน Class1ปรากฏในSchool1, และSchool2 School3แต่ถ้าข้อมูลที่ซ้อนกันแล้วClass1ในSchool1คือไม่ได้เป็นหน่วยเดียวกันของวัดเป็นClass1ในและSchool2 School3หากพวกเขาเหมือนกันเราก็จะมีสถานการณ์เช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ซึ่งหมายความว่าทุกชั้นเป็นของทุกโรงเรียน อดีตคือการออกแบบซ้อนกันและหลังเป็นแบบไขว้ (บางคนอาจเรียกว่าเป็นสมาชิกหลายคน) และเราจะกำหนดสิ่งเหล่านี้ในการlme4ใช้:

(1|School/Class) หรือเทียบเท่า (1|School) + (1|Class:School)

และ

(1|School) + (1|Class)

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

แต่ก่อนอื่นให้เราพิจารณากรณีที่ตัวแปร Class มีรหัสเฉพาะในโรงเรียน:

ป้อนคำอธิบายรูปภาพที่นี่

ไม่มีความเคลือบแคลงใด ๆ เกี่ยวกับการทำรังหรือการข้ามอีกต่อไป การซ้อนอย่างชัดเจน ให้เราเห็นนี้ด้วยตัวอย่างในการวิจัยที่เรามี 6 โรงเรียน (การติดป้ายชื่อI- VI) และ 4 ชั้นเรียนในแต่ละโรงเรียน (ที่มีป้ายกำกับaการd):

> dt <- read.table("http://bayes.acs.unt.edu:8083/BayesContent/class/Jon/R_SC/Module9/lmm.data.txt",
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
> # data was previously publicly available from
> # http://researchsupport.unt.edu/class/Jon/R_SC/Module9/lmm.data.txt
> # but the link is now broken
> xtabs(~ school + class, dt)

        class
school  a  b  c  d
   I   50 50 50 50
   II  50 50 50 50
   III 50 50 50 50
   IV  50 50 50 50
   V   50 50 50 50
   VI  50 50 50 50

เราสามารถเห็นได้จากตารางไขว้นี้ที่ ID คลาสทุกชั้นจะปรากฏในทุกโรงเรียนซึ่งตรงตามคำนิยามของคุณของเอฟเฟกต์แบบสุ่มข้าม (ในกรณีนี้เรามีอย่างเต็มที่ตรงข้ามกับเอฟเฟ็กต์แบบสุ่มข้ามบางส่วน ดังนั้นนี่คือสถานการณ์เดียวกับที่เรามีในรูปแรกข้างต้น อย่างไรก็ตามถ้าข้อมูลนั้นซ้อนกันจริงๆและไม่ข้ามดังนั้นเราต้องบอกอย่างชัดเจนlme4:

> m0 <- lmer(extro ~ open + agree + social + (1 | school/class), data = dt)
> summary(m0)

Random effects:
 Groups       Name        Variance Std.Dev.
 class:school (Intercept)  8.2043  2.8643  
 school       (Intercept) 93.8421  9.6872  
 Residual                  0.9684  0.9841  
Number of obs: 1200, groups:  class:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117909  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m1 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |class), data = dt)
summary(m1)

Random effects:
 Groups   Name        Variance Std.Dev.
 school   (Intercept) 95.887   9.792   
 class    (Intercept)  5.790   2.406   
 Residual              2.787   1.669   
Number of obs: 1200, groups:  school, 6; class, 4

Fixed effects:
             Estimate Std. Error t value
(Intercept) 60.198841   4.212974  14.289
open         0.010834   0.008349   1.298
agree       -0.005420   0.009605  -0.564
social      -0.001762   0.003107  -0.567

ตามที่คาดไว้ผลลัพธ์จะแตกต่างกันเนื่องจากm0เป็นโมเดลซ้อนในขณะที่m1เป็นโมเดลจำลอง

ตอนนี้ถ้าเราแนะนำตัวแปรใหม่สำหรับตัวระบุคลาส:

> dt$classID <- paste(dt$school, dt$class, sep=".")
> xtabs(~ school + classID, dt)

      classID
school I.a I.b I.c I.d II.a II.b II.c II.d III.a III.b III.c III.d IV.a IV.b
   I    50  50  50  50    0    0    0    0     0     0     0     0    0    0
   II    0   0   0   0   50   50   50   50     0     0     0     0    0    0
   III   0   0   0   0    0    0    0    0    50    50    50    50    0    0
   IV    0   0   0   0    0    0    0    0     0     0     0     0   50   50
   V     0   0   0   0    0    0    0    0     0     0     0     0    0    0
   VI    0   0   0   0    0    0    0    0     0     0     0     0    0    0

      classID
school IV.c IV.d V.a V.b V.c V.d VI.a VI.b VI.c VI.d
   I      0    0   0   0   0   0    0    0    0    0
   II     0    0   0   0   0   0    0    0    0    0
   III    0    0   0   0   0   0    0    0    0    0
   IV    50   50   0   0   0   0    0    0    0    0
   V      0    0  50  50  50  50    0    0    0    0
   VI     0    0   0   0   0   0   50   50   50   50

ตารางไขว้แสดงให้เห็นว่าแต่ละระดับของชั้นเรียนจะเกิดขึ้นในโรงเรียนระดับเดียวเท่านั้นตามคำจำกัดความของการทำรัง นี่เป็นกรณีของข้อมูลของคุณอย่างไรก็ตามมันก็ยากที่จะแสดงให้เห็นว่าข้อมูลของคุณเพราะมันเบาบางมาก สูตรทั้งสองโมเดลจะสร้างเอาต์พุตเดียวกัน (ของโมเดลซ้อนกันm0ด้านบน):

> m2 <- lmer(extro ~ open + agree + social + (1 | school/classID), data = dt)
> summary(m2)

Random effects:
 Groups         Name        Variance Std.Dev.
 classID:school (Intercept)  8.2043  2.8643  
 school         (Intercept) 93.8419  9.6872  
 Residual                    0.9684  0.9841  
Number of obs: 1200, groups:  classID:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m3 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |classID), data = dt)
> summary(m3)

Random effects:
 Groups   Name        Variance Std.Dev.
 classID  (Intercept)  8.2043  2.8643  
 school   (Intercept) 93.8419  9.6872  
 Residual              0.9684  0.9841  
Number of obs: 1200, groups:  classID, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

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

สรุป: TL; DR

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

(1|group1/group2)

ที่ซ้อนอยู่ในgroup2group1

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

(1|group1) + (1|group2)


16
+6 นี่เป็นคำตอบที่ดีมาก เตือนฉันในอีกสองถึงสามวัน & ฉันจะใส่เงินรางวัลลงไป
gung

2
คำอธิบายที่ยอดเยี่ยม มีชื่อสำหรับการออกแบบการทดลองประเภทที่สามที่คุณสร้างระดับที่ไม่ซ้ำกันสำหรับสองปัจจัย (อาจซ้อนกัน) ดังนั้นถ้าฉันติดตาม cohorts การซื้อรถจักรยานยนต์จากตัวแทนจำหน่ายที่แตกต่างกันในเมืองต่าง ๆ ฉันจะสื่อสารกับผู้อ่านอย่างไร สร้างปัจจัยระดับเดียวinteraction(city, dealer)หรือไม่
AdamO

2
+6 นี่เป็นคำตอบที่ยอดเยี่ยมมากที่ฉันรู้สึกว่าฉันสามารถเติมเงิน @ gung กับรางวัลอื่นได้ โดยวิธีการที่ฉันกำลังดิ้นรนกับสิ่งที่อาจเป็นความสับสนขั้นพื้นฐานมาก ( นี่คือ Q ของฉัน ) และจะขอบคุณมากสำหรับความช่วยเหลือของคุณ
อะมีบา

1
@ RobertLong ดูเหมือนว่าการออกแบบแยก (การวัดซ้ำ) มักจะเรียกว่า "ซ้อน" แม้ว่าพวกเขาจะไม่ซ้อนกันจริงๆตามคำตอบของคุณนี้ ความไม่สอดคล้องกันของคำศัพท์นี้อาจทำให้ฉันสับสนในคำถามที่เชื่อมโยง จะดีมากถ้าคุณสามารถอธิบายได้ทั้งที่นี่หรือที่นั่น ฉันยังคิดว่าฉันควรโพสต์คำถามคำศัพท์แยก (ไม่ใช่เชิง R) เกี่ยวกับสิ่งที่ซ้อนอยู่ในแผนการแยก
อะมีบา

2
อัปเดตเป็นความคิดเห็นก่อนหน้าของฉัน ฉันได้ตรวจสอบหนังสือเก่า ๆ สองเล่มเกี่ยวกับการออกแบบการทดลอง: Maxwell and Delaney, 1990, การออกแบบการทดลองและวิเคราะห์ข้อมูลและ Montgomery, 1976, การออกแบบและการวิเคราะห์การทดลอง ทั้งพูดคุยเกี่ยวกับการออกแบบที่ซ้อนกันและทั้งสองพูดคุยเกี่ยวกับมาตรการซ้ำอาคาแยกแปลง; ทั้งใช้คำว่า "ซ้อน" เฉพาะในแง่ที่คุณใช้และไม่เคยอ้างถึงมาตรการซ้ำ ๆ ว่าซ้อนกัน ดังนั้นฉันจึงไม่คิดว่าจะมีคำศัพท์ที่แตกต่างกัน
อะมีบา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.