On Fri, Feb 14, 2014 at 7:38 PM, Bert Gunter <gunter.berton@gene.com> wrote:

> 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.
>
>
The method chain is slightly unusual here, because of the liberal way S3
objects are defined.

boxcox.default works with lm objects that have $qr and $y components

boxcox.lm works with any lm object, updating it to make sure it has $qr and
$y, then callling boxcox.default

boxcox.formula works with a formula, creating a suitable lm object then
calling boxcox.default

The calls to boxcox.default are done with NextMethod(), but there isn't
really inheritance in the usual OOP sense.

    -thomas




> 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@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@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@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@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@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@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@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.
> >>> >
> >>> >
> >>
> >>
>
> ______________________________________________
> R-help@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.
>



-- 
Thomas Lumley
Professor of Biostatistics
University of Auckland

	[[alternative HTML version deleted]]


