lme() in R - 用于重复测量设计的线性混合模型。拟合独立斜率以确定重复测量水平内的关联?

问题描述 投票:0回答:0

我做了一个实验,让 30 个人随机听 3 首歌曲(“A”、“B”和“C”)。对于每个参与者和歌曲,我在听力任务中得到了平均“体温”和平均“心率”。也就是说,我有一个具有 1 个因素(歌曲)和 3 个水平的重复测量设计。

这里是一些遵循我的真实数据结构的长格式虚拟数据:

res_table <- tibble(
  ID                   = rep(seq(1,30,1),3),
  SONGS                = rep(c("A","B","C"),each=30),
  BodyTemperature      = sample(35:65, 30*3, replace = TRUE),
  HeartRate            = sample(50:100, 30*3, replace = TRUE),
  YearsMusicalTraining = rep(sample(0:7,30, replace = TRUE),3)
)
res_table$ID <- factor(res_table$ID, labels = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"))
res_table$SONGS <- factor(res_table$SONGS, levels = c("A","B","C"))

我有兴趣了解歌曲中“体温”和“心率”之间的关联程度。具体来说,我想知道“心率”的测量值如何预测“体温”,以及这种关联是否会根据参与者所听的歌曲而变化。

我尝试按照 Field 的书“使用 R 发现统计数据”使用 lme() 来使用 R 制作混合模型/多级线性模型:

model.01 <- lme(BodyTemperature ~ HeartRate, random = ~1|ID/SONGS, data = res_table, method = "ML")
summary(model.01)

但没有太大的成功:输出摘要没有给我每个歌曲级别的“体温”和“心率”之间关联的统计数据。这是输出(我没有在这里包括 AIC 和 BIC,但它也是输出的一部分):

Linear mixed-effects model fit by maximum likelihood
  Data: res_table 

Random effects:
 Formula: ~1 | ID
         (Intercept)
StdDev: 0.0005227154

 Formula: ~1 | SONGS %in% ID
        (Intercept)   Residual
StdDev:    9.189513 0.04996696

Fixed effects:  BodyTemperature ~ HeartRate 
 Correlation: 
          (Intr)
HeartRate -0.979

Standardized Within-Group Residuals:
          Min            Q1           Med            Q3           Max 
-0.0094852307 -0.0046700058  0.0001771823  0.0048029654  0.0084200939 

Number of Observations: 90
Number of Groups: 
           ID SONGS %in% ID 
           30            90 

Second part of the output

我也想过建这个模型:

model.02 <- lme(BodyTemperature ~ HeartRate*SONGS, random = ~1|ID/SONGS, data = res_table, method = "ML")
summary(model.02)

但是我无法完全理解摘要的输出意味着什么,即使我事先创建对比以在创建的虚拟变量上“放置标签”:

AvB <- c(1,-1,0) # comparison of A versus B
CvB  <- c(0,1,-1) # comparison of C versus B
contrasts(res_table$SONGS)<-cbind(AvB,CvB)

这是输出(我这里没有包括 AIC 和 BIC 但它也是输出的一部分):

Linear mixed-effects model fit by maximum likelihood
  Data: res_table 

Random effects:
 Formula: ~1 | ID
         (Intercept)
StdDev: 0.0005119628

 Formula: ~1 | SONGS %in% ID
        (Intercept)   Residual
StdDev:    8.914116 0.04965589

Fixed effects:  BodyTemperature ~ HeartRate * SONGS 
 Correlation: 
                   (Intr) HertRt SONGSA SONGSC HR:SONGSA
HeartRate          -0.980                               
SONGSAvB            0.124 -0.103                        
SONGSCvB            0.030 -0.031  0.552                 
HeartRate:SONGSAvB -0.104  0.081 -0.981 -0.534          
HeartRate:SONGSCvB -0.031  0.033 -0.527 -0.979  0.527   

Standardized Within-Group Residuals:
          Min            Q1           Med            Q3           Max 
-0.0100366260 -0.0048459431  0.0002849439  0.0045537959  0.0103488878 

Number of Observations: 90
Number of Groups: 
           ID SONGS %in% ID 
           30            90 

Second part of the output

我不明白 model.02 的摘要输出,因为我仍然只有 HeartRate 和 SONGSAvB 之间的交互,或者 HeartRate 和 SONGSCvB 之间的交互(这是一般的 HeartRate 和两者之间的对比)。另外,我是否应该查看相关值以评估跨级别的感兴趣变量之间的关联?或者在模型的系数处?

所以,更具体地说,我不明白: (1) 如何构建模型来寻找每个歌曲级别的两个感兴趣变量之间的关联程度(我构建的模型是否正确?正确的公式是什么?),以及 (2) 哪个系数决定了感兴趣的变量之间的关联程度(模型的均方是否是一个很好的指标?我应该看看输出中显示“相关性”的值吗?)

我怀疑我应该为每个歌曲级别创建一条具有不同截距和斜率的回归线,但在重复测量设计中。我的直觉是,由于多重比较问题,并且模型应该考虑主体内方差,因此独立地为每个歌曲级别构建线性模型是不正确的。但是,我不知道从哪里开始,我在互联网上找不到类似的东西。

我希望我的代码和问题足够清楚,尽管我对 R 和统计数据还很陌生。

提前谢谢你,

R.

r statistics regression nlme multilevel-analysis
© www.soinside.com 2019 - 2024. All rights reserved.