ANOVA ผสมเอฟเฟกต์แบบไม่สมดุลสำหรับการวัดซ้ำ


17

ฉันมีข้อมูลจากผู้ป่วยที่รักษาด้วยวิธีการรักษา 2 แบบในระหว่างการผ่าตัด ฉันต้องวิเคราะห์ผลของมันต่ออัตราการเต้นของหัวใจ การวัดอัตราการเต้นของหัวใจจะดำเนินการทุก 15 นาที

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

ข้อเสนอแนะเกี่ยวกับวิธีการวิเคราะห์ข้อมูลที่ได้รับการต้อนรับ

อัปเดต:
ตามที่แนะนำฉันทำการติดตั้งข้อมูลโดยใช้lmerฟังก์ชั่นและพบว่ารุ่นที่ดีที่สุดคือ:

heart.rate~ time + treatment + (1|id) + (0+time|id) + (0+treatment|time)

ด้วยผลลัพธ์ต่อไปนี้:

Random effects:
 Groups   Name        Variance   Std.Dev. Corr   
 id       time        0.00037139 0.019271        
 id       (Intercept) 9.77814104 3.127002        
 time     treat0      0.09981062 0.315928        
          treat1      1.82667634 1.351546 -0.504 
 Residual             2.70163305 1.643665        
Number of obs: 378, groups: subj, 60; time, 9

Fixed effects:
             Estimate Std. Error t value
(Intercept) 72.786396   0.649285  112.10
time         0.040714   0.005378    7.57
treat1       2.209312   1.040471    2.12

Correlation of Fixed Effects:
       (Intr) time  
time   -0.302       
treat1 -0.575 -0.121

ตอนนี้ฉันหลงทางในการตีความผลลัพธ์ ฉันถูกต้องหรือไม่ที่สรุปว่าการรักษาทั้งสองแตกต่างกันซึ่งส่งผลต่ออัตราการเต้นของหัวใจ? ความสัมพันธ์ของ -504 ระหว่าง treat0 และ treat1 หมายถึงอะไร?


ก่อนที่ฉันจะอัปเดตคำตอบการรักษาเป็นปัจจัยที่ซ้ำกันหรือไม่? คือแต่ละวิชาได้รับการรักษาทั้ง "a" และการรักษา "b" หรือเป็นปัจจัยระหว่างวิชาหรือไม่?
Matt Albrecht

การรักษาเป็นปัจจัยระหว่างวิชา แต่ละวิชาจะได้รับการรักษาเพียง 1 ประเภทเท่านั้น ฉันเขียนรหัสการรักษาสองรายการเป็น 1 และ 0 และตั้งค่าการรักษาเป็นตัวแปรปัจจัย
biostat_newbie

คำตอบ:


15

ฟังก์ชัน lme / lmer จากแพ็คเกจ nlme / lme4 สามารถจัดการกับการออกแบบที่ไม่สมดุล คุณควรตรวจสอบให้แน่ใจว่าเวลาเป็นตัวแปรที่เป็นตัวเลข คุณอาจต้องการทดสอบความโค้งประเภทต่าง ๆ เช่นกัน รหัสจะมีลักษณะดังนี้:

library(lme4)
#plot data with a plot per person including a regression line for each
xyplot(heart.rate ~ time|id, groups=treatment, type= c("p", "r"), data=heart)

#Mixed effects modelling
#variation in intercept by participant
lmera.1 <- lmer(heart.rate ~ treatment * time + (1|id), data=heart)
#variation in intercept and slope without correlation between the two
lmera.2 <- lmer(heart.rate ~ treatment * time + (1|id) + (0+time|id), data=heart)
#As lmera.1 but with correlation between slope and intercept
lmera.3 <- lmer(heart.rate ~ treatment * time + (1+time|id), data=heart)

#Determine which random effects structure fits the data best
anova(lmera.1, lmera.2, lmera.3)

ในการรับแบบจำลองกำลังสองให้ใช้สูตร "heart.rate ~ treatment * time * I (time ^ 2) + (เอฟเฟกต์แบบสุ่ม)"

อัปเดต:
ในกรณีนี้ที่การรักษาเป็นปัจจัยระหว่างอาสาสมัครฉันจะยึดตามข้อกำหนดของโมเดลด้านบน ฉันไม่คิดว่าคำ (0 + การรักษา | เวลา) เป็นคำที่คุณต้องการรวมไว้ในแบบจำลองสำหรับฉันแล้วมันไม่สมเหตุสมผลในกรณีนี้ในการรักษาเวลาเป็นตัวแปรการจัดกลุ่มแบบสุ่มผลกระทบ

แต่เพื่อตอบคำถามของคุณของ "ความสัมพันธ์-0.504หมายถึงอะไรระหว่างการรักษา 0และtreat1 " นี่คือสัมประสิทธิ์สหสัมพันธ์ระหว่างการรักษาสองแบบที่แต่ละครั้งการจัดกลุ่มเป็นค่าหนึ่งคู่ วิธีนี้เหมาะสมกว่าหาก id เป็นปัจจัยการจัดกลุ่มและการรักษาเป็นตัวแปรภายในเรื่อง จากนั้นคุณมีการประมาณค่าสหสัมพันธ์ระหว่างจุดตัดของสองเงื่อนไข

ก่อนทำการสรุปเกี่ยวกับแบบจำลองให้แก้ไขด้วย lmera.2 และรวม REML = F จากนั้นโหลดแพ็คเกจ "languageR" และเรียกใช้:

plmera.2<-pvals.fnc(lmera.2)
plmera.2

จากนั้นคุณสามารถได้รับค่า p แต่โดยลักษณะของมันอาจมีผลกระทบอย่างมีนัยสำคัญของเวลาและผลกระทบที่สำคัญของการรักษา


1
ควรตั้งค่าอาร์กิวเมนต์ REML ของ Lmer เป็น FALSE เมื่อสร้างแบบจำลองเหล่านั้นเนื่องจากในที่สุดพวกเขาจะถูกเปรียบเทียบโดยใช้ฟังก์ชัน anova ()?
Mike Lawrence

7
เมื่อเปรียบเทียบแบบจำลองโดยใช้การทดสอบอัตราส่วนความน่าจะเป็นคุณสามารถเปรียบเทียบโครงสร้างเอฟเฟกต์แบบสุ่มต่าง ๆโดยใช้ REML (โอกาสสูงสุด จำกัด / ตกค้างดังกล่าวข้างต้น) แต่คุณต้องใช้ ML (โอกาสสูงสุด) เพื่อเปรียบเทียบแบบจำลองเอฟเฟกต์คงที่ต่างๆ
onestop

ไม่ควรใช้เวลาแบบสุ่มเพราะการวัดอัตราการเต้นหัวใจเป็นตัวอย่างที่ได้รับระหว่างการผ่าตัด? หากเป็นเช่นนี้ความเหมาะสมต่อไปนี้จะสมเหตุสมผล (เนื่องจากฉันยังคงอ่านข้อมูลเกี่ยวกับฟังก์ชัน lmer และยังไม่เข้าใจไวยากรณ์) lmer (heart.rate ~ treatment + (1 | id) + (1 + เวลา), data = heart)
biostat_newbie

1
คำว่า '(time | id)' ที่ด้านเอฟเฟกต์แบบสุ่มบอกให้ฟังก์ชั่นให้เหมาะสมกับความลาดชัน (เชิงเส้น) ที่แตกต่างกันสำหรับแต่ละคน ดังนั้นคุณสามารถมีเวลาเป็นทั้งเอฟเฟกต์คงที่และเอฟเฟกต์แบบสุ่ม แต่มันหมายถึงสิ่งต่าง ๆ ดูตัวอย่าง sleepstudy ในหนังสือของดักลาสเบตส์: lme4.r-forge.r-project.org/book/Ch4.pdf
Matt Albrecht

2
ฉันไม่เข้าใจวิธีการสำหรับการทำซ้ำการออกแบบมาตรการจะแนะนำมากกว่าเก่าที่ดีlmer lmeในการออกแบบที่ข้ามลักษณะพิเศษแบบสุ่มความแข็งแกร่งหลักlmerนั้นหายาก แต่บ่อยครั้งที่คุณต้องการสร้างแบบจำลองโครงสร้างความสัมพันธ์ของส่วนที่เหลือ เท่าที่ฉันเข้าใจlmerไม่สนับสนุน แต่lmeทำ ฉันผิดสมมติว่าในกรณีเช่นlmerนี้เป็นเครื่องมือที่ด้อยกว่าlmeหรือไม่?
AlefSin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.