Avec l'ensemble de données suivant, je voulais voir si la réponse (effet) change en ce qui concerne les sites, la saison, la durée et leurs interactions. Certains forums en ligne sur les statistiques m'ont suggéré de continuer avec les modèles à effets mixtes linéaires, mais le problème est que, puisque les répliques sont aléatoires au sein de chaque station, j'ai peu de chance de collecter l'échantillon exactement au même endroit au cours des saisons successives (par exemple, repl-1 de s1 de l'après-mousson peut ne pas être le même que celui de la mousson). C'est différent des essais cliniques (avec une conception intra-sujet) où vous mesurez le même sujet à plusieurs reprises au fil des saisons. Cependant, considérant les sites et la saison comme un facteur aléatoire, j'ai exécuté les commandes suivantes et reçu un message d'avertissement:
Warning messages:
1: In checkConv(attr(opt, "derivs"), optpar,ctrl=controlpar,ctrl=controlcheckConv,
: unable to evaluate scaled gradient
2: In checkConv(attr(opt, "derivs"), optpar,ctrl=controlpar,ctrl=controlcheckConv,
: Model failed to converge: degenerate Hessian with 1 negative eigenvalues
Quelqu'un peut-il m'aider à résoudre le problème? Les codes sont donnés ci-dessous:
library(lme4)
read.table(textConnection("duration season sites effect
4d mon s1 7305.91
4d mon s2 856.297
4d mon s3 649.93
4d mon s1 10121.62
4d mon s2 5137.85
4d mon s3 3059.89
4d mon s1 5384.3
4d mon s2 5014.66
4d mon s3 3378.15
4d post s1 6475.53
4d post s2 2923.15
4d post s3 554.05
4d post s1 7590.8
4d post s2 3888.01
4d post s3 600.07
4d post s1 6717.63
4d post s2 1542.93
4d post s3 1001.4
4d pre s1 9290.84
4d pre s2 2199.05
4d pre s3 1149.99
4d pre s1 5864.29
4d pre s2 4847.92
4d pre s3 4172.71
4d pre s1 8419.88
4d pre s2 685.18
4d pre s3 4133.15
7d mon s1 11129.86
7d mon s2 1492.36
7d mon s3 1375
7d mon s1 10927.16
7d mon s2 8131.14
7d mon s3 9610.08
7d mon s1 13732.55
7d mon s2 13314.01
7d mon s3 4075.65
7d post s1 11770.79
7d post s2 4254.88
7d post s3 753.2
7d post s1 11324.95
7d post s2 5133.76
7d post s3 2156.2
7d post s1 12103.76
7d post s2 3143.72
7d post s3 2603.23
7d pre s1 13928.88
7d pre s2 3208.28
7d pre s3 8015.04
7d pre s1 11851.47
7d pre s2 6815.31
7d pre s3 8478.77
7d pre s1 13600.48
7d pre s2 1219.46
7d pre s3 6987.5
"),header=T)->dat1
m1 = lmer(effect ~ duration + (1+duration|sites) +(1+duration|season),
data=dat1, REML=FALSE)
la source
Réponses:
"Résoudre" le problème que vous rencontrez dans le sens de ne pas recevoir d'avertissements sur l'échec de la convergence est plutôt simple: vous n'utilisez pas l' optimiseur BOBYQA par défaut, mais vous choisissez plutôt d'utiliser la routine d'optimisation Nelder-Mead utilisée par défaut dans
1.0.x
les versions précédentes. Ou vous installez le packageoptimx
afin que vous puissiez directement une routine L-BFGS-B ounlminb
(identique auxlme4
versions antérieures à la version1
). Par exemple:tout fonctionne bien (pas d'avertissement). Les questions intéressantes sont:
REML = TRUE
vous n'avez reçu aucun avertissement.Succinctement, 1. vous avez reçu ces avertissements parce que vous avez défini à la
duration
fois comme un effet fixe ainsi que la pente aléatoire pour le facteursites
, ainsi queseason
. Le modèle a effectivement manqué de degrés de liberté pour estimer les corrélations entre les pentes et les intersections que vous avez définies. Si vous avez utilisé un modèle légèrement plus simple comme:vous ne rencontriez aucun problème de convergence. Ce modèle estimerait efficacement les interceptions aléatoires non corrélées et les pentes aléatoires pour chacune
season
.En outre, 2. lorsque vous avez défini, X K K X = 0 y K y Z K Z Zy= Xβ+ Zγ+ ϵ K KX= 0 y Ky Z à . Je soupçonne fortement que cela a affecté le numéro de condition de la matrice de conception et, en tant que tel, vous aide à sortir de l'endroit difficile numérique que vous vous êtes trouvé en premier lieu.KZ Z
REML = FALSE
vous avez utilisé la probabilité maximale estimée au lieu de la probabilité maximale restreinte. Les estimations REML tentent de «factoriser» l'influence des effets fixes avant de rechercher la structure optimale de variance à effet aléatoire (voir le fil « Qu'est-ce que la« probabilité maximale restreinte »et quand doit-elle être utilisée? » Pour plus de détails). informations en la matière). Calculée, cette procédure se fait essentiellement en multipliant les deux parties de l'équation du modèle LME d'origine par une matrice telle que , c'est-à-dire que vous modifiez à la fois le origine en ainsi que leUne dernière note est que je ne sais pas s'il est judicieux d'utiliser
season
comme un effet aléatoire pour commencer. Après tout, il n'y a que peu de saisons, vous pouvez donc les traiter comme des effets fixes.la source
REML = FALSE, glmerControl(optimizer ='optimx', optCtrl=list(method='nlminb'))
- a en fait résolu le problème de convergence englmer
!La question est statistique plutôt que technique. En fait, j'ai utilisé un modèle à effet aléatoire au lieu d'un modèle à effet fixe.Aucun des facteurs, je pense, ne devrait être traité comme le facteur aléatoire car nous avons besoin d'au moins 5 ou 6 niveaux ou répétitions pour traiter un facteur comme un effet aléatoire (voir ici Quel est le nombre minimum recommandé de groupes pour un facteur d'effets aléatoires? ).
L'ensemble de données ci-dessus ne contient que trois échantillons / site / saison, ce qui est insuffisant pour un modèle à effet aléatoire.Dans l'ensemble de données, la durée, 4 jours et 7 jours, appartient à deux expériences parallèles distinctes exécutées en même temps. Donc, cracher l'ensemble de données par durée (4 jours et 7 jours) et effectuer une anova bidirectionnelle pour chaque durée avec saison et sites car les facteurs seraient suffisants pour modéliser l'effet (variable de réponse) ici. Le modèle doit être le suivant:
Merci à Bodo Winter ( http://www.bodowinter.com/tutorial/bw_LME_tutorial2.pdf ) et @ usεr11852 qui m'ont aidé à résoudre le problème.
la source