บทสรุปผู้บริหาร
มีการกล่าวบ่อยครั้งว่าหากระดับปัจจัยที่เป็นไปได้ทั้งหมดรวมอยู่ในแบบจำลองผสมแล้วปัจจัยนี้ควรถือว่าเป็นผลคงที่ สิ่งนี้ไม่เป็นความจริงสำหรับเหตุผลสองประการที่แยกจากกัน:
(1) หากจำนวนของระดับมีขนาดใหญ่จากนั้นก็สามารถทำให้การพิจารณาปัจจัย [ข้าม] เป็นแบบสุ่ม
ฉันเห็นด้วยกับ @Tim และ @RobertLong ที่นี่: หากปัจจัยมีระดับจำนวนมากที่รวมอยู่ในแบบจำลอง (เช่นเช่นทุกประเทศในโลกหรือโรงเรียนทั้งหมดในประเทศหรือประชากรทั้งหมดของ มีการสำรวจอาสาสมัคร ฯลฯ ) จากนั้นไม่มีอะไรผิดปกติกับการรักษาแบบสุ่ม --- นี่อาจเป็นเรื่องที่น่าสังเวชมากกว่าอาจทำให้เกิดการหดตัว ฯลฯ
lmer(size ~ age + subjectID) # fixed effect
lmer(size ~ age + (1|subjectID)) # random effect
(2) หากปัจจัยซ้อนอยู่ในเอฟเฟกต์แบบสุ่มอื่นจะต้องถือว่าเป็นแบบสุ่มโดยไม่ขึ้นอยู่กับจำนวนระดับ
มีความสับสนอย่างมากในหัวข้อนี้ (ดูความคิดเห็น) เพราะคำตอบอื่น ๆ เกี่ยวกับกรณีที่ # 1 ข้างต้น แต่ตัวอย่างที่คุณให้ไว้เป็นตัวอย่างของสถานการณ์ที่แตกต่างนั่นคือกรณีนี้ # 2 ที่นี่มีเพียงสองระดับ (เช่นไม่ใช่ "จำนวนมาก"!) และพวกเขาจะหมดความเป็นไปได้ทั้งหมด แต่พวกมันจะซ้อนอยู่ในเอฟเฟกต์แบบสุ่มอีกครั้งซึ่งให้ผลแบบสุ่มซ้อนกัน
lmer(size ~ age + (1|subject) + (1|subject:side) # side HAS to be random
การอภิปรายรายละเอียดของตัวอย่างของคุณ
ด้านและวิชาในการทดสอบจินตภาพของคุณมีความเกี่ยวข้องเช่นชั้นเรียนและโรงเรียนในตัวอย่างแบบลำดับชั้นมาตรฐาน บางทีแต่ละโรงเรียน (# 1, # 2, # 3 ฯลฯ ) มีคลาส A และคลาส B และทั้งสองคลาสนี้ควรจะเหมือนกัน คุณจะไม่โมเดลคลาส A และ B เป็นเอฟเฟกต์คงที่ที่มีสองระดับ นี่จะเป็นความผิดพลาด แต่คุณจะไม่จำลองคลาส A และ B เป็นเอฟเฟกต์แบบสุ่ม "แยก" (เช่นข้าม) ที่มีสองระดับเช่นกัน นี่จะเป็นความผิดพลาดด้วย คุณจะสร้างแบบจำลองชั้นเรียนเป็นเอฟเฟกต์แบบซ้อนภายในโรงเรียน
ดูที่นี่: เอฟเฟกต์แบบสุ่มเปรียบเทียบข้ามซ้อน: พวกมันแตกต่างกันอย่างไรและพวกเขาระบุอย่างถูกต้องใน lme4 อย่างไร
i = 1 … nj = 1 , 2
ขนาดฉันเจk= μ + อัลฟ่า⋅สูงฉันเจk+ β⋅น้ำหนักฉันเจk+γ⋅อายุฉันเจk+ϵผม+ϵฉันเจ+ϵฉันเจk
εผม∼ N( 0 , σ2s คุณb j e c t s) ,การสกัดกั้นแบบสุ่มสำหรับแต่ละเรื่อง
εฉันเจ∼ N( 0 , σ2เรื่องด้าน) ,int แบบสุ่ม สำหรับด้านซ้อนกันในเรื่อง
εฉันเจk∼ N( 0 , σ2สัญญาณรบกวน) ,ข้อผิดพลาด
ในขณะที่คุณเขียนเอง "ไม่มีเหตุผลที่จะเชื่อว่าเท้าขวาโดยเฉลี่ยจะใหญ่กว่าเท้าซ้าย" ดังนั้นจึงไม่มีผล "ทั่วโลก" (ไม่คงที่หรือข้ามสุ่ม) ของเท้าขวาหรือซ้ายเลย; แทนแต่ละเรื่องสามารถคิดว่ามีเท้า "หนึ่ง" และเท้า "อีก" และความแปรปรวนนี้เราควรรวมไว้ในแบบจำลอง ฟุต "หนึ่ง" และ "อีก" เหล่านี้ซ้อนอยู่ภายในตัวแบบจึงมีเอฟเฟกต์แบบซ้อนกัน
รายละเอียดเพิ่มเติมในการตอบกลับความคิดเห็น [ก.ย. 26]
โมเดลของฉันด้านบนมี Side เป็นเอฟเฟกต์แบบซ้อนภายในวิชา นี่คือรูปแบบอื่นที่แนะนำโดย @Robert โดยที่ Side เป็นเอฟเฟกต์คงที่:
ขนาดฉันเจk= μ + อัลฟ่า⋅ สูงฉันเจk+ β⋅ น้ำหนักฉันเจk+ γ⋅ อายุฉันเจk+ δ⋅ ด้านJ+ ϵผม+ ϵฉันเจk
ฉันเจ
มันไม่สามารถ
สิ่งนี้เป็นจริงสำหรับโมเดลสมมุติของ @ gung โดยมี Side เป็นเอฟเฟกต์แบบสุ่มข้าม:
ขนาดฉันเจk= μ + อัลฟ่า⋅ สูงฉันเจk+ β⋅ น้ำหนักฉันเจk+ γ⋅ อายุฉันเจk+ ϵผม+ ϵJ+ ϵฉันเจk
มันล้มเหลวในการบัญชีสำหรับการอ้างอิงเช่นกัน
การสาธิตผ่านการจำลอง [ต.ค. 2]
นี่คือการสาธิตโดยตรงในอาร์
ฉันสร้างชุดข้อมูลของเล่นด้วยห้าวิชาที่วัดที่เท้าทั้งสองเป็นเวลาห้าปีติดต่อกัน ผลกระทบของอายุเป็นเส้นตรง แต่ละวิชามีการสกัดกั้นแบบสุ่ม และแต่ละเรื่องมีหนึ่งเท้า (ทั้งซ้ายหรือขวา) มีขนาดใหญ่กว่าอีกเท้าหนึ่ง
set.seed(17)
demo = data.frame(expand.grid(age = 1:5,
side=c("Left", "Right"),
subject=c("Subject A", "Subject B", "Subject C", "Subject D", "Subject E")))
demo$size = 10 + demo$age + rnorm(nrow(demo))/3
for (s in unique(demo$subject)){
# adding a random intercept for each subject
demo[demo$subject==s,]$size = demo[demo$subject==s,]$size + rnorm(1)*10
# making the two feet of each subject different
for (l in unique(demo$side)){
demo[demo$subject==s & demo$side==l,]$size = demo[demo$subject==s & demo$side==l,]$size + rnorm(1)*7
}
}
plot(1:50, demo$size)
ขออภัยในทักษะ R อันยิ่งใหญ่ของฉัน นี่คือลักษณะของข้อมูล (จุดห้าจุดต่อเนื่องแต่ละจุดเป็นหนึ่งฟุตของหนึ่งคนที่วัดได้ในช่วงหลายปีที่ผ่านมาแต่ละจุดสิบจุดติดต่อกันเป็นสองฟุตของบุคคลเดียวกัน):
ตอนนี้เราสามารถใส่โมเดลได้หลายแบบ:
require(lme4)
summary(lmer(size ~ age + side + (1|subject), demo))
summary(lmer(size ~ age + (1|side) + (1|subject), demo))
summary(lmer(size ~ age + (1|subject/side), demo))
ทุกรุ่นมีเอฟเฟกต์ตายตัวage
และเอฟเฟกต์แบบสุ่มsubject
แต่ให้การปฏิบัติside
แตกต่างกัน
side
age
t = 1.8
side
age
t = 1.4
side
age
t = 37
สิ่งนี้แสดงให้เห็นอย่างชัดเจนว่าside
ควรถือว่าเป็นผลแบบซ้อน
ในที่สุดในความคิดเห็น @Robert แนะนำให้รวมผลกระทบทั่วโลกของการside
เป็นตัวแปรควบคุม เราสามารถทำได้ในขณะที่รักษาเอฟเฟกต์แบบซ้อนไว้:
summary(lmer(size ~ age + side + (1|subject/side), demo))
summary(lmer(size ~ age + (1|side) + (1|subject/side), demo))
side
t = 0.5side