On Fri, Feb 14, 2014 at 7:38 PM, Bert Gunter <gunter.ber...@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 <bgun...@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 <gleyne...@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.ber...@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 <gleyne...@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.ber...@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 <gleyne...@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]] ______________________________________________ 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.