วิธีการประเมินองค์ประกอบความแปรปรวนกับ lmer สำหรับแบบจำลองที่มีเอฟเฟกต์แบบสุ่มและเปรียบเทียบกับผลการค้นหา lme


14

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

lme(fixed=Trait~Treatment*Source,random=~1|Family,method="ML")

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

หากไม่มีเอฟเฟกต์แบบสุ่มฉันสามารถใช้ผลรวมของกำลังสอง (SS) เพื่อคำนวณความแปรปรวนที่อธิบายโดยแต่ละปัจจัย แต่สำหรับโมเดลผสม (ที่มีการประมาณค่า ML) ไม่มี SS ดังนั้นฉันคิดว่าฉันสามารถใช้การรักษาและแหล่งที่มาเป็นเอฟเฟกต์แบบสุ่มเพื่อประเมินความแปรปรวนเช่น

lme(fixed=Trait~1,random=~(Treatment*Source)|Family, method="REML")

อย่างไรก็ตามในบางกรณี lme ไม่ได้รวมกันดังนั้นฉันใช้ lmer จากแพ็คเกจ lme4:

lmer(Trait~1+(Treatment*Source|Family),data=DATA)

ที่ฉันแยกความแตกต่างจากแบบจำลองโดยใช้ฟังก์ชันสรุป:

model<-lmer(Trait~1+(Treatment*Source|Family),data=regrexpdat)
results<-VarCorr(model)
variances<-results[,3]

ฉันได้รับค่าเช่นเดียวกับฟังก์ชั่น VarCorr ฉันใช้ค่าเหล่านี้แล้วในการคำนวณอัตราร้อยละของการเปลี่ยนแปลงที่เกิดขึ้นจริงโดยนำผลรวมเป็นรูปแบบทั้งหมด

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

ตัวอย่างเช่นสำหรับลักษณะ HD, lme เริ่มต้นแสดงให้เห็นแนวโน้มสำหรับการมีปฏิสัมพันธ์เช่นเดียวกับความสำคัญสำหรับการรักษา เมื่อใช้วิธีการย้อนหลังฉันพบว่าการรักษามีแนวโน้มใกล้เคียงอย่างมีนัยสำคัญ อย่างไรก็ตามการประมาณส่วนประกอบความแปรปรวนฉันพบว่าแหล่งที่มานั้นมีความแปรปรวนสูงสุดคิดเป็น 26.7% ของความแปรปรวนทั้งหมด

The lme:

anova(lme(fixed=HD~as.factor(Treatment)*as.factor(Source),random=~1|as.factor(Family),method="ML",data=test),type="m")
                                      numDF denDF  F-value p-value
(Intercept)                                1   426 0.044523  0.8330
as.factor(Treatment)                       1   426 5.935189  0.0153
as.factor(Source)                          1    11 0.042662  0.8401
as.factor(Treatment):as.factor(Source)     1   426 3.754112  0.0533

และ lmer:

summary(lmer(HD~1+(as.factor(Treatment)*as.factor(Source)|Family),data=regrexpdat))
Linear mixed model fit by REML 
Formula: HD ~ 1 + (as.factor(Treatment) * as.factor(Source) | Family) 
   Data: regrexpdat 
    AIC    BIC logLik deviance REMLdev
 -103.5 -54.43  63.75   -132.5  -127.5
Random effects:
 Groups   Name                                      Variance  Std.Dev. Corr                 
 Family   (Intercept)                               0.0113276 0.106431                      
          as.factor(Treatment)                      0.0063710 0.079819  0.405               
          as.factor(Source)                         0.0235294 0.153393 -0.134 -0.157        
          as.factor(Treatment)L:as.factor(Source)   0.0076353 0.087380 -0.578 -0.589 -0.585 
 Residual                                           0.0394610 0.198648                      
Number of obs: 441, groups: Family, 13

Fixed effects:
            Estimate Std. Error t value
(Intercept) -0.02740    0.03237  -0.846

ดังนั้นคำถามของฉันคือมันถูกต้องสิ่งที่ฉันทำ? หรือฉันควรใช้วิธีอื่นในการประมาณจำนวนความแปรปรวนที่อธิบายโดยแต่ละปัจจัย (เช่นการรักษาแหล่งที่มาและการมีปฏิสัมพันธ์) ตัวอย่างเช่นขนาดเอฟเฟกต์จะเป็นวิธีที่เหมาะสมกว่าหรือไม่


ปัจจัยการรักษามีความอิสระมากถึง 40x เท่ากับปัจจัยต้นกำเนิด (pseudoreplication?) นี่คือข้อสงสัยขับลง P- มูลค่าการรักษา

คำตอบ:


1

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

pchisq(logLik(model1) - logLik(model2), 1)

เนื่องจากวิธีการคำนวณความน่าจะเป็นระหว่างฟังก์ชั่นอาจแตกต่างกันเล็กน้อยฉันมักจะเปรียบเทียบระหว่างวิธีเดียวกันเท่านั้น


1
มันไม่ควรจะเป็น1-pchisq(logLik(model1) - logLik(model2), 1)?
user81411
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.