จะรับค่า p-value (ตรวจสอบนัยสำคัญ) ของผลกระทบในรูปแบบผสม lme4 ได้อย่างไร


56

ฉันใช้ lme4 ใน R เพื่อให้พอดีกับโมเดลผสม

lmer(value~status+(1|experiment)))

โดยที่ค่านั้นต่อเนื่องสถานะและการทดลองเป็นปัจจัยและฉันได้รับ

Linear mixed model fit by REML 
Formula: value ~ status + (1 | experiment) 
  AIC   BIC logLik deviance REMLdev
 29.1 46.98 -9.548    5.911    19.1
Random effects:
 Groups     Name        Variance Std.Dev.
 experiment (Intercept) 0.065526 0.25598 
 Residual               0.053029 0.23028 
Number of obs: 264, groups: experiment, 10

Fixed effects:
            Estimate Std. Error t value
(Intercept)  2.78004    0.08448   32.91
statusD      0.20493    0.03389    6.05
statusR      0.88690    0.03583   24.76

Correlation of Fixed Effects:
        (Intr) statsD
statusD -0.204       
statusR -0.193  0.476

ฉันจะรู้ได้อย่างไรว่าผลกระทบของสถานะมีความสำคัญ? R รายงานเฉพาะค่าและไม่ใช่ -valuesptp


1
โดยคำตอบที่ได้จากคำถามนี้สิ่งมหัศจรรย์หนึ่งที่ OP สนใจคือที่นี่: ทดสอบค่าสัมประสิทธิ์เทียบกับโมฆะ (วานิลลาทดสอบหนึ่งทำในการถดถอยเชิงเส้นปกติกับโมฆะ ) หรือการทดสอบเพื่อลดความแปรปรวน (การทดสอบเราได้จาก ANOVA หลายประเภท) ทั้งสองมุ่งไปที่สิ่งที่แตกต่าง คำตอบ enlightening ในขณะที่ไม่เกี่ยวกับสินค้าผสมผลกระทบที่จะพบได้ที่นี่ H 0 : β = β null FtH0:β=βnullF
Firebug

คำตอบ:


61

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

library(nlme)
m1 <- lme(value~status,random=~1|experiment,data=mydata)
anova(m1)

เนื่องจากคุณไม่ต้องการสิ่งใด ๆ ที่lmerมี (ความเร็วสูงกว่าการจัดการเอฟเฟกต์แบบสุ่มข้าม GLMMs ... ) lmeควรให้เหมือนกับค่าสัมประสิทธิ์ความแปรปรวนและประมาณการ แต่ยังจะคำนวณ DF และ P-ค่าสำหรับคุณ (ซึ่งทำให้ความรู้สึกในการออกแบบ "คลาสสิก" เช่นคุณดูเหมือนจะมี) คุณอาจต้องการพิจารณาคำที่สุ่ม~status|experiment(การอนุญาตให้มีการเปลี่ยนแปลงผลกระทบสถานะในบล็อกหรือเทียบเท่ารวมถึงการโต้ตอบตามสถานะการทดสอบ) ผู้โพสต์ด้านบนนั้นถูกต้องเช่นกันว่าtสถิติของคุณมีขนาดใหญ่จนค่า p ของคุณจะเป็น <0.05 แต่ฉันสามารถจินตนาการได้ว่าคุณต้องการค่า p "ของจริง"


3
ฉันไม่รู้เกี่ยวกับคำตอบนี้ lmerสามารถรายงานค่า p ประเภทเดียวกันได้อย่างง่ายดาย แต่ไม่ได้สำหรับเหตุผลที่ถูกต้อง ฉันคิดว่ามันเป็นความคิดเห็นที่มีค่า p "ของจริง" ที่นี่ที่ทำให้ฉัน คุณสามารถยืนยันว่าคุณสามารถหาทางลัดที่เป็นไปได้และทางลัดที่สมเหตุสมผลจะถูกส่งผ่าน แต่คุณไม่สามารถโต้แย้งได้ว่ามีค่า p จริง
จอห์น

11
สำหรับการออกแบบแบบคลาสสิก (สมดุลซ้อนกันเป็นต้น) ฉันคิดว่าฉันสามารถยืนยันได้ว่ามี p-vaue จริงนั่นคือความน่าจะเป็นที่จะได้ค่าเบต้าของขนาดที่สังเกตหรือสูงกว่าถ้าสมมติฐานว่าง (เบต้า = 0) เป็นเท็จ ... lme4 ไม่ได้ให้ตัวหารเหล่านี้ df ฉันเชื่อว่าเพราะมันยากที่จะตรวจสอบโดยทั่วไปจากโครงสร้างแบบจำลอง lme4 เมื่อแบบจำลองที่ระบุนั้นเป็นแบบที่ฮิวริสติกสำหรับการคำนวณตัวหารแบบคลาสสิค df จะทำงาน ...
Ben Bolker

ลองsummary(m1)แทน (ฉันใช้สิ่งนี้กับแพ็คเกจ nlme)
jena

36

คุณสามารถใช้แพคเกจlmerTest คุณเพียงแค่ติดตั้ง / โหลดมันและรุ่น Lmer ก็จะขยายออกไป เช่น

library(lmerTest)
lmm <- lmer(value~status+(1|experiment)))
summary(lmm)
anova(lmm)

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


28

หากคุณสามารถจัดการกับการละทิ้งค่า p ( และคุณควร ) คุณสามารถคำนวณอัตราส่วนความน่าจะเป็นที่จะแสดงน้ำหนักของหลักฐานสำหรับผลกระทบของสถานะผ่าน:

#compute a model where the effect of status is estimated
unrestricted_fit = lmer(
    formula = value ~ (1|experiment) + status
    , REML = F #because we want to compare models on likelihood
)
#next, compute a model where the effect of status is not estimated
restricted_fit = lmer(
    formula = value ~ (1|experiment)
    , REML = F #because we want to compare models on likelihood
)
#compute the AIC-corrected log-base-2 likelihood ratio (a.k.a. "bits" of evidence)
(AIC(restricted_fit)-AIC(unrestricted_fit))*log2(exp(1))

16
โปรดทราบว่าอัตราส่วนความน่าจะเป็นแบบอะซิมโทติคกล่าวคือไม่ได้คำนึงถึงความไม่แน่นอนในการประมาณความแปรปรวนที่เหลือ ...
Ben Bolker

5
ฉันสนใจในบรรทัดสุดท้ายของคุณ การตีความผลคืออะไร? มีแหล่งที่ฉันสามารถดูที่?
mguzmann

13

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


9

พิจารณาสิ่งที่คุณถาม ถ้าคุณแค่อยากรู้ว่าค่า p-value โดยรวมสำหรับเอฟเฟ็กต์ของสถานะผ่านค่า cutoff โดยพลการบางอย่างเช่น 0.05 หรือไม่นั้นก็ง่าย ก่อนอื่นคุณต้องหาผลกระทบโดยรวม anovaคุณจะได้รับจากการที่

m <- lmer(...) #just run your lmer command but save the model
anova(m)

ตอนนี้คุณมีค่าF คุณสามารถใช้มันและค้นหามันในตารางFบางส่วน เพียงแค่เลือก denom ที่ต่ำที่สุด ระดับความอิสระ. ทางลัดมีประมาณ 20 Fของคุณอาจใหญ่กว่านั้น แต่ฉันอาจผิด แม้ว่าจะไม่ใช่ให้ดูที่จำนวนองศาอิสระจากการคำนวณ ANOVA ทั่วไปที่นี่โดยใช้จำนวนการทดลองที่คุณมี การผสานคุณค่าในตัวคุณลงไปที่ประมาณ 5 เพื่อตัดยอด ตอนนี้คุณสามารถผ่านได้อย่างง่ายดายในการศึกษาของคุณ df ที่ 'จริง' สำหรับแบบจำลองของคุณจะเป็นสิ่งที่สูงกว่าเพราะคุณกำลังสร้างแบบจำลองจุดข้อมูลทุกจุดซึ่งตรงข้ามกับค่ารวมที่ ANOVA จะสร้างแบบจำลอง

หากคุณต้องการค่า p ที่แน่นอนไม่มีสิ่งนั้นเว้นแต่ว่าคุณเต็มใจที่จะทำคำแถลงเชิงทฤษฎีเกี่ยวกับเรื่องนี้ หากคุณอ่าน Pinheiro & Bates (2001 และอาจมีหนังสืออีกหลายเล่มที่อยู่ในหัวข้อ ... ดูลิงก์อื่น ๆ ในคำตอบเหล่านี้) และคุณกลับมาพร้อมกับอาร์กิวเมนต์สำหรับ df เฉพาะคุณสามารถใช้มันได้ แต่คุณไม่ได้กำลังมองหาค่า p ที่แน่นอนอยู่แล้ว ฉันพูดถึงเรื่องนี้เพราะคุณไม่ควรรายงานค่า p ที่แน่นอนเท่านั้นที่ cutoff ของคุณจะถูกส่งผ่าน

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


9

แก้ไข: วิธีนี้ไม่ได้รับการสนับสนุนในรุ่นที่ใหม่กว่าของ lme4 ใช้แพคเกจ lmerTest ตามที่แนะนำในคำตอบนี้โดย pbx101

มีการโพสต์ในรายการ R โดยผู้เขียน lme4 เพราะเหตุใดค่า p จึงไม่ปรากฏ เขาแนะนำให้ใช้ตัวอย่าง MCMC แทนซึ่งคุณใช้ pvals.fnc จากแพ็กเกจ languageR:

library("lme4")
library("languageR")
model=lmer(...)
pvals.fnc(model)

ดูhttp://www2.hawaii.edu/~kdrager/MixedEffectsModels.pdfสำหรับตัวอย่างและรายละเอียด


3
lme4 ไม่สนับสนุนสิ่งนี้อีกต่อไป โพสต์นี้สามารถอัปเดตเพื่อสำรองคนที่ต้องค้นหาสิ่งนี้เหมือนที่ฉันเพิ่งทำ
timothy.s.lau

5

คุณสนใจที่จะทราบว่าถ้าผลรวมของstatusมีผลกระทบอย่างมีนัยสำคัญvalue? ถ้าเป็นเช่นนั้นคุณสามารถใช้Anovaฟังก์ชั่นในcarแพคเกจ (เพื่อไม่ให้สับสนกับanovaฟังก์ชั่นในฐานR)

dat <- data.frame(
  experiment = sample(c("A","B","C","D"), 264, replace=TRUE), 
  status = sample(c("D","R","A"), 264, replace=TRUE), 
  value = runif(264)   
)
require(lme4)
(fm <- lmer(value~status+(1|experiment), data=dat))

require(car)
Anova(fm)

ดู?Anovaหลังจากโหลดcarแพ็คเกจ


มีความคิดใดที่car::Anova()จะหลีกเลี่ยงปัญหาเรื่องการคำนวณค่า p ที่มิเชลเชื่อมโยง?
Mike Lawrence

ฉันทำไม่ได้ แต่การเดาของฉันคือการหลีกเลี่ยงปัญหาเหนียวโดยเพิกเฉยต่อสิ่งเหล่านั้น! เมื่ออ่านโพสต์ดั้งเดิมฉันรู้สึกว่าฉันอาจเข้าใจผิดคำถาม หาก OP ต้องการค่า p ที่แน่นอนสำหรับพารามิเตอร์เอฟเฟกต์คงที่แสดงว่ามีปัญหา แต่ถ้า OP ต้องการทราบว่ามันสำคัญหรือไม่ฉันคิดว่าค่า t มีค่ามากกว่าความไม่แน่นอนในการคำนวณค่า p ที่แน่นอน (กล่าวอีกนัยหนึ่งพวกเขามีความสำคัญ)
smillig

1
ฉันคิดว่ามันเป็นความคิดที่ดีที่จะเปลี่ยนไปใช้การคำนวณ ANOVA เพื่อหาผลกระทบโดยรวมของสถิติ แต่ฉันไม่แน่ใจว่าการใช้ค่า p เป็นสิ่งที่ดี anovaคำสั่งปกติจะให้ F ของคุณ
จอห์น

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

0

ฟังก์ชั่นpvals.fncไม่รองรับอีกต่อไปโดย lme4 การใช้แพ็คเกจ lmerTest แพคเกจเป็นไปได้ที่จะใช้วิธีอื่นในการคำนวณค่า p เช่นการประมาณของ Kenward-Roger

model=lmer(value~status+1|experiment)
anova(model, ddf="Kenward-Roger")

0

เพียงโหลดแพ็คเกจ afex จะพิมพ์ค่า p ในเอาต์พุตของฟังก์ชัน lmer จากแพ็คเกจ lme4 (คุณไม่จำเป็นต้องใช้ afex เพียงโหลดเท่านั้น):

library(lme4)  #for mixed model
library(afex)  #for p-values

สิ่งนี้จะเพิ่มคอลัมน์ p-value โดยอัตโนมัติไปยังเอาต์พุตของ lmer (yourmodel) สำหรับเอฟเฟกต์คงที่

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