我想制作一个多元线性混合模型,其中变量
slope_reactivity
、peak_reactivity
和 slope_recovery
作为因变量,以及 normalized_CTseverity
、gender
、age_years
和 binary_diagnosis
和因变量。 study
是随机效应。
我得到了这段代码:
model_cortisol <- lmer(slope_reactivity + slope_recovery +
peak_reactivity ~ normalized_CTseverity + age_years +
gender + binary_diagnosis + (1 | study),
data = df_sum_cort)
然而,这只给了我
normalized_CTseverity
等对slope_reactivity
、slope_recovery
和peak_reactivity
作为一个整体的效果。我还希望自变量对因变量的影响彼此分开。
我该怎么做?我是否可以更改模型代码中的某些内容,或者可以进行某种事后测试吗?我不想做单独的模型,因为
slope_reactivity
、slope_recovery
和 peak_reactivity
紧密相连。
您并不符合您认为的模型。公式左侧的内容都会被视为标准表达式,因此您的响应变量实际上是所有四个值的sum(可能不是您想要的)。
为了适应
lme4
中的多变量响应,您必须将数据转换为长格式,每个测量值一行(以及一个索引原始观察值的变量)。 tidyr::pivot_longer
是最简单的方法,例如
df_sum_cort$obs <- factor(seq(nrow(df_sum_cort)))
long_df <- dplyr::pivot_longer(df_sum_cort,
c(slope_reactivity, slope_recovery, peak_reactivity),
names_to = "var")
这将创建变量
var
,value
。然后:
model_cortisol <- lmer(value ~ 0 + var +
var:(normalized_CTseverity + age_years +
gender + binary_diagnosis) +
(0 + var | obs) + (1|study),
data = df_long,
control = lmerControl(check.nobs.vs.nlev = "ignore",
check.nobs.vs.rankZ = "ignore"))
这将估计每个响应变量的单独影响(总体截距被
0+
抑制)以及响应之间的相关性。随机效应分量会有点奇怪,因为它们与残差方差混淆,但固定效应应该是可以解释的。