lme4 无法在没有警告的情况下计算随机拦截

lme4 fails to calculate random intercepts with no warnings

有一个特殊的问题,即给定 2 个具有完全相同格式的数据集,指定完全相同方式的 2 个模型不会产生相同的随机效应结构。数据的设计使得每个都有 48 个独特的主题,每个主题在 4 种条件下进行一次观察。结果变量是“dv”列,预测变量是“cond”列,分组变量是“sub”列。

第一个模型按预期运行,使用 coef(model) 检查对象级别随机截距,而另一个假设所有对象的截距都是固定的。尽管事实上这两个模型的指定是相同的。没有收敛或方差问题警告,而且受试者实际上有不同的均值(所有 4 种条件下的平均响应),因此截距应该有所不同。

取出数据集的前 33 行(即条件 0 内的前 33 个对象)使 lme4 正确计算随机截距。然而,我似乎无法将其隔离到一个奇怪的数据点,并且模型之间的所有类型和代码都是相同的。完全不知道为什么一个奇怪的数据点(如果这真的是问题所在)应该混淆 lme4 如何计算随机效应。

请参阅下面的代码以重现以下数据文件的问题: data files (zip)

library('lme4')
data_dir = '/Path/to/data/dir/'
#Load in data and set types
goodDat = read.csv(paste(data_dir,'ROI_2_noX.csv',sep=""))
goodDat$dv <-as.numeric(goodDat$dv)
goodDat$cond <- as.factor(goodDat$cond)
#4 levels make the first the reference 
goodDat$cond <- relevel(goodDat$cond,ref="0");
goodDat$sub <- as.factor(goodDat$sub)

#Same for bad example
badDat = read.csv(paste(data_dir,'ROI_3_noX.csv',sep=""))
#badDat = badDat[34:192,] #This works! uncomment it to see the proper random effects in the second model
badDat$dv <-as.numeric(badDat$dv)
badDat$cond <- as.factor(badDat$cond)
#4 levels make the first the reference
badDat$cond <- relevel(badDat$cond,ref="0");
badDat$sub <- as.factor(badDat$sub)

#Good model with expected random intercepts for subjects
model = lmer('dv~cond + (1|sub)',data=goodDat)
summary(model)
coef(model)

#Bad model with no subject random intercepts
model = lmer('dv~cond + (1|sub)',data=badDat)
summary(model)
coef(model)

在某些情况下,lmer 参数的数值估计可能会出现问题。用lmerControl改变优化算法的参数或改变优化算法可能是解决问题的好方法。

下面我尝试使用 optim 优化器使用包 nlme 中的 lme 函数估计 badDat 上的混合效应模型的参数:

library(nlme)   
model2 = lme(fixed = dv ~ cond, random = ~ 1 | sub, data=badDat,
          control=lmeControl(opt="optim"))
summary(model2b)

#####################
    Linear mixed-effects model fit by REML
 Data: badDat 
      AIC      BIC    logLik
  522.909 542.3277 -255.4545

Random effects:
 Formula: ~1 | sub
        (Intercept)  Residual
StdDev: 0.008620485 0.9036019

Fixed effects: dv ~ cond 
                  Value Std.Error  DF    t-value p-value
(Intercept)  0.19443385 0.1304296 141  1.4907183  0.1383
cond1       -0.00074922 0.1844470 141 -0.0040620  0.9968
cond2        0.15675844 0.1844470 141  0.8498835  0.3968
cond3        0.19542024 0.1844470 141  1.0594928  0.2912
 Correlation: 
      (Intr) cond1  cond2 
cond1 -0.707              
cond2 -0.707  0.500       
cond3 -0.707  0.500  0.500

Standardized Within-Group Residuals:
       Min         Q1        Med         Q3        Max 
-3.9838652 -0.6574260 -0.0112212  0.6733073  3.8501157 

Number of Observations: 192
Number of Groups: 48 

估计的随机截距非常相似,但并不像以前一样全部​​相等:

coef(model2b)

################
   (Intercept)         cond1     cond2     cond3
4    0.1943937 -0.0007492168 0.1567584 0.1954202
5    0.1942458 -0.0007492168 0.1567584 0.1954202
6    0.1944388 -0.0007492168 0.1567584 0.1954202
7    0.1943862 -0.0007492168 0.1567584 0.1954202
10   0.1945275 -0.0007492168 0.1567584 0.1954202
11   0.1943091 -0.0007492168 0.1567584 0.1954202
12   0.1943333 -0.0007492168 0.1567584 0.1954202
13   0.1941818 -0.0007492168 0.1567584 0.1954202
14   0.1942539 -0.0007492168 0.1567584 0.1954202
15   0.1947154 -0.0007492168 0.1567584 0.1954202

希望对您有所帮助。