混合効果モデルを使って解析していたら以下のようなエラーが出ました。
” boundary (singular) fit: see ?isSingular”
これがどういったものなのかを調べてみると、混合効果モデルは適合しているが、変量効果が小さすぎる場合(モデルが過剰に適合しすぎている場合)に出るようです¹。
> (model1 <- lmer(BMI ~ wc + season + (season | ID), data))
boundary (singular) fit: see ?isSingular #これは何???
Linear mixed model fit by REML ['lmerMod']
Formula: BMI ~ wc + season + (season | ID)
Data: data
REML criterion at convergence: 824.2405
Random effects:
Groups Name Std.Dev. Corr
ID (Intercept) 9.65973
season 0.09127 1.00
Residual 0.85796
Number of obs: 200, groups: ID, 50
Fixed Effects:
(Intercept) wc season
28.62170 0.01136 0.17256
optimizer (nloptwrap) convergence code: 0 (OK) ; 0 optimizer warnings; 1 lme4 warnings
季節ごとの変動を、箱ひげ図で確認してみました。
data$season = factor(data$season) #seasonは因子型に変更
ggplot(data,aes(x=ID,y=BMI,col=season)) + geom_jitter() + geom_boxplot(alpha=0.2) + facet_wrap(~season) #箱ひげ図の作成
確かに、どの季節もBMIは同じような分布をしています。
混合効果モデルでは、変量効果を加えることによって測定時期(今回の場合、季節)による変動を考慮するので、そもそも測定時期による変動がないなら変量効果をわざわざいれなくてもいいよ、ということなのかな。

まだよくわからないので、エラーコメント「 see ?isSingular” ( ?isSingular を見よ) 」に従ってヘルプ検索してみました。
?isSingular
isSingular 関数を使うと、その混合モデルが「特異(singular)」であるかどうかが分かるようです。
> isSingular(model1, tol = 1e-4)
[1] TRUE
切片だけが変動するモデルに変えてみたら、エラーは出なくなりました。
> (model3 <- lmer(BMI ~ wc + season + (1|season)+(1|ID), data))
Linear mixed model fit by REML ['lmerMod']
Formula: BMI ~ wc + season + (1 | season) + (1 | ID)
Data: data
REML criterion at convergence: 828.5328
Random effects:
Groups Name Std.Dev.
ID (Intercept) 9.84906
season (Intercept) 0.04376
Residual 0.87248
Number of obs: 200, groups: ID, 50; season, 4
Fixed Effects:
(Intercept) wc season2 season3 season4
28.21699 0.01692 0.21898 0.38508 0.52172
もうすこし調べてみようと思います。
メモ
分散分析の特異点:データの傾向が変化するポイント、特異点=分散がほぼゼロ?
参考
1 https://stackoverflow.com/questions/60028673/lme4-error-boundary-singular-fit-see-issingular
boundary (singular) fit: see ?is Singularって出て困っていたので助かりました!!
それはよかったです!ありがとうございます。