[R] Optim() and Instability
Lorenzo Isella
lorenzo.isella at gmail.com
Sat Nov 14 16:15:18 CET 2015
Dear All,
I am using optim() for a relatively simple task: a linear model where
instead of minimizing the sum of the squared errors, I minimize the sum
of the squared relative errors.
However, I notice that the default algorithm is very sensitive to the
choice of the initial fit parameters, whereas I get much more stable
(and therefore better?) results with the BFGS algorithm.
I would like to have some feedback on this (perhaps I made a mistake
somewhere).
I provide a small self-contained example.
You can download a tiny data set from the link
https://www.dropbox.com/s/tmbj3os4ev3d4y8/data-instability.csv?dl=0
whereas I paste the script I am using at the end of the email.
Any feedback is really appreciated.
Many thanks
Lorenzo
################################################################
min.perc_error <- function(data, par) {
with(data, sum(((par[1]*x1 + par[2]*x2+par[3]*x3 -
y)/y)^2))
}
par_ini1 <- c(.3,.1, 1e-3)
par_ini2 <- c(1,1, 1)
data <- read.csv("data-instability.csv")
mm_def1 <-optim(par = par_ini1
, min.perc_error, data = data)
mm_bfgs1 <-optim(par = par_ini1
, min.perc_error, data = data, method="BFGS")
print("fit parameters with the default algorithms and the first seed
")
print(mm_def1$par)
print("fit parameters with the BFGS algorithms and the first seed ")
print(mm_bfgs1$par)
mm_def2 <-optim(par = par_ini2
, min.perc_error, data = data)
mm_bfgs2 <-optim(par = par_ini2
, min.perc_error, data = data, method="BFGS")
print("fit parameters with the default algorithms and the second seed
")
print(mm_def2$par)
print("fit parameters with the BFGS algorithms and the second seed ")
print(mm_bfgs2$par)
More information about the R-help
mailing list