Mit dem folgenden Datensatz wollte ich sehen, ob sich die Reaktion (Wirkung) in Bezug auf Standorte, Jahreszeit, Dauer und deren Wechselwirkungen ändert. In einigen Online-Foren zu Statistiken wurde empfohlen, mit Modellen mit linearen gemischten Effekten fortzufahren. Das Problem besteht jedoch darin, dass ich in den folgenden Jahreszeiten kaum die Chance habe, die Stichprobe an genau derselben Stelle zu sammeln (z. B. Repl-1 von S1 nach dem Monsun ist möglicherweise nicht das gleiche wie das von Monsun). Im Gegensatz zu den klinischen Studien (mit subjektinternem Design), bei denen Sie dasselbe Subjekt über die Jahreszeiten wiederholt messen. Unter Berücksichtigung der Standorte und der Jahreszeit als Zufallsfaktor habe ich jedoch die folgenden Befehle ausgeführt und eine Warnmeldung erhalten:
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
Kann mir jemand helfen, das Problem zu lösen? Die Codes sind unten angegeben:
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)
quelle
Antworten:
Das Problem zu "lösen", bei dem Sie keine Warnungen bezüglich fehlgeschlagener Konvergenz erhalten, ist recht einfach: Sie verwenden nicht den Standard- BOBYQA- Optimierer, sondern verwenden die in früheren Vorgängerversionen standardmäßig verwendete Nelder-Mead- Optimierungsroutine
1.0.x
. Oder Sie installieren das Paketoptimx
so, dass Sie direkt eine L-BFGS-B- Routine odernlminb
(wie inlme4
Versionen vor ver.1
). Beispielsweise:Alle funktionieren gut (keine Warnungen). Die interessanten Fragen sind:
REML = TRUE
, erhielten Sie keine Warnungen.Kurz gesagt, 1. Sie haben diese Warnungen erhalten, weil Sie
duration
sowohl einen festen Effekt als auch eine zufällige Steigung für den Faktorsites
als auch definiert habenseason
. Dem Modell gingen die Freiheitsgrade zur Abschätzung der Korrelationen zwischen den Steigungen und den von Ihnen definierten Abschnitten effektiv aus. Wenn Sie ein etwas einfacheres Modell verwendet haben, wie:Sie würden keine Konvergenzprobleme haben. Dieses Modell würde unkorrelierte zufällige Abschnitte und zufällige Steigungen für jeden effektiv schätzen
season
.Außerdem habenX y= Xβ+ Zγ+ ϵ K KX= 0 y Ky Z bis . Ich bin der festen Überzeugung, dass dies die Bedingungsnummer der Entwurfsmatrix und Ihnen als solche aus der numerischen Schwierigkeit heraushilft, die Sie an erster Stelle gefunden haben.KZ Z
REML = FALSE
Sie bei der Definition 2. die geschätzte maximale Wahrscheinlichkeit anstelle der eingeschränkten maximalen Wahrscheinlichkeit 1 verwendet. Bei den REML-Schätzungen wird versucht, den Einfluss der festen Effekte "herauszufiltern", bevor die optimale Varianzstruktur für zufällige Effekte ermittelt wird (siehe Thread " Was ist" eingeschränkte maximale Wahrscheinlichkeit "und wann sollte sie verwendet werden? " Für weitere Einzelheiten) Informationen zu diesem Thema). Diese Prozedur erfolgt rechnerisch im Wesentlichen durch Multiplikation beider Teile der ursprünglichen LME-Modellgleichung mit einer Matrix so dass , dh Sie ändern sowohl das ursprüngliche zu als auch dasEine letzte Bemerkung ist, dass ich nicht sicher bin, ob es Sinn macht, zunächst
season
einen zufälligen Effekt zu verwenden. Schließlich gibt es nur so viele Jahreszeiten, dass Sie sie genauso gut als feste Effekte behandeln können.quelle
REML = FALSE, glmerControl(optimizer ='optimx', optCtrl=list(method='nlminb'))
tatsächlich gelöstes Konvergenzproblem inglmer
!Die Frage ist eher statistisch als technisch. Eigentlich habe ich ein Zufallseffektmodell anstelle eines festen Effektmodells verwendet. Ich denke, keiner der Faktoren sollte als Zufallsfaktor behandelt werden, da wir mindestens 5 oder 6 Stufen oder Wiederholungen benötigen, um einen Faktor als Zufallseffekt zu behandeln (siehe hier Was ist die empfohlene Mindestanzahl von Gruppen für einen Zufallseffektfaktor? ).
Der obige Datensatz enthält nur dreifache Proben / Ort / Jahreszeit, die für ein Zufallseffektmodell nicht ausreichen. In dem Datensatz gehören die Dauer von 4 Tagen und 7 Tagen zu zwei getrennten parallelen Experimenten, die unter der gleichen Zeit durchgeführt wurden. Das Ausspucken des Datensatzes nach Dauer (4 Tage und 7 Tage) und das Durchführen einer 2-Wege-Anova für jede Dauer mit Jahreszeit und Standorten als die Faktoren wären ausreichend, um den Effekt (Antwortvariable) hier zu modellieren. Das Modell sollte folgendes sein:
Vielen Dank an Bodo Winter ( http://www.bodowinter.com/tutorial/bw_LME_tutorial2.pdf ) und @ usεr11852, die mir geholfen haben, das Problem zu lösen.
quelle