我做了一个实验,让 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
我也想过建这个模型:
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
我不明白 model.02 的摘要输出,因为我仍然只有 HeartRate 和 SONGSAvB 之间的交互,或者 HeartRate 和 SONGSCvB 之间的交互(这是一般的 HeartRate 和两者之间的对比)。另外,我是否应该查看相关值以评估跨级别的感兴趣变量之间的关联?或者在模型的系数处?
所以,更具体地说,我不明白: (1) 如何构建模型来寻找每个歌曲级别的两个感兴趣变量之间的关联程度(我构建的模型是否正确?正确的公式是什么?),以及 (2) 哪个系数决定了感兴趣的变量之间的关联程度(模型的均方是否是一个很好的指标?我应该看看输出中显示“相关性”的值吗?)
我怀疑我应该为每个歌曲级别创建一条具有不同截距和斜率的回归线,但在重复测量设计中。我的直觉是,由于多重比较问题,并且模型应该考虑主体内方差,因此独立地为每个歌曲级别构建线性模型是不正确的。但是,我不知道从哪里开始,我在互联网上找不到类似的东西。
我希望我的代码和问题足够清楚,尽管我对 R 和统计数据还很陌生。
提前谢谢你,
R.