Ich habe ein Problem mit der Verwendung von Optimx mit dem bbmle-Paket. Das Modell läuft auf meinem PC, liefert aber auf einem Linux-Computer keine brauchbaren Ergebnisse. Beide führen denselben Code aus, auf R-Version 4.1.3 und Optimx-Paketversion 2021.10.12 und bbmle-Paketversion 1.0.24. Ich kann die NLL-Funktion auf beiden Computern ausführen und glaube nicht, dass es ein Problem mit der Funktion selbst ist. Ich habe daher keinen reproduzierbaren Code eingefügt, da das NLL fxn auf meiner Maschine funktioniert, außerdem ist das NLL kein einfaches Modell und die Daten sind eine große Liste. Unten ist mein Code für die mle-Läufe:
require(bbmle)
require(optimx)
MLE.test <- mle2(minuslogl = nll,
start = log_start, #list of starting values for NLL arguments
fixed = list(cv_q = 0.5), # one argument from NLL that is fixed
data = list(dat = dat1, #list of data for NLL
scale = 1), # argument value set to a scale of 1
optimizer = "optimx",
method = "bobyqa",
lower = low, #vector of lower bounds
upper = upp, #vector of upper bounds
control=list(maxit=2000, trace=5), skip.hessian = TRUE)
Die Ergebnisse auf meinem Mac sehen so aus
coef(MLE.test)
hypox_a hypox_b fi cv_q sigma_p rec1 rec2 rec3 rec4
3.4512339 1.7724387 -1.5397089 0.5000000 -1.9490732 1.3548618 -0.1552055 1.3323955 1.1739773
Log-likelihood: -9496.14
Die Ergebnisse auf dem Linux-Rechner sehen so aus
coef(MLE.test)
hypox_a hypox_b fi cv_q sigma_p rec1 rec2 rec3 rec4
NA NA NA 0.5 NA NA NA NA NA
Log-likelihood: -8.988466e+307
Ich habe das MLE-Modell mit dem Ansatz „all.methods = T" ausgeführt, um festzustellen, ob es sich um einen Fehler beim Laden des Optimx-Pakets auf dem Linux-Computer handelt, und das Modell wurde ausgeführt, bis es die Methode „bobyqa" erreichte, wo es endete. Das Trace-Argument gibt dies beim Start des Modelllaufs mit der Methode "bobyqa" zurück
$have.bounds
[1] TRUE
$method
[1] "bobyqa"
Method: bobyqa
bobyqa failed for current problem
Post processing for method bobyqa
Save results from method bobyqa
$fevals
[1] NA
$value
[1] 8.988466e+307
$par
[1] NA NA NA NA NA NA NA NA
Ich habe dann eine Textdatei im NLL fxn eingerichtet, um Parameter zu drucken, während sie getestet werden, und das ist es, was die Linux-Maschine als Updates zurückgibt. Es pendelt sich schließlich auf der letzten Zeile mit allen NAs und einem NLL von 0 ein.
Start time: 2022-04-12 10:13:07
// hypox_a= 4 / hypox_b= 1 / fi= -0.22314355131421 / sigma= -2.30258509299405 / NLL= 15171.9421911981
Start time: 2022-04-12 10:13:07
// hypox_a= NA / hypox_b= NA / fi= NA / sigma= NA / NLL= 0
Start time: 2022-04-12 10:13:07
// hypox_a= NA / hypox_b= NA / fi= NA / sigma= NA NLL= 0
Hat jemand Vorschläge, wo dies schief gelaufen sein könnte oder ob es Kompatibilitätsprobleme mit Linux-Computern gibt?
Lösung des Problems
installierte das 'minqa'-Paket, das das Problem der NAs anstelle der Parameter löste und mit MLE2 brauchbare Ergebnisse lieferte.
install.packages("minqa")
require(minqa)
Keine Kommentare:
Kommentar veröffentlichen