处理混合模型中的奇异拟合

机器算法验证 r lme4-nlme 咕噜咕噜 过拟合 单数
2022-01-22 18:24:00

假设我们有一个模型

mod <- Y ~ X*Condition + (X*Condition|subject)

# Y = logit variable  
# X = continuous variable  
# Condition = values A and B, dummy coded; the design is repeated 
#             so all participants go through both Conditions  
# subject = random effects for different subjects 

summary(model)
Random effects:
 Groups  Name             Variance Std.Dev. Corr             
 subject (Intercept)      0.85052  0.9222                    
         X                0.08427  0.2903   -1.00            
         ConditionB       0.54367  0.7373   -0.37  0.37      
         X:ConditionB     0.14812  0.3849    0.26 -0.26 -0.56
Number of obs: 39401, groups:  subject, 219

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)       2.49686    0.06909   36.14  < 2e-16 ***
X                -1.03854    0.03812  -27.24  < 2e-16 ***
ConditionB       -0.19707    0.06382   -3.09  0.00202 ** 
X:ConditionB      0.22809    0.05356    4.26 2.06e-05 ***

在这里,我们观察到奇异拟合,因为截距和 x 随机效应之间的相关性为 -1。现在,根据这个有用的链接,处理这个模型的一种方法是去除高阶随机效应(例如,X:ConditionB),看看在测试奇点时这是否会有所不同。另一种是使用贝叶斯方法,例如使用blme包来避免奇异性。

首选方法是什么,为什么?

我问这个是因为使用第一个或第二个会导致不同的结果 - 在第一种情况下,我将删除 X:ConditionB 随机效应,并且无法估计 X 和 X:ConditionB 随机效应之间的相关性。另一方面,使用blme允许我保留 X:ConditionB 并估计给定的相关性。当我可以使用贝叶斯方法估计所有内容时,我看不出为什么我什至应该使用非贝叶斯估计并在出现奇异拟合时消除随机效应。

有人可以向我解释使用这两种方法来处理奇异拟合的好处和问题吗?

谢谢你。

2个回答

当你获得奇异拟合时,这通常表明模型过拟合——即随机效应结构过于复杂,无法得到数据的支持,这自然会导致建议移除随机效应中最复杂的部分结构(通常是随机斜率)。这种方法的好处是它导致了一个更简洁的模型,不会过拟合。

但是,在做任何事情之前,您是否有充分的理由希望他们XCondition互动首先因主题而异?数据如何生成的理论是否表明了这一点?

如果您希望用最大随机效应结构拟合模型并lme4获得奇异拟合,那么在贝叶斯框架中拟合相同的模型可能会很好地告诉您为什么 lme4会出现问题,通过检查轨迹图以及各种参数估计的收敛程度. 采用贝叶斯方法的优势在于,这样做您可能会发现原始模型的问题,即。数据不支持最大随机效应结构的原因)或者它可能会揭示为什么lme4无法拟合模型。我遇到过贝叶斯模型不能很好地收敛的情况,除非使用信息先验——这可能会也可能不会。

简而言之,这两种方法都有优点。

但是,我总是从初始模型简约并由专家领域知识提供信息的地方开始,以确定最合适的随机效应结构。指定分组变量相对容易,但通常不必包括随机斜率仅当它们具有合理的理论意义并且有数据支持时才包括它们。

编辑:评论中提到有合理的理论理由来拟合最大随机效应结构。因此,使用等效贝叶斯模型的一种相对简单的方法是从包中交换调用 to glmer——stan_glmerrstanarm被设计为即插即用。它具有默认先验,因此您可以快速拟合模型。该软件包还具有许多用于评估收敛性的工具。如果您发现所有参数都收敛到合理的值,那么您就很好。然而,可能存在许多问题——例如,方差被估计为零或低于零,或者估计值继续漂移。mc-stan.org 站点有丰富的信息和用户论坛。

这是一个非常有趣的主题,有有趣的答案和评论!由于这还没有被提出,我想指出我们对每个主题的数据都很少(据我了解)。实际上,每个受试者对于响应变量 Y、分类变量 Condition 和连续变量 X 中的每一个都只有两个值。特别是,我们知道 Condition 的两个值是 A 和 B。

如果我们要追求两阶段回归建模而不是混合效应建模,我们甚至无法将线性回归模型拟合到来自特定主题的数据,如下面的一个主题的玩具示例所示:

y <- c(4, 7)
condition <- c("A", "B")
condition <- factor(condition)
x <- c(0.2, 0.4)

m <- lm(y ~ condition*x)
summary(m)

此特定主题模型的输出将是:

Call:
lm(formula = y ~ condition * x)

Residuals:
ALL 2 residuals are 0: no residual degrees of freedom!

Coefficients: (2 not defined because of singularities)
         Estimate Std. Error t value Pr(>|t|)
(Intercept)         4         NA      NA       NA
conditionB          3         NA      NA       NA
x                  NA         NA      NA       NA
conditionB:x       NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:      1,     Adjusted R-squared:    NaN 
F-statistic:   NaN on 1 and 0 DF,  p-value: NA

请注意,模型拟合存在奇点,因为我们试图仅使用 2 个观测值来估计 4 个回归系数加上误差标准差。

即使我们在每种条件下观察到这个主题两次而不是一次,奇点也会持续存在。但是,如果我们在每种条件下观察对象 3 次,我们将摆脱奇点:

y <- c(4, 7, 3, 5, 1, 2)
condition <- c("A", "B", "A","B","A","B")
condition <- factor(condition)
x <- c(0.2, 0.4, 0.1, 0.3, 0.3, 0.5)

m2 <- lm(y ~ condition*x)
summary(m2)

这是第二个示例的相应 R 输出,其中奇点已消失:

>     summary(m2)

Call:
lm(formula = y ~ condition * x)

Residuals:
    1       2       3       4       5       6 
1.3333  2.3333 -0.6667 -1.1667 -0.6667 -1.1667 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)     4.667      3.555   1.313    0.320
conditionB      6.000      7.601   0.789    0.513
x             -10.000     16.457  -0.608    0.605
conditionB:x   -5.000     23.274  -0.215    0.850

Residual standard error: 2.327 on 2 degrees of freedom
Multiple R-squared:  0.5357,    Adjusted R-squared:  -0.1607 
F-statistic: 0.7692 on 3 and 2 DF,  p-value: 0.6079

当然,混合效应模型不适合每个受试者不相关的、单独的线性回归模型——它适合截距和/或斜率随机偏离典型截距和/或斜率的“相关”模型,这样随机偏离典型截距和/或典型斜率服从均值为零和一些未知标准偏差的正态分布。

即便如此,我的直觉表明,混合效应模型正在努力应对每个主题可用的少量观察 - 只有 2 个。模型加载的随机斜率越多,它可能就越困难。我怀疑,如果每个受试者贡献 6 个观察值而不是 2 个(即每个条件 3 个),它就不再难以适应所有的随机斜率。

在我看来,这可能是(?)当前研究设计不支持复杂建模雄心的情况——为了支持这些雄心,在每个条件下需要对每个主题进行更多的观察(或者至少对于某些科目?)。这只是我的直觉,所以我希望其他人可以将他们的见解添加到我上面的观察中。先感谢您!