# No local minimum
head(mleOptimWrapper(minusLogLik = function(x) -sum((x - 1:4)^2),
start = rbind(10:13, 1:2), selectSolution = "lowest"))
head(mleOptimWrapper(minusLogLik = function(x) -sum((x - 1:4)^2),
start = rbind(10:13, 1:2),
selectSolution = "lowestConv"))
head(mleOptimWrapper(minusLogLik = function(x) -sum((x - 1:4)^2),
start = rbind(10:13, 1:2),
selectSolution = "lowestLocMin"))
# Local minimum
head(mleOptimWrapper(minusLogLik = function(x) sum((x - 1:4)^2),
start = rbind(10:13), optMethod = "BFGS"))
head(mleOptimWrapper(minusLogLik = function(x) sum((x - 1:4)^2),
start = rbind(10:13), optMethod = "Nelder-Mead"))
# Function with several local minimum and a 'spurious' one
f <- function(x) 0.75 * (x[1] - 1)^2 -
10 / (0.1 + 0.1 * ((x[1] - 15)^2 + (x[2] - 2)^2)) -
9.5 / (0.1 + 0.1 * ((x[1] - 15)^2 + (x[2] + 2)^2))
plotSurface2D(x = seq(0, 20, l = 100), y = seq(-3, 3, l = 100), f = f)
head(mleOptimWrapper(minusLogLik = f,
start = rbind(c(15, 2), c(15, -2), c(5, 0)),
selectSolution = "lowest"))
head(mleOptimWrapper(minusLogLik = f,
start = rbind(c(15, 2), c(15, -2), c(5, 0)),
selectSolution = "lowestConv"))
head(mleOptimWrapper(minusLogLik = f,
start = rbind(c(15, 2), c(15, -2), c(5, 0)),
selectSolution = "lowestLocMin", eigTol = 0.01))
# With constraint region
head(mleOptimWrapper(minusLogLik = function(x) sum((x - 1:2)^2),
start = rbind(10:11),
region = function(pars) {
x <- pars[1]
y <- pars[2]
if (y <= x^2) {
return(list("pars" = pars, "penalty" = 0))
} else {
return(list("pars" = c(sqrt(y), y),
"penalty" = y - x^2))
}
}, lower = c(0.5, 1), upper = c(Inf, Inf),
optMethod = "Nelder-Mead", selectSolution = "lowest"))
head(mleOptimWrapper(minusLogLik = function(x) sum((x - 1:2)^2),
start = rbind(10:11), lower = c(0.5, 1),
upper = c(Inf, Inf),optMethod = "Nelder-Mead"))
Run the code above in your browser using DataLab