By default, optim
will minimize, but you want to maximize LL
. Also, you want to use a method like L-BFGS-B, which uses bound information:
optim(c(1, 1), function(x) -LL(x[1], x[2], n=n, t=t), method="L-BFGS-B",
lower=c(0.0001, 0.0001))
# $par
# [1] 0.0001 9679.3562
#
# $value
# [1] 17075.64
#
# $counts
# function gradient
# 87 87
#
# $convergence
# [1] 0
#
# $message
# [1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"
We can verify we've improved the log-likelihood:
LL(1, 1, n=n, t=t)
# [1] -27659.45
LL(0.0001, 9679.3562, n=n, t=t)
# [1] -17075.64