[R] Extracting Coefficients and Such from mle2 Output
dwinsemius at comcast.net
Sun Feb 1 17:45:03 CET 2009
Let me admit at this point that I am not really sure that S4 classes
is the correct classification of such "@"-using extraction processes.
The documentation refers to "formal methods" and I don't yet have
enough knowledge to know that how tightly slots and formal classes are
linked with S4 or S3.
On Feb 1, 2009, at 10:43 AM, David Winsemius wrote:
> As Ben Bolker's reply hints, our difficulty was that because we were
> insufficiently knowledgeable regarding working with S4 objects such
> as "a" and summary(a) object. Both mle2 and summary(a) produce S4
> objects which need a different set of extraction technology.
> Although I did not know it last night, I have now looked at the help
> page for "slot", followed the link to the help page for "@" labeled
> "slotOp", and found that one can use "@" in much the same way one
> uses "$".
> > str(summary(a))
> #Formal class 'summary.mle2' [package "bbmle"] with 3 slots
> ..@ call : language mle2(minuslogl = LL, fixed = list(xhalf = 6))
> ..@ coef : num [1, 1:4] 1.93e+01 1.71 1.13e+01 1.86e-29
> .. ..- attr(*, "dimnames")=List of 2
> .. .. ..$ : chr "ymax"
> .. .. ..$ : chr [1:4] "Estimate" "Std. Error" "z value" "Pr(z)"
> ..@ m2logL: num 60.4
> # So ....coef in this case is a 1 by 4 matrix and ...
> summary(a)@coef["ymax","Std. Error"]
> # 1.711541
> So we still have access to any of the components of an S4 object
> such as a or summary(a), if we follow the trail of their respective
> David Winsemius
> On Feb 1, 2009, at 7:50 AM, BooBoo wrote:
>> I had asked this question once before about a function in the NADA
>> package, and you provided this neat response:
>> [Begin quote]
>> An approach that may yield somewhat more self-documenting code
>> would be to examine either the fit object or the summary object
>> with str and then to access results by extracting named elements.
>> Since I don't have the package in question, let me use the lm
>> object on its help page as an example:
>> ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
>> trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
>> group <- gl(2,10,20, labels=c("Ctl","Trt"))
>> weight <- c(ctl, trt)
>> lm.D9 <- lm(weight ~ group)
>> summary(lm.D9)$coefficients["groupTrt", "Pr(>|t|)"]
>> # to get the p-value
>> > summary(lm.D9)$coefficients["groupTrt","Pr(>|t|)"]
>>  0.2490232
>> [End quote]
>> However, this does not seem to work with mle2, and the methods you
>> suggested this time don't allow me access to the "etc" (the
>> standard error and its probability for example). Is there a way to
>> do this similar to what you suggested for lm, where I can at
>> anything reported by mle2?
>> David Winsemius wrote:
>>> On Jan 31, 2009, at 9:13 PM, Tom La Bone wrote:
>>>> The mle2 function (bbmle library) gives an example something like
>>>> following in its help page. How do I access the coefficients,
>>>> errors, etc in the summary of "a"?
>>> eeep. Further comment on "etc" not possible at this time. Mind
>>> reading equipment malfunction.
> R-help at r-project.org mailing list
> 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