เราจะทำแบบทดสอบสมมติฐาน MCMC กับแบบจำลองการถดถอยแบบผสมเอฟเฟกต์ด้วยความชันแบบสุ่มได้อย่างไร


12

ไลบรารี่ languageR จัดเตรียมวิธีการ (pvals.fnc) เพื่อทำการทดสอบ MCMC อย่างมีนัยสำคัญของเอฟเฟกต์คงที่ในรูปแบบการถดถอยเอฟเฟกต์เอฟเฟกต์แบบพอดีโดยใช้ lmer อย่างไรก็ตาม pvals.fnc ให้ข้อผิดพลาดเมื่อโมเดล lmer มีความลาดชันแบบสุ่ม

มีวิธีการทำแบบทดสอบสมมติฐาน MCMC ของแบบจำลองดังกล่าวหรือไม่?
ถ้าเป็นเช่นนั้นได้อย่างไร (หากได้รับคำตอบคำตอบควรมีตัวอย่างการทำงานใน R) ถ้าไม่มีเหตุผลทางความคิด / การคำนวณว่าทำไมไม่มีทาง?

คำถามนี้อาจเกี่ยวข้องกับคำถามนี้แต่ฉันไม่เข้าใจเนื้อหาที่นั่นเพียงพอที่จะแน่ใจ

แก้ไข 1 : หลักฐานของแนวคิดที่แสดงว่า pvals.fnc () ยังคงทำ 'บางสิ่งบางอย่าง' กับโมเดล lme4 แต่มันไม่ได้ทำอะไรกับแบบจำลองความชันแบบสุ่ม

library(lme4)
library(languageR)
#the example from pvals.fnc
data(primingHeid) 
# remove extreme outliers
primingHeid = primingHeid[primingHeid$RT < 7.1,]
# fit mixed-effects model
primingHeid.lmer = lmer(RT ~ RTtoPrime * ResponseToPrime + Condition + (1|Subject) + (1|Word), data = primingHeid)
mcmc = pvals.fnc(primingHeid.lmer, nsim=10000, withMCMC=TRUE)
#Subjects are in both conditions...
table(primingHeid$Subject,primingHeid$Condition)
#So I can fit a model that has a random slope of condition by participant
primingHeid.lmer.rs = lmer(RT ~ RTtoPrime * ResponseToPrime + Condition + (1+Condition|Subject) + (1|Word), data = primingHeid)
#However pvals.fnc fails here...
mcmc.rs = pvals.fnc(primingHeid.lmer.rs)

มันบอกว่า: ข้อผิดพลาดใน pvals.fnc (primingHeid.lmer.rs): การสุ่มตัวอย่าง MCMC ยังไม่ได้นำมาใช้ใน lme4_0.999375 สำหรับรุ่นที่มีพารามิเตอร์สหสัมพันธ์แบบสุ่ม

คำถามเพิ่มเติม: pvals.fnc ทำงานตามที่คาดไว้สำหรับโมเดลการสกัดกั้นแบบสุ่มหรือไม่? ผลลัพธ์ที่ควรเชื่อถือได้?


3
(1) ฉันประหลาดใจที่ pvals.fnc ยังคงทำงานอยู่เลย ฉันคิดว่า mcmcsamp (ซึ่ง pvals.fnc อาศัยอยู่) นั้นใช้งานไม่ได้ใน lme4 มาพักหนึ่งแล้ว คุณใช้ lme4 รุ่นใด (2) ไม่มีเหตุผลทางความคิดว่าทำไมการมีความลาดชันแบบสุ่มควรทำลายทุกสิ่งที่ทำเพื่อให้ได้การทดสอบที่มีนัยสำคัญ (3) การรวมการทดสอบที่สำคัญกับ MCMC เป็นเรื่องเล็กน้อยที่ไม่ต่อเนื่องกันทางสถิติแม้ว่าฉันจะเข้าใจ ช่วงเวลามีการสนับสนุนมากขึ้น) (4) ความสัมพันธ์ระหว่าง Q และอื่น ๆ เท่านั้นคือ 'MCMC' (เช่นไม่มีจริง)
Ben Bolker

เวอร์ชันของ lme4 ที่ฉันใช้นั้นขึ้นอยู่กับคอมพิวเตอร์ที่ฉันนั่งอยู่ คอนโซลนี้มี lme4_0.999375-32 แต่ฉันไม่ค่อยใช้อันนี้ในการวิเคราะห์ ฉันสังเกตเห็นหลายเดือนที่ผ่านมาว่า pvals.fnc () แยกผล lme4 หลังการวิเคราะห์ - ฉันสร้างงานขึ้นมาในเวลานั้น แต่ดูเหมือนจะไม่เป็นปัญหาอีกต่อไป ฉันจะต้องถามคำถามอื่นในประเด็นที่ 3 ของคุณในอนาคตอันใกล้
russellpierce

คำตอบ:


4

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

Linear mixed model fit by REML
Formula: Reaction ~ Days + (1 | Subject) + (0 + Days | Subject)
Data: sleepstudy

จากhttp://www.stat.wisc.edu/~bates/IMPS2008/lme4D.pdf


8

ต่อไปนี้เป็น (อย่างน้อยที่สุดของ) MCMCglmmวิธีการแก้ปัญหาด้วย

ก่อนอื่นให้พอดีกับโมเดลการสกัดกั้นความแปรปรวนที่เทียบเท่ากับMCMCglmm:

library(MCMCglmm)
primingHeid.MCMCglmm = MCMCglmm(fixed=RT ~ RTtoPrime * ResponseToPrime + Condition, 
                                random=~Subject+Word, data = primingHeid)

การเปรียบเทียบพอดีกับMCMCglmmและlmerก่อนอื่นให้ดึงข้อมูลเวอร์ชันที่แฮ็กของฉันarm::coefplot:

source(url("http://www.math.mcmaster.ca/bolker/R/misc/coefplot_new.R"))
  ## combine estimates of fixed effects and variance components
pp  <- as.mcmc(with(primingHeid.MCMCglmm, cbind(Sol, VCV)))
  ## extract coefficient table
cc1 <- coeftab(primingHeid.MCMCglmm,ptype=c("fixef", "vcov"))
  ## strip fixed/vcov indicators to make names match with lmer output
rownames(cc1) <- gsub("(Sol|VCV).", "", rownames(cc1))
  ## fixed effects -- v. similar
coefplot(list(cc1[1:5,], primingHeid.lmer))
  ## variance components -- quite different.  Worth further exploration?
coefplot(list(cc1[6:8,], coeftab(primingHeid.lmer, ptype="vcov")),
         xlim=c(0,0.16), cex.pts=1.5)

ตอนนี้ลองด้วยความลาดชันแบบสุ่ม:

primingHeid.rs.MCMCglmm = MCMCglmm(fixed=RT ~ RTtoPrime * ResponseToPrime + Condition,
                                   random=~Subject+Subject:Condition+Word, 
                                   data = primingHeid)        
summary(primingHeid.rs.MCMCglmm)

นี่จะให้ "MCMC p-values" บางอย่าง ... คุณจะต้องสำรวจด้วยตัวเองและดูว่าทั้งหมดนั้นสมเหตุสมผลหรือไม่ ...


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

1
แบบจำลองความลาดชันแบบสุ่มในกรณีนี้มีความสัมพันธ์ระหว่างความชันแบบสุ่มและการสกัดกั้นแบบสุ่มหรือในกรอบนี้เป็นแนวคิดที่ไร้สาระหรือไม่?
russellpierce

ฉัน tweaked รหัสของคุณที่นี่เพื่อให้อ่านง่ายขึ้น @Ben; ถ้าคุณไม่ชอบมันอย่าลังเลที่จะย้อนกลับไปด้วยคำขอโทษของฉัน
gung - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.