Monte Shaffer
2010-Sep-05 15:44 UTC
[R] cov.unscaled in NLS - how to define cov.scaled to make comparable to SAS proc NLIN output - and theoretically WHY are they different
I am running a 3-parameter nonlinear fit using the default Gauss-Newton
method of nls.
initialValues.L = list(b=4,d=0.04,t=180);
fit.nls.L = nls(
myModel.nlm ,
fData.L,
start = initialValues.L,
control = nls.control(warnOnly = TRUE),
trace=T
);
summary.nls.L = summary(fit.nls.L);
I run the same analysis in SAS proc NLIN.
proc nlin data=apples outest=a;
parms b=4 d=.04 t=180;
model Y = b/(1+exp(-d*(X-t)));
output out=b p=yhat r=yresid ;
run;
proc print data=a;
run;
A summary of the outputs:
- Same coefficients (this is a good thing)
- Same standard errors of the coefficients (also good)
- Different covariance matrices (WHY?)
I convert the cov.unscaled from R's NLS to a correlation and compare it to
SAS's correlation. They are identical;
e.g., cov2cor(summary.nls.L$cov.unscaled)
I have even written a function to convert an NLS object into a
"cov.scaled"
element that is equivalent to SAS:
scaledCOV = function (nlsObject)
{
myFactor = nlsObject$cov.unscaled[1,1]/(nlsObject$coefficients[1,2]^2);
myScaled = nlsObject$cov.unscaled/myFactor;
myScaled;
}
so with this function I can determine the factor difference between R and
SAS (which is different with each data run of NLS and NLIN). This factor is
based on the same standard errors:
summary.nls.L$cov.scaled = scaledCOV(summary.nls.L$cov.unscaled);
In SAS, the covariance is based on MSE * (r'r) / (n-p) using the
Gauss-Newton method.
My question is, how is the cov.unscaled built in R's nls? Specifically, why
is it different from the SAS output? Links, theoretical explanations, etc.
are all appreciated.
I can explain how I inferred a difference to a referee of a journal
submission, but it would be helpful to also be able to understand why so I
can make a more valid argument.
Thanks in advance!
monte
{x:
[[alternative HTML version deleted]]
Reasonably Related Threads
- try (nls stops unexpectedly because of chol2inv error
- Does the R "statistical language includes, > modules/packages to carry out nonlinear optimization similar to the, > SAS NLIN and NLP procedures?
- Does the R "statistical language includes modules/packages to carry out nonlinear optimization similar to the SAS NLIN and NLP procedures?
- donlp2
- cov.unscaled in gls object
