lme4未能在没有警告的情况下计算随机截距

时间:2017-05-16 23:10:47

标签: r statistics lme4 mixed-models

有一个奇怪的问题,给定2个数据集具有相同的精确格式,2个模型以完全相同的方式指定不产生相同的随机效果结构。数据的设计使得每个有48个独特的主题,每个主题在4个条件下具有单个观察。结果变量是'dv'列,预测变量是'cond'列,分组变量是'sub'列。

第一个模型按预期运行,主题级随机截距,使用coef(模型)检查,而另一个假设所有主体的固定截距。尽管事实上两个模型的指定相同。没有收敛,或方差问题警告和主题实际上有不同的手段(所有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)

1 个答案:

答案 0 :(得分:0)

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

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

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

我希望这可以帮到你。