[R] NextMethod in boxcox

Bert Gunter gunter.berton at gene.com
Sat Feb 15 02:38:42 CET 2014


However, note that I DID get it WRONG:

The method invoked by the NextMethod() call in the boxcox.formula
method is boxcox.default, NOT boxcox.lm.

Cheers,
Bert



Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Fri, Feb 14, 2014 at 5:07 PM, Bert Gunter <bgunter at gene.com> wrote:
> Inline.
>
> Bert Gunter
> Genentech Nonclinical Biostatistics
> (650) 467-7374
>
> "Data is not information. Information is not knowledge. And knowledge
> is certainly not wisdom."
> H. Gilbert Welch
>
>
>
>
> On Fri, Feb 14, 2014 at 4:19 PM, Gene Leynes <gleynes+r at gmail.com> wrote:
>> In searching for NextMethod on http://www.rseek.org/ I found some helpful
>> tutorials on S3 and S4 methods.
>>
>> Between your answer and the tutorials, I think I'm starting to understand.
>> The NextMethod is just a dispatcher type of thing that doesn't do anything
>> directly.
>>
>> I think you're saying that when lm is called on a boxcox object then this
>> part of the code handles it (maybe I have it backwards though).  So, can you
>> tell from this what the "next method" would be?  I tried doing
>> "debug(boxcox.default)" but there is no boxcox.default.
>
> Study the tutorials. You still don't appear to get it.
>
> Of course there is a boxcox.default. ?methods
> methods(boxcox)
>
> It is not exported from MASS so must be accessed via ":::"
> ?"::"
>
> -- Bert
>
>>
>> Did you mistakenly say "boxplot" instead of "boxcox" when referring to the
>> default method that does the "heavy lifting"?
>
> Yes. Thanks.
>>
>> I just want to see the code that calculates the log likelihood values of y
>> in boxcox.
>>
>> Thank you
>>
>>
>> On Fri, Feb 14, 2014 at 4:33 PM, Bert Gunter <gunter.berton at gene.com> wrote:
>>>
>>> Well, since this is really a question about understanding how S3
>>> methods work, and this is not the place for a tutorial, I think what
>>> you need to do is search out a tutorial that you understand.
>>>
>>> But very briefly, it does what it says. The "object" argument is
>>> supplied to the boxcox generic; lm() takes this (presumably a formula)
>>> as an argument and replaces the object argument with the fit, which is
>>> of "lm" class . NextMethod() then would call the next method,
>>> boxcox.lm on "object" . boxcox.lm does something similar, calling
>>> boxplot.default on the (possibly fixed up) fit, as that is the "next"
>>> method after boxplot.lm on "object."  boxplot.default is where all the
>>> work is done.
>>>
>>> *** If this is wrong in any way, I would appreciate being corrected.***
>>>
>>> Others may have useful tutorials that provide greater detail.
>>>
>>> Cheers,
>>> Bert
>>>
>>> Bert Gunter
>>> Genentech Nonclinical Biostatistics
>>> (650) 467-7374
>>>
>>> "Data is not information. Information is not knowledge. And knowledge
>>> is certainly not wisdom."
>>> H. Gilbert Welch
>>>
>>>
>>>
>>>
>>> On Fri, Feb 14, 2014 at 2:00 PM, Gene Leynes <gleynes+r at gmail.com> wrote:
>>> > Yes I read the help on NextMethod.  In fact, since people frequently
>>> > respond
>>> > with "did you read the help" I mentioned that I had read the help in my
>>> > original post.  I'm very grateful for the time and effort that people
>>> > put
>>> > into answering questions, so I always try to answer the question myself
>>> > first usually for more than one day.
>>> >
>>> > I didn't find anything in ?NextMethod that helped me understand how
>>> > NextMethod works here:
>>> >>>     m <- length(lambda)
>>> >>>     object <- lm(object, y = TRUE, qr = TRUE, ...)
>>> >>>     result <- NextMethod()
>>> >
>>> > This part seemed like the the most likely part:
>>> >>
>>> >> NextMethod invokes the next method (determined by the class vector,
>>> >> either
>>> >> of the object supplied to the generic, or of the first argument to the
>>> >> function containing NextMethod if a method was invoked directly).
>>> >> NormallyNextMethod is used with only one argument, generic, but if
>>> >> further
>>> >> arguments are supplied these modify the call to the next method.
>>> >
>>> >
>>> > But, since NextMethod is called with no arguments, what "class vector"
>>> > determines the "next method"?  If this is invoking the "next" method,
>>> > then
>>> > was the "previous" method?  How can it be called with no arguments?
>>> >
>>> > Maybe my problem is that I don't understand the S3 and S4 classes and I
>>> > should really read something else, because this help doesn't seem to
>>> > stand
>>> > on it's own. I've been using R for a long time and this help left me
>>> > scratching my head.
>>> >
>>> > I don't actually care about NextMethod, I was just trying to figure out
>>> > how
>>> > the boxcox function is calculating the y part of the return values.
>>> > Since I
>>> > couldn't figure it out from ?boxcox I tried to dig into the code, but I
>>> > was
>>> > stymied by the code. Does the lm function compute the boxcox
>>> > transformation?
>>> >
>>> >
>>> > On Thu, Feb 13, 2014 at 4:59 PM, Bert Gunter <gunter.berton at gene.com>
>>> > wrote:
>>> >>
>>> >> Have you tried:
>>> >>
>>> >> ?NextMethod
>>> >>
>>> >> ?
>>> >>
>>> >> -- Bert
>>> >>
>>> >> Bert Gunter
>>> >> Genentech Nonclinical Biostatistics
>>> >> (650) 467-7374
>>> >>
>>> >> "Data is not information. Information is not knowledge. And knowledge
>>> >> is certainly not wisdom."
>>> >> H. Gilbert Welch
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On Thu, Feb 13, 2014 at 2:17 PM, Gene Leynes <gleynes+r at gmail.com>
>>> >> wrote:
>>> >> > I was trying to understand the boxcox function in MASS to get a
>>> >> > better
>>> >> > understanding of where and how the log-Likelihood values are
>>> >> > calculated.
>>> >> >
>>> >> > By using "debug(boxcox)" I found this code while running the
>>> >> > examples:
>>> >> >
>>> >> >>     m <- length(lambda)
>>> >> >>     object <- lm(object, y = TRUE, qr = TRUE, ...)
>>> >> >>     result <- NextMethod()
>>> >> >
>>> >> >
>>> >> > Can someone tell me how this is optimizing the values for Lambda?
>>> >> > I'm
>>> >> > assuming that it has something to do with the qr decomposition that
>>> >> > happens
>>> >> > in lm?
>>> >> >
>>> >> >
>>> >> > Thank you,
>>> >> >
>>> >> > Gene
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > Notes and disclaimers:
>>> >> >
>>> >> >    - Yes, I read the help for NextMethod and boxcox.
>>> >> >    - I don't think my OS / R / MASS versions are relevant but if you
>>> >> > must
>>> >> >    know I happen to be on Windows 8 right now and using R version
>>> >> > 3.0.2
>>> >> >    (2013-09-25) -- "Frisbee Sailing", Platform:
>>> >> > x86_64-w64-mingw32/x64
>>> >> >    (64-bit).  MASS version is 7.3-29.
>>> >> >
>>> >> >         [[alternative HTML version deleted]]
>>> >> >
>>> >> > ______________________________________________
>>> >> > R-help at r-project.org mailing list
>>> >> > 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.
>>> >
>>> >
>>
>>




More information about the R-help mailing list