Почему эта простая смешанная модель не сходится? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующие данные, по которым я хотел бы сравнить среднее значение переменной value между 28 и 83 днями:

library(lme4)
#> Loading required package: Matrix
library(lmerTest)
#> 
#> Attaching package: 'lmerTest'
#> The following object is masked from 'package:lme4':
#> 
#>     lmer
#> The following object is masked from 'package:stats':
#> 
#>     step

df <- structure(list(experience_sep = c(
  "DM", "DA", "DM", "DA", "DM",
  "DA"
), day = c(55, 110, 55, 110, 55, 110), day_factor = c(
  55,
  110, 55, 110, 55, 110
), day_julian = c(
  55, 110, 55, 110, 55,
  110
), day_true = c(28, 83, 28, 83, 28, 83), culture = c(
  1L, 1L,
  2L, 2L, 3L, 3L
), value = c(
  758453.333333333, 575133.333333333,
  684160, 656933.333333333, 816840, 734700
)), row.names = c(
  NA,
  -6L
), class = c("data.frame"))


df  
#>   experience_sep day day_factor day_julian day_true culture    value
#> 1             DM  55         55         55       28       1 758453.3
#> 2             DA 110        110        110       83       1 575133.3
#> 3             DM  55         55         55       28       2 684160.0
#> 4             DA 110        110        110       83       2 656933.3
#> 5             DM  55         55         55       28       3 816840.0
#> 6             DA 110        110        110       83       3 734700.0

Поскольку опыт связан с псевдорепликацией (culture), Я думал использовать смешанную модель следующим образом:

lmerTest::lmer(value ~ factor(day_true) + (1|culture), data = df)
#> Warning in as_lmerModLT(model, devfun): Model may not have converged with 1
#> eigenvalue close to zero: 2.6e-09
#> Linear mixed model fit by REML ['lmerModLmerTest']
#> Formula: value ~ factor(day_true) + (1 | culture)
#>    Data: df
#> REML criterion at convergence: 102.7974
#> Random effects:
#>  Groups   Name        Std.Dev.
#>  culture  (Intercept) 47535   
#>  Residual             55990   
#> Number of obs: 6, groups:  culture, 3
#> Fixed Effects:
#>        (Intercept)  factor(day_true)83  
#>             753151              -97562

Однако я получаю эту ошибку, из-за которой не могу найти проблему.Это потому, что у меня очень мало очков (n = 3 на группу)?

Создано в 2019-02-05 пакетом Представить (v0.2.1)

1 Ответ

0 голосов
/ 26 февраля 2019

Я знаю, что немного опоздал на эту вечеринку, но я запустил эту модель после стандартизации переменной ответа (значения), и она прекрасно работает.Если в ваших моделях есть переменные, которые на несколько порядков больше, чем другие переменные, это может вызвать численные проблемы.Вот код

df$value.st<-(df$value-mean(df$value))/(sd(df$value))

mod<-lmer(value.st ~ factor(day_true) + (1|culture), data=df)

mod
Linear mixed model fit by REML ['lmerMod']
Formula: value.st ~ factor(day_true) + (1 | culture)
   Data: df
REML criterion at convergence: 12.0241
Random effects:
 Groups   Name        Std.Dev.
 culture  (Intercept) 0.5613  
 Residual             0.6612  
Number of obs: 6, groups:  culture, 3
Fixed Effects:
       (Intercept)  factor(day_true)83  
            0.5761             -1.1521 

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...