An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140213/6480584d/attachment.pl>
NextMethod in boxcox
11 messages · Bert Gunter, Thomas Lumley, Gene Leynes +1 more
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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140214/2719c429/attachment.pl>
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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140214/4ce85947/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140214/976836a5/attachment.pl>
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.
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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140214/708cf112/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140215/5f263aa9/attachment.pl>
On Feb 14, 2014, at 11:04 PM, Gene Leynes wrote:
How can I see the code for boxcox.default?
http://cran.r-project.org/doc/Rnews/Rnews_2006-4.pdf
library(MASS) boxcox.default
Error: object 'boxcox.default' not found
[[alternative HTML version deleted]]
Please learn to post in plain text. (It's really very easy in gmail.)
David Winsemius Alameda, CA, USA