在多层次模型中,估计与不估计随机效应相关参数的实际意义是什么?

机器算法验证 r 混合模式 lme4-nlme 随机效应模型
2022-02-14 08:01:01

在多层次模型中,估计与不估计随机效应相关参数的实际和解释相关的含义是什么?提出这个问题的实际原因是,在 R 的 lmer 框架中,当在参数之间的相关性模型中进行估计时,没有实现通过 MCMC 技术估计 p 值的方法。

例如,看看这个例子(下面引用的部分),M2 与 M3 的实际含义是什么。显然,在一种情况下不会估计 P5,而在另一种情况下会。

问题

  1. 出于实际原因(希望通过 MCMC 技术获得 p 值),即使 P5 基本上非零,也可能希望拟合一个没有随机效应之间相关性的模型。如果这样做,然后通过 MCMC 技术估计 p 值,结果是否可解释?(我知道@Ben Bolker 之前提到过“将显着性检验与 MCMC 相结合在统计上有点不连贯,尽管我理解这样做的冲动(获得置信区间更受支持)”,所以如果它能让你睡得更好晚上假装我说的是置信区间。)
  2. 如果一个人无法估计 P5,这与断言它是 0 一样吗?
  3. 如果 P5 真的不为零,那么 P1-P4 的估计值会受到什么影响?
  4. 如果 P5 真的不为零,那么 P1-P4 的误差估计会以什么方式受到影响?
  5. 如果 P5 真的不为零,那么对未包含 P5 的模型的解释在哪些方面存在缺陷?

借用@Mike Lawrence 的回答(那些比我更有知识的人可以自由地用完整的模型符号代替它,我并不完全相信我可以以合理的保真度这样做):

M2:( V1 ~ (1|V2) + V3 + (0+V3|V2)估计 P1 - P4)

M3:( V1 ~ (1+V3|V2) + V3估计 P1-P5)

可能估计的参数:

P1:全局拦截

P2:V2 的随机效应截距(即对于 V2 的每个级别,该级别的截距与全局截距的偏差)

P3:对 V3 的影响(斜率)的单一全局估计

P4:V3 在 V2 的每个级别内的影响(更具体地说,给定级别内的 V3 效果偏离 V3 的全局效果的程度),同时在跨级别的截距偏差和 V3 效果偏差之间强制为零相关性V2 的。

P5:跨 V2 水平的截距偏差和 V3 偏差之间的相关性

从足够大和广泛的模拟以及使用 lmer 的 R 中的随附代码得出的答案是可以接受的。

2个回答

考虑一下 lme4 中包含的 sleepstudy 数据。Bates 在他关于 lme4的在线书籍中讨论了这一点。在第 3 章中,他考虑了两种数据模型。

M0:Reaction1+Days+(1|Subject)+(0+Days|Subject)

MA:Reaction1+Days+(Days|Subject)

该研究涉及 18 名受试者,在 10 天睡眠不足的情况下进行了研究。在基线和随后几天计算反应时间。反应时间和睡眠剥夺持续时间之间有明显的影响。学科之间也存在显着差异。模型 A 允许随机截距和斜率效应之间存在相互作用的可能性:想象一下,例如,反应时间差的人更容易受到睡眠剥夺的影响。这意味着随机效应呈正相关。

在 Bates 的示例中,格子图没有明显的相关性,模型之间也没有显着差异。然而,为了研究上面提出的问题,我决定采用 sleepstudy 的拟合值,提高相关性并查看两个模型的性能。

从图中可以看出,较长的反应时间与较大的性能损失有关。用于模拟的相关性为 0.58

在此处输入图像描述

我根据我的人工数据的拟合值,使用 lme4 中的模拟方法模拟了 1000 个样本。我将 M0 和 Ma 分别拟合并查看了结果。原始数据集有 180 个观测值(18 个受试者各 10 个),模拟数据具有相同的结构。

底线是差别很小。

  1. 固定参数在两种模型下具有完全相同的值。
  2. 随机效应略有不同。每个模拟样本有 18 个截距和 18 个斜率随机效应。对于每个样本,这些影响被强制加到 0,这意味着两个模型之间的平均差异为(人为)0。但方差和协方差不同。MA 下的中位协方差为 104,而 M0 下的协方差为 84(实际值,112)。M0 下斜率和截距的方差大于 MA,大概是为了在没有自由协方差参数的情况下获得额外的摆动空间。
  3. lmer 的 ANOVA 方法给出了一个 F 统计量,用于将 Slope 模型与仅具有随机截距的模型进行比较(由于睡眠剥夺而没有影响)。显然,这个值在两种模型下都非常大,但在 MA 下它通常(但不总是)更大(平均 62 对 55 的平均值)。
  4. 固定效应的协方差和方差是不同的。
  5. 大约有一半的时间,它知道 MA 是正确的。用于比较 M0 和 MA 的中值 p 值为 0.0442。尽管存在有意义的相关性和 180 个平衡的观察结果,但只有大约一半的时间会选择正确的模型。
  6. 两种模型下的预测值不同,但非常细微。预测之间的平均差异为 0,sd 为 2.7。预测值本身的 sd 为 60.9

那么为什么会这样呢?@gung 合理地猜测,未能包括相关的可能性会迫使随机效应不相关。也许应该;但在这个实现中,允许将随机效应关联起来,这意味着数据能够将参数拉向正确的方向,而不管模型如何。错误模型的错误出现在可能性中,这就是为什么您可以(有时)在该级别区分两个模型的原因。混合效应模型基本上是为每个主题拟合线性回归,受模型认为它们应该是什么的影响。与正确模型相比,错误的模型会强制拟合不太合理的值。但归根结底,这些参数是由与实际数据的拟合决定的。

在此处输入图像描述

这是我有点笨拙的代码。想法是拟合睡眠研究数据,然后建立一个具有相同参数的模拟数据集,但随机效应的相关性更大。该数据集被输入到 simulation.lmer() 以模拟 1000 个样本,每个样本都适合两种方式。一旦我配对了拟合对象,我就可以提取拟合的不同特征并使用 t 检验或其他方法进行比较。

    # Fit a model to the sleep study data, allowing non-zero correlation
fm01 <- lmer(Reaction ~ 1 + Days +(1+Days|Subject), data=sleepstudy, REML=FALSE)
# Now use this to build a similar data set with a correlation = 0.9
# Here is the covariance function for the random effects
# The variances come from the sleep study. The covariance is chosen to give a larger correlation
sigma.Subjects <- matrix(c(565.5,122,122,32.68),2,2) 
# Simulate 18 pairs of random effects
ranef.sim <- mvrnorm(18,mu=c(0,0),Sigma=sigma.Subjects)
# Pull out the pattern of days and subjects.
XXM <- model.frame(fm01) 
n <- nrow(XXM) # Sample size
# Add an intercept to the model matrix.
XX.f <- cbind(rep(1,n),XXM[,2])
# Calculate the fixed effects, using the parameters from the sleep study. 
yhat <- XX.f %*%  fixef(fm01 )
# Simulate a random intercept for each subject
intercept.r <- rep(ranef.sim[,1], each=10) 
# Now build the random slopes
slope.r <- XXM[,2]*rep(ranef.sim[,2],each=10)
# Add the slopes to the random intercepts and fixed effects
yhat2 <- yhat+intercept.r+slope.r
# And finally, add some noise, using the variance from the sleep study
y <- yhat2 + rnorm(n,mean=0,sd=sigma(fm01))
# Here is new "sleep study" data, with a stronger correlation.
new.data <- data.frame(Reaction=y,Days=XXM$Days,Subject=XXM$Subject)
# Fit the new data with its correct model
fm.sim <- lmer(Reaction ~ 1 + Days +(1+Days|Subject), data=new.data, REML=FALSE)
# Have a look at it
xyplot(Reaction ~ Days | Subject, data=new.data, layout=c(6,3), type=c("p","r"))
# Now simulate 1000 new data sets like new.data and fit each one
# using the right model and zero correlation model.
# For each simulation, output a list containing the fit from each and
# the ANOVA comparing them.
n.sim <- 1000
    sim.data <- vector(mode="list",)
    tempReaction <- simulate(fm.sim, nsim=n.sim)
    tempdata <- model.frame(fm.sim)
    for (i in 1:n.sim){
        tempdata$Reaction <- tempReaction[,i]
			output0 <- lmer(Reaction ~ 1 + Days +(1|Subject)+(0+Days|Subject), data = tempdata, REML=FALSE)
			output1 <- lmer(Reaction ~ 1 + Days +(Days|Subject), data=tempdata, REML=FALSE)
			temp <- anova(output0,output1)
			pval <- temp$`Pr(>Chisq)`[2]
        sim.data[[i]] <- list(model0=output0,modelA=output1, pvalue=pval)
    }

Placidia 已经使用基于sleepstudy数据集的模拟数据提供了彻底的答案。这是另一个也使用sleepstudy数据的(不太严格的)答案。

我们看到可以通过“移动”随机预测变量来影响随机截距和随机斜率之间的估计相关性。查看模型fm1fm2以下的结果:

library(lmer)

#Fit Models
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
k <- 3 # Shift "Days" by an arbitrary amount
fm2 <- lmer(Reaction ~ I(Days + k) + (I(Days + k)| Subject), sleepstudy)

fm1 # Model Output
# Linear mixed model fit by REML ['lmerMod']
# Formula: Reaction ~ Days + (Days | Subject)
# Data: sleepstudy
# REML criterion at convergence: 1743.628
# Random effects:
#   Groups   Name        Std.Dev. Corr
# Subject  (Intercept) 24.740       
# Days         5.922   0.07
# Residual             25.592       
# Number of obs: 180, groups:  Subject, 18
# Fixed Effects:
#   (Intercept)         Days  
# 251.41        10.47

fm2 # Model Output
# Linear mixed model fit by REML ['lmerMod']
# Formula: Reaction ~ I(Days + k) + (I(Days + k) | Subject)
# Data: sleepstudy
# REML criterion at convergence: 1743.628
# Random effects:
#   Groups   Name        Std.Dev. Corr 
# Subject  (Intercept) 29.498        
# I(Days + k)  5.922   -0.55
# Residual             25.592        
# Number of obs: 180, groups:  Subject, 18
# Fixed Effects:
#   (Intercept)  I(Days + k)  
# 220.00        10.47

# Random effects from both models
cbind(ranef(fm1)$Subject,ranef(fm2)$Subject)
# (Intercept)        Days (Intercept) I(Days + k)
# 308   2.2585654   9.1989719 -25.3383538   9.1989727
# 309 -40.3985769  -8.6197032 -14.5394628  -8.6197043
# 310 -38.9602458  -5.4488799 -22.6136027  -5.4488807
# 330  23.6904985  -4.8143313  38.1334933  -4.8143315
# 331  22.2602027  -3.0698946  31.4698868  -3.0698946
# 332   9.0395259  -0.2721707   9.8560377  -0.2721706
# 333  16.8404311  -0.2236244  17.5113040  -0.2236243
# 334  -7.2325792   1.0745761 -10.4563076   1.0745761
# 335  -0.3336958 -10.7521591  31.9227854 -10.7521600
# 337  34.8903508   8.6282840   9.0054946   8.6282850
# 349 -25.2101104   1.1734142 -28.7303527   1.1734141
# 350 -13.0699567   6.6142050 -32.9125736   6.6142054
# 351   4.5778352  -3.0152572  13.6236077  -3.0152574
# 352  20.8635924   3.5360133  10.2555505   3.5360138
# 369   3.2754530   0.8722166   0.6588028   0.8722167
# 370 -25.6128694   4.8224646 -40.0802641   4.8224648
# 371   0.8070397  -0.9881551   3.7715053  -0.9881552
# 372  12.3145393   1.2840297   8.4624492   1.2840300

从模型输出中,我们看到随机方差相关性发生了变化。然而,斜率(固定和随机)保持不变,残差方差估计也是如此。截距(固定和随机)估计值随着移位变量的变化而变化。

在此处的 Jack Weiss 博士的讲义中讨论了 LMM 的去相关随机截距斜率协方差Weiss 指出,以这种方式降低方差相关性有时有助于模型收敛等。

上面的例子改变了随机相关性(参数“P5”)。部分解决了 OP 的 Q3,我们从上面的输出中看到:

#   Parameter           Status
=================================
P1  Fixed Intercept     Affected
P2  Random Intercepts   Affected
P3  Fixed Slope         Not Affected
P4  Random Slopes       Not Affected
P5  Random Correlation  Affected