ค่า P สำหรับเงื่อนไขการโต้ตอบในโมเดลเอฟเฟกต์แบบผสมโดยใช้ lme4


10

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

แทนที่จะส่งเสียงร้องเพื่อขอความช่วยเหลือฉันคิดว่าฉันควรใช้ความพยายามอย่างเต็มที่เพื่อตีความปัญหาแล้วขอการแก้ไขโดยรวมของคุณ อีกสองสามคนคือผู้ช่วยคนอื่น ๆ :

  • ในขณะที่เขียนผมพบคำถามนี้แสดงให้เห็นว่าnlmeขึ้นโดยตรงให้ค่า P สำหรับคำปฏิสัมพันธ์ lme4แต่ฉันคิดว่ามันยังคงถูกต้องที่จะขอให้มีความสัมพันธ์กับ
  • Livius'คำตอบสำหรับคำถามนี้ให้ลิงก์ไปยังการอ่านเพิ่มเติมจำนวนมากซึ่งฉันจะพยายามผ่านในอีกไม่กี่วันข้างหน้าดังนั้นฉันจะแสดงความคิดเห็นกับความคืบหน้าใด ๆ ที่เกิดขึ้น

ในข้อมูลของฉันฉันมีตัวแปรขึ้นอยู่กับdvการconditionจัดการ (0 = ควบคุม 1 = สภาพการทดลองซึ่งจะส่งผลให้สูงขึ้นdv) และยังจำเป็นป้ายappropriate: ทดลองรหัส1สำหรับการนี้ควรจะแสดงผล แต่การทดลองรหัส0ยุทธ ไม่ใช่เพราะปัจจัยสำคัญขาดหายไป

ฉันยังได้รวมการสกัดแบบสุ่มสองรายการสำหรับsubjectและเพื่อtargetสะท้อนถึงdvค่าที่สัมพันธ์กันในแต่ละวิชาและภายใน 14 ปัญหาที่แก้ไข (ผู้เข้าร่วมแต่ละคนแก้ไขทั้งตัวควบคุมและเวอร์ชันทดลองของปัญหาแต่ละข้อ)

library(lme4)
data = read.csv("data.csv")

null_model        = lmer(dv ~ (1 | subject) + (1 | target), data = data)
mainfx_model      = lmer(dv ~ condition + appropriate + (1 | subject) + (1 | target),
                         data = data)
interaction_model = lmer(dv ~ condition + appropriate + condition*appropriate +
                              (1 | subject) + (1 | target), data = data)
summary(interaction_model)

เอาท์พุท:

## Linear mixed model fit by REML ['lmerMod']
## ...excluded for brevity....
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  subject  (Intercept) 0.006594 0.0812  
##  target   (Intercept) 0.000557 0.0236  
##  Residual             0.210172 0.4584  
## Number of obs: 690, groups: subject, 38; target, 14
## 
## Fixed effects:
##                                Estimate Std. Error t value
## (Intercept)                    0.2518     0.0501    5.03
## conditioncontrol               0.0579     0.0588    0.98
## appropriate                   -0.0358     0.0595   -0.60
## conditioncontrol:appropriate  -0.1553     0.0740   -2.10
## 
## Correlation of Fixed Effects:
## ...excluded for brevity.

ANOVA นั้นแสดงให้เห็นว่าinteraction_modelเหมาะสมดีกว่าอย่างมากmainfx_modelจากการที่ฉันสรุปได้ว่ามีปฏิสัมพันธ์ที่สำคัญเกิดขึ้น (p = .035)

anova(mainfx_model, interaction_model)

เอาท์พุท:

## ...excluded for brevity....
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## mainfx_model       6 913 940   -450      901                          
## interaction_model  7 910 942   -448      896  4.44      1      0.035 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

จากนั้นฉันแยกส่วนย่อยของข้อมูลที่ตรงappropriateตามความต้องการ (เช่น, appropriate = 1) และเพื่อให้พอดีกับโมเดลแบบ null และโมเดลรวมถึงconditionเป็นเอฟเฟกต์เปรียบเทียบทั้งสองรุ่นโดยใช้ ANOVA อีกครั้งและพบว่าconditionเป็นตัวทำนายที่สำคัญ

good_data = data[data$appropriate == 1, ]
good_null_model   = lmer(dv ~ (1 | subject) + (1 | target), data = good_data)
good_mainfx_model = lmer(dv ~ condition + (1 | subject) + (1 | target), data = good_data)

anova(good_null_model, good_mainfx_model)

เอาท์พุท:

## Data: good_data
## models:
## good_null_model: dv ~ (1 | subject) + (1 | target)
## good_mainfx_model: dv ~ condition + (1 | subject) + (1 | target)
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## good_null_model    4 491 507   -241      483                          
## good_mainfx_model  5 487 507   -238      477  5.55      1      0.018 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ตรวจสอบคำถามนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่า p ในlme4: stats.stackexchange.com/questions/118416/…
ทิม

การใช้ lmerTest :: anova () จะให้ตาราง anova แก่คุณพร้อมค่า p สำหรับแต่ละคำ ซึ่งจะช่วยให้คุณตรวจสอบการโต้ตอบโดยตรงแทนที่จะเปรียบเทียบแบบจำลองโดยรวม ดูคำตอบสำหรับคำถาม @Tim ที่เชื่อมโยงกับ: stats.stackexchange.com/a/118436/35304
Kayle Sawyer

คำตอบ:


3

ฉันไม่เห็นพูดมากเกินไปที่นี่ ฉันคิดว่าคุณทำได้ดีมาก

มีหลายวิธีที่ผู้คนได้พูดคุยกันเพื่อทดสอบเอฟเฟกต์และรับค่า p สำหรับโมเดลเอฟเฟกต์ผสมที่ซับซ้อน มีภาพรวมที่ดีเป็นที่นี่ วิธีที่ดีที่สุดคือการใช้วิธีการคำนวณแบบเข้มข้น (วิธีการ bootstrapping หรือ Bayesian) แต่นี่เป็นขั้นสูงสำหรับคนส่วนใหญ่ วิธีที่ดีที่สุดที่สอง (และสะดวกที่สุด) คือการใช้การทดสอบอัตราส่วนความน่าจะเป็น นั่นคือสิ่งที่anova()(ทางเทคนิค? anova.merMod () ) กำลังทำอยู่ สิ่งสำคัญคือต้องใช้การทดสอบอัตราส่วนความน่าจะเป็นของแบบจำลองที่เหมาะสมกับความเป็นไปได้สูงสุดอย่างเต็มที่แทนที่จะจำกัด โอกาสสูงสุด(REML) ในทางกลับกันสำหรับรุ่นสุดท้ายของคุณและสำหรับการตีความคุณต้องการใช้ REML นี่เป็นสิ่งที่ทำให้หลายคนสับสน ในการส่งออกของคุณเราเห็นว่าคุณเหมาะสมกับรูปแบบของคุณกับ REML (นี้เป็นเพราะตัวเลือกที่มีการตั้งค่าTRUEโดยเริ่มต้นในlmer(). นั่นจะหมายความว่าการทดสอบของคุณไม่ถูกต้องอย่างไรเพราะเป็นเช่นนี้เป็นความผิดพลาดที่พบบ่อยanova.merMod()มีrefitการโต้แย้งซึ่งโดย ค่าเริ่มต้นถูกตั้งค่าเป็นTRUEและคุณไม่ได้เปลี่ยนดังนั้นการมองการณ์ไกลของผู้พัฒนาแพ็คเกจได้ช่วยคุณไว้ที่นั่น

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


0

ฉันเป็นสามเณรและปฏิบัติตามคำแนะนำจาก Zuur et al .. ฉันใช้lmeจากnlmeแพ็คเกจแทนlme4เมื่อฉันต้องการเพิ่มโครงสร้างข้อผิดพลาดแบบลำดับชั้นในโมเดลเชิงเส้นเป็นอย่างอื่น การตอบสนองของฉันอาจจะไม่ดี

สองความคิดเห็น:

(1) ฉันไม่แน่ใจว่ามันสมเหตุสมผลที่จะทดสอบconditionในเซ็ตย่อยเมื่อappropriate==1เท่านั้น หากคุณต้องการได้รับค่า p สำหรับเอฟเฟกต์หลักคุณสามารถใช้Anovaจากแพ็คเกจ 'รถยนต์':

require(car)
Anova(M,type="III")# type III Sum of Squares. M was fitted using method=REML

หากคุณต้องการแก้ไขการโต้ตอบคุณสามารถเรียกใช้การเปรียบเทียบแบบจับคู่โดยตรง (?) หรือทำสิ่งที่คุณทำ แต่ในทั้งเซ็ตย่อย (เช่นกับเซตย่อยที่appropriate==0)

(2) คุณอาจต้องการเลือกโครงสร้างข้อผิดพลาดก่อนแทนที่จะถือว่า(1 | subject) + (1 | target)เป็นโครงสร้างข้อผิดพลาดที่ดีที่สุด จากสิ่งที่คุณเขียนฉันรวบรวมว่าconditionเป็นปัจจัยภายในภายในขณะที่appropriateเป็นระหว่างเรื่องหรือปัจจัยระหว่างเป้าหมาย คุณอาจต้องการที่จะเพิ่มเนินเขาสำหรับปัจจัยภายในเรื่องและ / หรือภายในเป้าหมายตัวอย่างเช่น: เพิ่มความลาดชันสุ่มสำหรับปัจจัยภายในเรื่องdv ~ condition + appropriate + (1+condition | subject) + (1 | target) conditionไม่จำเป็นต้องมีความลาดชันสำหรับปัจจัยระหว่างเป้าหมาย / เป้าหมาย

ไชโย


ขอบคุณ จะไม่Anovaเพียงเสแสร้งความสัมพันธ์ภายในเรื่องและเป้าหมายที่ไม่ได้มี? เหตุผลที่ฉันทำการวิเคราะห์ซ้ำโดยใช้ข้อมูลเฉพาะที่แสดงappropriate==1ว่าวัสดุจำนวนหนึ่งที่ใช้แสดงว่าเป็นปัญหาหลังการทดสอบดังนั้น 'ไม่เหมาะสม' ในที่สุดฉันไม่ได้ใช้ความลาดชันแบบสุ่มด้วยเหตุผลง่ายๆที่ตัวแบบนั้นเหมาะสมกว่าหากไม่มีมัน
Eoin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.