[R] an incredibly trivial question about nls

Rolf Turner r.turner at auckland.ac.nz
Tue Jul 1 23:29:55 CEST 2014



In direct contrast to what Bert says, I think this is a very reasonable 
(and non-trivial) question.

The problem results from Gurus structuring the functions that they write 
in such a way that they are totally opaque to anyone but the 
ultra-cognoscenti.  What is gained by not having things set up in a 
straightforward manner that is accessible to normal human beings is 
mysterious to me.

If you do look at stats:::print.nls (and you have to start with that 
"stats:::"; things just *have* to be hidden away so that normal human 
beings can't see them!) you are likely to be no more enlightened than 
you were previously, until you engage in a good long struggle.

It turns out that what happens is that, in order to print the residual 
sum of squares, print.nls() calls the function x$m$deviance (where "x" 
is the object returned by nls()).  This function simply returns the 
object "dev" which is stored in its environment.  Could one get more 
convoluted and obscure if one tried?

So, to get the residual sum of squares you could do:

	rss <- x$m$deviance()
or
	rss <- get("dev",envir=environment(x$m$deviance))

The actual residuals are hidden away as "resid" in the environment of 
the function x$m$resid, so you could also get the residual sum of 
squares via:

	rss <- sum(get("resid",envir=environment(x$m$resid))^2)
or
	rss <- sum(x$m$resid()^2)
or
	rss <- sum(resid(x)^2)

the last of which applies the (hidden) nls method for the residuals() 
function.  Happily, they all seem to give the same answer. :-)

On 02/07/14 08:40, Bert Gunter wrote:
> 1. Why? What do you think it tells you?

	That's *her* business.

(The number of parameters in a
> NONlinear model is probably not what you think it is).
>
> 2. ?deviance

	Not at all useful.
>
> 3. You've been posting all this time and still didn't try
> stats:::print.nls  ?? -- which is where you would find the answer.

	Chastising people for failing to see the invisible is not
	helpful.  And even when they manage to see the invisible, the
	result is still very obscure.

cheers,

Rolf

>
> Cheers,
> Bert
>
>
>
> Bert Gunter
> Genentech Nonclinical Biostatistics
> (650) 467-7374
>
> "Data is not information. Information is not knowledge. And knowledge
> is certainly not wisdom."
> Clifford Stoll
>
>
>
>
> On Tue, Jul 1, 2014 at 1:27 PM, Erin Hodgess <erinm.hodgess at gmail.com> wrote:
>> Hello R People:
>>
>> I'm having a forest/trees location problem with the output of nls.
>>
>> If I save the output to an object, and print the object, it shows, amongst
>> other things, the residual sum of squares.  I would like to get that.
>>
>> However, when I look at names or str of the object, I can't find the
>> residual sum of squares.
>>
>> Any help would be much appreciated.
>> thanks,
>> Erin



More information about the R-help mailing list