On Fri, 22 Mar 2019 12:29:14 +0000
akshay kulkarni <akshay...@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

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to