# [R] nls() singular graident matrix error

Yang, Richard dyang at nrcan.gc.ca
Thu Jul 11 21:19:35 CEST 2002

```R-helpers;

I used Proc Model in SAS to fit the following model to data:

proc model data = dbsmv;
a = a1*F**2;
b = b1*F + b2*T + b3*F*T;
tph2 = tph1 *((1 - exp(-a*age2)) / (1 -
exp(-a*age)))**-b;
fit  tph2;

and yielded the following estimated parameters after iterations:

a1 = -0.15943, a2 = -1.8177, b1 = -0.01911, b2 = - 0.01494, b3 =
0.036427 with SEE = 4.7492 and MSE = 0.0111 (427 d.f). The model fits well
to the data.

Trying to duplicate the model in R using nls(), I took the following
steps:

Foo <- deriv( ~ tph1 * ((1 - exp(-(a1*N^a2)*age2))/ (1 -
exp(-(a1*N^a2)*age)))^(-(b1*N + b2*T +
b3*F*T)), c("a1","a2","b1","b2","b3"), function(tph1, age2, age,
T, N, a1, a2, b1, b2, b3) {})

Foo.nls <- nls(tph2 ~ Foo(tph1,N, T, a1, a2, b1, b2, b3), data =
dbsmv,
start = c(a1 = -0.15943, a2 = -1.8177, b1 = -0.01911, b2 = - 0.01494, b3
= 0.036427))

The nls() failed due to
"Error in nlsModel(formula, mf, start) : singular gradient matrix at
initial parameter estimates".

Any workaround for the singularity problem?

Richard

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```