[R] problem with nls....

Ivan Krylov kry|ov@r00t @end|ng |rom gm@||@com
Sat Mar 23 16:54:14 CET 2019


On Fri, 22 Mar 2019 12:29:14 +0000
akshay kulkarni <akshay_e4 using hotmail.com> wrote:

> How do I get the gradient, Hessian, and the jacobian of the
> objective function created by call to the nls?

nls() return value is a list containing an entry named `m`, which is an
object of type "nlsModel". It doesn't seem to be documented in modern
versions of R[*], so what I am describing might be an implementation
detail subject to change. Still, model$m$gradient() should return the
jacobian; Hessian is usually estimated as crossprod() of jacobian; and
the gradient of the objective function is computed as
-2*colSums(model$m$resid() * model$m$gradient()).

> Also, I've checked the residuals...they are approximately normally
> distributed....I am still wondering why the nls call is not getting
> converged....!

The more important question is, how does the objective function (sum of
squared residuals) depend on the parameter `m` you are trying to find?
Try computing it for various values of `m` and looking at the result:

plot(
	Vectorize(
		function(m) {
			model$m$setPars(m);
			model$m$deviance()
		}
	),
	from = ..., to = ... # fill as needed
)

-- 
Best regards,
Ivan

[*] But used to be:
http://unixlab.stat.ubc.ca/R/library/stats/html/nlsModel.html



More information about the R-help mailing list