วิธีรับค่า p โดยรวมและขนาดเอฟเฟกต์สำหรับปัจจัยเชิงหมวดหมู่ในโมเดลผสม (lme4)


28

ฉันต้องการรับค่า p และขนาดผลกระทบของตัวแปรเด็ดขาดแบบอิสระ (มีหลายระดับ) - นั่นคือ "โดยรวม" และไม่ใช่สำหรับแต่ละระดับแยกกันเช่นเดียวกับเอาต์พุตปกติจากlme4ในอาร์มันเป็นเหมือน สิ่งที่ผู้คนรายงานเมื่อใช้ ANOVA

ฉันจะได้รับสิ่งนี้ได้อย่างไร


สถิติใดที่คุณต้องการอย่างแน่นอน คุณสามารถใช้anova()ฟังก์ชั่นในการรับตาราง anova กับโมเดลเชิงเส้นผสมเช่นเดียวกับโมเดลเชิงเส้น
smillig

ฉันได้ลอง anova () แต่มันให้ค่า Df, Sum Sq, Mean Sq และค่า F ฉันไม่เห็นขนาดของเอฟเฟกต์และค่า p คุณมีความคิดเกี่ยวกับสิ่งนี้หรือไม่?
user3288202

1
โดยขนาดของผลที่คุณทำบางสิ่งบางอย่างเช่นค่าเฉลี่ยเทียบเท่ากับ ? ด้วยความเคารพต่อค่า p มีการอภิปรายที่ยาวนานและมีนัยสำคัญเกี่ยวกับการประเมินของพวกเขาและรอบการดำเนินงานของพวกเขามา ดูการอภิปรายในคำถามนี้เพื่อดูรายละเอียดเพิ่มเติม R2lme4
smillig

ขอบคุณสำหรับลิงค์ Smilig นั่นหมายความว่าเนื่องจากมีปัญหากับการคำนวณค่า p ขนาดผลกระทบของปัจจัยโดยรวมก็เป็นปัญหาเช่นกัน
user3288202

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

คำตอบ:


48

แนวคิดทั้งสองที่คุณพูดถึง (ค่า p และขนาดเอฟเฟ็กต์ของโมเดลผสมเชิงเส้น) มีปัญหาโดยธรรมชาติ ด้วยความเคารพต่อขนาดของผลอ้างดั๊กเบตส์ผู้เขียนต้นฉบับของlme4,

R2

สำหรับข้อมูลเพิ่มเติมคุณสามารถดูที่หัวข้อนี้ , หัวข้อนี้และข้อความนี้ โดยทั่วไปปัญหาคือไม่มีวิธีการที่ตกลงกันสำหรับการรวมและการสลายตัวของความแปรปรวนจากผลกระทบแบบสุ่มในรูปแบบ อย่างไรก็ตามมีกี่มาตรฐานที่ใช้ หากคุณมองไปที่Wiki ตั้งค่าสำหรับ / โดยรายชื่อผู้รับจดหมาย r-sig-Mixed-modelมีวิธีการสองสามวิธีที่ระบุไว้

หนึ่งในวิธีการที่แนะนำจะดูที่ความสัมพันธ์ระหว่างค่าที่ติดตั้งและค่าที่สังเกตได้ สิ่งนี้สามารถนำไปใช้ในRตามที่ Jarrett Byrnes แนะนำในหนึ่งในเธรดเหล่านี้:

r2.corr.mer <- function(m) {
  lmfit <-  lm(model.response(model.frame(m)) ~ fitted(m))
  summary(lmfit)$r.squared
}

ตัวอย่างเช่นสมมติว่าเราประเมินโมเดลเชิงเส้นผสมต่อไปนี้:

set.seed(1)
d <- data.frame(y = rnorm(250), x = rnorm(250), z = rnorm(250),
                g = sample(letters[1:4], 250, replace=T)       )
library(lme4)
summary(fm1 <- lmer(y ~ x + (z | g), data=d))
# Linear mixed model fit by REML ['lmerMod']
# Formula: y ~ x + (z | g)
#    Data: d
# REML criterion at convergence: 744.4
# 
# Scaled residuals: 
#     Min      1Q  Median      3Q     Max 
# -2.7808 -0.6123 -0.0244  0.6330  3.5374 
# 
# Random effects:
#  Groups   Name        Variance Std.Dev. Corr 
#  g        (Intercept) 0.006218 0.07885       
#           z           0.001318 0.03631  -1.00
#  Residual             1.121439 1.05898       
# Number of obs: 250, groups: g, 4
# 
# Fixed effects:
#             Estimate Std. Error t value
# (Intercept)  0.02180    0.07795   0.280
# x            0.04446    0.06980   0.637
# 
# Correlation of Fixed Effects:
#   (Intr)
# x -0.005

เราสามารถคำนวณขนาดเอฟเฟกต์โดยใช้ฟังก์ชั่นที่กำหนดไว้ด้านบน:

r2.corr.mer(fm1)
# [1] 0.0160841

Ω02และสามารถคำนวณได้ในRเพียง:

1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
# [1] 0.01173721  # Usually, it would be even closer to the value above

ด้วยความเคารพต่อค่า pนี่เป็นปัญหาที่ถกเถียงกันมากขึ้น (อย่างน้อยในชุมชนR / lme4ชุมชน) ดูการอภิปรายในคำถามที่นี่ , ที่นี่และที่นี่ในหมู่อื่น ๆ อีกมากมาย การอ้างอิงหน้า Wiki อีกครั้งมีวิธีทดสอบสมมติฐานเกี่ยวกับผลกระทบในตัวแบบผสมแบบเชิงเส้น รายการจาก "แย่ที่สุดถึงดีที่สุด" (อ้างอิงจากผู้เขียนหน้า Wikiซึ่งผมเชื่อว่ารวมถึง Doug Bates และ Ben Bolker ผู้มีส่วนร่วมที่นี่มาก):

  • Wald Z-tests
  • สำหรับ LMM ที่สมดุลและซ้อนกันซึ่งสามารถคำนวณ df ได้: การทดสอบ t-Wald
  • การทดสอบอัตราส่วนความน่าจะเป็นโดยการตั้งค่าแบบจำลองเพื่อให้สามารถแยก / ลดพารามิเตอร์ (ผ่านanovaหรือdrop1) หรือผ่านโปรไฟล์ความน่าจะเป็นในการคำนวณ
  • MCMC หรือพารามิเตอร์ bootstrap ช่วงความเชื่อมั่น

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

หลอกคชกรรม:

  • การสุ่มตัวอย่างแบบโพสต์ - ฮอกโดยทั่วไป (1) สมมติว่านักบวชแบนและ (2) เริ่มจาก MLE อาจใช้การประมาณค่าความแปรปรวนร่วม - ความแปรปรวนร่วมโดยประมาณเพื่อเลือกการแจกแจงแบบผู้สมัคร
  • Via mcmcsamp(หากมีให้สำหรับปัญหาของคุณ: เช่น LMM ที่มีเอฟเฟกต์แบบง่าย - ไม่ใช่ GLMM หรือเอฟเฟกต์แบบสุ่มที่ซับซ้อน)
    Via pvals.fncในlanguageRแพ็คเกจเป็นเสื้อคลุมสำหรับmcmcsamp)
  • ใน AD Model Builder อาจใช้glmmADMBแพ็คเกจ (ใช้mcmc=TRUEตัวเลือก) หรือR2admbแพ็คเกจ (เขียนนิยามโมเดลของคุณเองใน AD Model Builder) หรือภายนอกR
  • ผ่านsimฟังก์ชั่นจากarmแพ็คเกจ (จำลองหลังเฉพาะสำหรับค่าสัมประสิทธิ์เบต้า (เอฟเฟกต์คงที่)

แนวทาง Bayesian อย่างเต็มที่:

  • ผ่านMCMCglmmแพ็คเกจ
  • การใช้glmmBUGS(ตัวห่อหุ้ม WinBUGS / อินเตอร์เฟสR )
  • ใช้ JAGS / WinBUGS / OpenBUGS ฯลฯ ผ่านทางrjags/ r2jags/ R2WinBUGS/ BRugsแพคเกจ

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

library(MCMCglmm)
summary(fm2 <- MCMCglmm(y ~ x, random=~us(z):g, data=d))
# Iterations = 3001:12991
# Thinning interval  = 10
#  Sample size  = 1000 
# 
#  DIC: 697.7438 
# 
#  G-structure:  ~us(z):g
# 
#       post.mean  l-95% CI u-95% CI eff.samp
# z:z.g 0.0004363 1.586e-17 0.001268    397.6
# 
#  R-structure:  ~units
# 
#       post.mean l-95% CI u-95% CI eff.samp
# units    0.9466   0.7926    1.123     1000
# 
#  Location effects: y ~ x 
# 
#             post.mean l-95% CI u-95% CI eff.samp pMCMC
# (Intercept)  -0.04936 -0.17176  0.07502     1000 0.424
# x            -0.07955 -0.19648  0.05811     1000 0.214

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


ขอบคุณ smilig มาก ดังนั้นฉันอาจไม่รายงานขนาดผลกระทบสำหรับพารามิเตอร์โดยรวม
user3288202

... และแน่นอนผลลัพธ์ R2จะมีอคติต่อหน่วยการสุ่มตัวอย่าง (และมันจะไปโดยไม่บอกเงื่อนไข) พร้อมการสังเกตเพิ่มเติม
russellpierce

3
+6 ชัดเจนน่าประทับใจครอบคลุมและมีคำอธิบายประกอบอย่างละเอียด
gung - Reinstate Monica

1
นอกจากนี้คุณสามารถดูแพ็คเกจ afex และโดยเฉพาะฟังก์ชั่นแบบผสม ดูที่นี่
เริ่มต้น

6

ในการคำนวณค่านัยสำคัญ ( p ), ลุค (2016) การประเมินความสำคัญในตัวแบบผสมผลกระทบเชิงเส้นในรายงานRว่าวิธีการที่เหมาะสมที่สุดคือการประเมินแบบ Kenward-Roger หรือ Satterthwaite สำหรับองศาอิสระ (มีในแพ็คเกจ R เช่นlmerTestหรือafex)

นามธรรม

แบบจำลองเอฟเฟ็กต์แบบผสมถูกนำมาใช้บ่อยครั้งมากขึ้นในการวิเคราะห์ข้อมูลการทดลอง อย่างไรก็ตามในแพ็คเกจ lme4 ใน R มาตรฐานสำหรับการประเมินความสำคัญของผลกระทบคงที่ในโมเดลเหล่านี้ (เช่นการได้รับค่า p) นั้นค่อนข้างคลุมเครือ มีเหตุผลที่ดีสำหรับสิ่งนี้ แต่เนื่องจากนักวิจัยที่ใช้แบบจำลองเหล่านี้จำเป็นต้องใช้ในหลาย ๆ กรณีเพื่อรายงานค่า p จึงจำเป็นต้องใช้วิธีการประเมินความสำคัญของผลลัพธ์แบบจำลอง บทความนี้รายงานผลของการจำลองแสดงให้เห็นว่าทั้งสองวิธีที่พบบ่อยที่สุดสำหรับการประเมินความสำคัญโดยใช้การทดสอบอัตราส่วนความน่าจะเป็นและการใช้การแจกแจง z กับค่า Wald t จากรูปแบบผลลัพธ์ (t-as-z) โดยเฉพาะอย่างยิ่งสำหรับกลุ่มตัวอย่างที่มีขนาดเล็ก วิธีอื่น ๆ สำหรับการประเมินความสำคัญผลของการจำลองเหล่านี้ชี้ให้เห็นว่าอัตราความผิดพลาด Type 1 ใกล้เคียงกับ. 05 มากที่สุดเมื่อแบบจำลองได้รับการติดตั้งโดยใช้ REML และค่า p จะได้มาจากการประมาณค่า Kenward-Roger หรือ Satterthwaiteเนื่องจากการประมาณทั้งสองนี้ ตัวอย่าง

(เน้นเพิ่ม)


4
+1 ขอบคุณที่แบ่งปันลิงค์นี้ ฉันจะแสดงความคิดเห็นสั้น ๆ ว่าการประมาณค่าของ Kenward-Roger มีอยู่ในlmerTestแพ็คเกจ
อะมีบาพูดว่า Reinstate Monica

5

ฉันใช้lmerTestแพ็คเกจ สิ่งนี้รวมถึงการประมาณค่า p-value ในanova()เอาต์พุตสำหรับการวิเคราะห์ MLM ของฉันอย่างสะดวก แต่ไม่ได้ให้ขนาดของเอฟเฟกต์สำหรับเหตุผลที่กำหนดไว้ในโพสต์อื่น ๆ ที่นี่


1
ในกรณีของฉันฉันชอบการเปรียบเทียบแบบคู่โดยใช้ lsmeans เพราะให้ความเปรียบต่างทุกคู่รวมถึงค่า p ถ้าฉันใช้ lmerTest ฉันจะต้องเรียกใช้โมเดลหกครั้งด้วยเส้นเขตแดนที่แตกต่างกันเพื่อดูความแตกต่างของคู่ทั้งหมด
user3288202
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.