Examples of Maximum Likelihood Estimators in page 419
Lifetimes of Electronic Components
data <- c(3, 1.5, 2.1)
# Let's define likelihood function of exponential distribution
lklh.exp<- function(x, theta) theta*exp(-theta*x)
log.lklh.exp <- function(x, theta) {
-sum(log(theta)-theta*x)
}
By default optim searches for parameters, which minimise the function fn.
In order to find a maximium, all I have to do is change the sign of the function, hence -sum(…).
result <- optim(par = 0.5, log.lklh.exp, x = data)
one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly
According to the warning message, I shoud use another optimisation algorithm, as I have a one dimensional problem - a single parameter. Thus, I follow the advise and get:
result <- optim(par = 2, log.lklh.exp, x = x, method = "Brent", lower = 0, upper = 3)
theta <- result$par
theta
[1] 0.4545455
It’s actually the same result.
Let’s compare the result to fitdistr, which uses maximum liklihood as well.
library(MASS)
fitdistr(data, "Exponential")
rate
0.4545455
(0.2624319)
Let’s plot it
curve(theta*exp(-theta*x), from=0, to=15)

LS0tCnRpdGxlOiAiTUxFIGZvciBMaWZldGltZXMgb2YgRWxlY3Ryb25pYyBDb21wbmVudHMiCmF1dGhvcjogIkh5dW5Xb28iCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQojIyMjIEV4YW1wbGVzIG9mIE1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0b3JzIGluIHBhZ2UgNDE5CiMjIyMgTGlmZXRpbWVzIG9mIEVsZWN0cm9uaWMgQ29tcG9uZW50cwoKYGBge3J9CmRhdGEgPC0gYygzLCAxLjUsIDIuMSkKYGBgCgpgYGB7cn0KIyBMZXQncyBkZWZpbmUgbGlrZWxpaG9vZCBmdW5jdGlvbiBvZiBleHBvbmVudGlhbCBkaXN0cmlidXRpb24KbGtsaC5leHA8LSBmdW5jdGlvbih4LCB0aGV0YSkgdGhldGEqZXhwKC10aGV0YSp4KQpsb2cubGtsaC5leHAgPC0gZnVuY3Rpb24oeCwgdGhldGEpIHsKICAgICAgICAgICAgLXN1bShsb2codGhldGEpLXRoZXRhKngpCiAgICAgICAgICAgIH0KYGBgCgojIyMjIEJ5IGRlZmF1bHQgb3B0aW0gc2VhcmNoZXMgZm9yIHBhcmFtZXRlcnMsIHdoaWNoIG1pbmltaXNlIHRoZSBmdW5jdGlvbiBmbi4KIyMjIyBJbiBvcmRlciB0byBmaW5kIGEgbWF4aW1pdW0sIGFsbCBJIGhhdmUgdG8gZG8gaXMgY2hhbmdlIHRoZSBzaWduIG9mIHRoZSBmdW5jdGlvbiwgaGVuY2UgLXN1bSguLi4pLgoKYGBge3J9CnJlc3VsdCA8LSBvcHRpbShwYXIgPSAwLjUsIGxvZy5sa2xoLmV4cCwgeCA9IGRhdGEpCmBgYApBY2NvcmRpbmcgdG8gdGhlIHdhcm5pbmcgbWVzc2FnZSwgSSBzaG91ZCB1c2UgYW5vdGhlciBvcHRpbWlzYXRpb24gYWxnb3JpdGhtLAphcyBJIGhhdmUgYSBvbmUgZGltZW5zaW9uYWwgcHJvYmxlbSAtIGEgc2luZ2xlIHBhcmFtZXRlci4gClRodXMsIEkgZm9sbG93IHRoZSBhZHZpc2UgYW5kIGdldDoKYGBge3J9CnJlc3VsdCA8LSBvcHRpbShwYXIgPSAyLCBsb2cubGtsaC5leHAsIHggPSB4LCBtZXRob2QgPSAiQnJlbnQiLCBsb3dlciA9IDAsIHVwcGVyID0gMykKdGhldGEgPC0gcmVzdWx0JHBhcgp0aGV0YQpgYGAKIyMjI0l0oa9zIGFjdHVhbGx5IHRoZSBzYW1lIHJlc3VsdC4gCiMjIyNMZXShr3MgY29tcGFyZSB0aGUgcmVzdWx0IHRvIGZpdGRpc3RyLCB3aGljaCB1c2VzIG1heGltdW0gbGlrbGlob29kIGFzIHdlbGwuCmBgYHtyfQpsaWJyYXJ5KE1BU1MpCmZpdGRpc3RyKGRhdGEsICJFeHBvbmVudGlhbCIpCmBgYAojIyMjIExldCdzIHBsb3QgaXQKYGBge3J9CmN1cnZlKHRoZXRhKmV4cCgtdGhldGEqeCksIGZyb209MCwgdG89MTUpCmBgYAoKCg==