library(datasets)
library(nlme)
n1 <- nlme(circumference ~ phi1 / (1 + exp(-(age - phi2)/phi3)),
data = Orange,
fixed = list(phi1 ~ 1,
phi2 ~ 1,
phi3 ~ 1),
random = list(Tree = pdDiag(phi1 ~ 1)),
start = list(fixed = c(phi1 = 192.6873, phi2 = 728.7547, phi3 = 353.5323)))
Ich passe ein nichtlineares Mischeffektmodell mit nlme
R an und hier ist meine Ausgabe.
> summary(n1)
Nonlinear mixed-effects model fit by maximum likelihood
Model: circumference ~ phi1/(1 + exp(-(age - phi2)/phi3))
Data: Orange
AIC BIC logLik
273.1691 280.9459 -131.5846
Random effects:
Formula: phi1 ~ 1 | Tree
phi1 Residual
StdDev: 31.48255 7.846255
Fixed effects: list(phi1 ~ 1, phi2 ~ 1, phi3 ~ 1)
Value Std.Error DF t-value p-value
phi1 191.0499 16.15411 28 11.82671 0
phi2 722.5590 35.15195 28 20.55530 0
phi3 344.1681 27.14801 28 12.67747 0
Correlation:
phi1 phi2
phi2 0.375
phi3 0.354 0.755
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.9146426 -0.5352753 0.1436291 0.7308603 1.6614518
Number of Observations: 35
Number of Groups: 5
Ich passe das gleiche Modell in SAS an und erhalte die folgenden Ergebnisse.
Kann mir jemand helfen zu verstehen, warum ich etwas andere Schätzungen bekomme? Ich weiß, dass das nlme
die Implementierung von Lindstrom & Bates (1990) verwendet. Laut SAS-Dokumentation basiert die integrale Approximation von SAS auf Pinhiero & Bates (1995). Ich habe versucht, die Optimierungsmethode auf Nelder-Mead zu ändern nlme
, aber die Ergebnisse sind immer noch unterschiedlich.
Ich hatte andere Fälle, in denen der Standardfehler und die Parameterschätzung in R vs. SAS sehr unterschiedlich sind (ich habe kein reproduzierbares Beispiel dafür, aber jede Einsicht wäre willkommen). Ich vermute, das hat damit zu tun, wie nlme
und wie nlmixed
die Standardfehler bei zufälligen Effekten geschätzt werden?
quelle
Orange
Datensatz enthält 35 Beobachtungen.Antworten:
FWIW, ich könnte die sas-Ausgabe mit einer manuellen Optimierung reproduzieren
Ausgabe
Die nlmixed-Ausgabe liegt also nahe an diesem Optimum und ist keine andere Konvergenzsache.
Die nlme-Ausgabe liegt ebenfalls nahe am (unterschiedlichen) Optimum. (Sie können dies überprüfen, indem Sie die Optimierungsparameter im Funktionsaufruf ändern.)
quelle
Ich hatte mich mit demselben Problem befasst und stimme Martjin zu, dass Sie die Konvergenzkriterien in R anpassen müssen, damit es mit SAS übereinstimmt. Insbesondere können Sie diese Kombination von Argumentspezifikationen (im lCtr-Objekt) ausprobieren, die in meinem Fall ziemlich gut funktioniert hat.
Faire Warnung: Dies sollte Ihnen die gleichen festen Schätzungen zwischen SAS und R bringen. Allerdings würden Sie wahrscheinlich nicht die gleiche SE der festen Effekte erhalten (für die ich noch nach Antworten suche ..).
quelle