Skip to content

Add column to the output of summary(glht).

4 messages · John Sorkin, PIKAL Petr, Marc Schwartz +1 more

#
I am trying to make the leap from an R users to an R aficionado . . .
 
I am trying to understand how add a column to the output of summary (and to understand how summary() works).
 
I have run a glmer
fit0 <- glmer(Fall ~ Group+(1|PID),family=poisson(link="log"),data=data[data[,"Group"]!=0,])
 
and I want to perform adjusted multiple comparisons:
 
SumTukey <- summary(glht(fit0, linfct= mcp(Group="Tukey")))
 
which gives beautiful output:
Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: glmer(formula = Fall ~ Group + (1 | PID), data = data[data[, 
    "Group"] != 0, ], family = poisson(link = "log"))

Linear Hypotheses:
           Estimate Std. Error z value Pr(>|z|)
2 - 1 == 0   0.5320     0.5075   1.048    0.717
3 - 1 == 0   0.6554     0.5000   1.311    0.551
4 - 1 == 0   0.9357     0.4655   2.010    0.181
3 - 2 == 0   0.1234     0.4174   0.296    0.991
4 - 2 == 0   0.4037     0.3754   1.075    0.700
4 - 3 == 0   0.2803     0.3651   0.768    0.867
(Adjusted p values reported -- single-step method)
 
I want to add a column to the output (unadjusted p-values), but I don't see how this might be done. The output
is not a dataframe, nor is it a matix.
[1] "summary.glht" "glht"  

It is some class of objects that I don't understand and know nothing
about. How can I add a column to the output of SumTukey [a.k.a. summary(glht(fit0, linfct= mcp(Group="Tukey")))] ?
 
Thank you
John
 
 
John David Sorkin M.D., Ph.D.
Professor of Medicine
Chief, Biostatistics and Informatics
University of Maryland School of Medicine Division of Gerontology and Geriatric Medicine
Baltimore VA Medical Center
10 North Greene Street
GRECC (BT/18/GR)
Baltimore, MD 21201-1524
(Phone) 410-605-7119
(Fax) 410-605-7913 (Please call phone number above prior to faxing) 

Confidentiality Statement:
This email message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.
#
Hi

you can check structure of any object by str so

str(fit0)

should give you an insight how fit0 is structured and

str(SumTukey)

gives you structure of SumTukey object (which is probably list). You can manipulate with the output as you wish according to the rules of R.

Cheers
Petr
________________________________
Tento e-mail a jak?koliv k n?mu p?ipojen? dokumenty jsou d?v?rn? a jsou ur?eny pouze jeho adres?t?m.
Jestli?e jste obdr?el(a) tento e-mail omylem, informujte laskav? neprodlen? jeho odes?latele. Obsah tohoto emailu i s p??lohami a jeho kopie vyma?te ze sv?ho syst?mu.
Nejste-li zam??len?m adres?tem tohoto emailu, nejste opr?vn?ni tento email jakkoliv u??vat, roz?i?ovat, kop?rovat ?i zve?ej?ovat.
Odes?latel e-mailu neodpov?d? za eventu?ln? ?kodu zp?sobenou modifikacemi ?i zpo?d?n?m p?enosu e-mailu.

V p??pad?, ?e je tento e-mail sou??st? obchodn?ho jedn?n?:
- vyhrazuje si odes?latel pr?vo ukon?it kdykoliv jedn?n? o uzav?en? smlouvy, a to z jak?hokoliv d?vodu i bez uveden? d?vodu.
- a obsahuje-li nab?dku, je adres?t opr?vn?n nab?dku bezodkladn? p?ijmout; Odes?latel tohoto e-mailu (nab?dky) vylu?uje p?ijet? nab?dky ze strany p??jemce s dodatkem ?i odchylkou.
- trv? odes?latel na tom, ?e p??slu?n? smlouva je uzav?ena teprve v?slovn?m dosa?en?m shody na v?ech jej?ch n?le?itostech.
- odes?latel tohoto emailu informuje, ?e nen? opr?vn?n uzav?rat za spole?nost ??dn? smlouvy s v?jimkou p??pad?, kdy k tomu byl p?semn? zmocn?n nebo p?semn? pov??en a takov? pov??en? nebo pln? moc byly adres?tovi tohoto emailu p??padn? osob?, kterou adres?t zastupuje, p?edlo?eny nebo jejich existence je adres?tovi ?i osob? j?m zastoupen? zn?m?.

This e-mail and any documents attached to it may be confidential and are intended only for its intended recipients.
If you received this e-mail by mistake, please immediately inform its sender. Delete the contents of this e-mail with all attachments and its copies from your system.
If you are not the intended recipient of this e-mail, you are not authorized to use, disseminate, copy or disclose this e-mail in any manner.
The sender of this e-mail shall not be liable for any possible damage caused by modifications of the e-mail or by delay with transfer of the email.

In case that this e-mail forms part of business dealings:
- the sender reserves the right to end negotiations about entering into a contract in any time, for any reason, and without stating any reasoning.
- if the e-mail contains an offer, the recipient is entitled to immediately accept such offer; The sender of this e-mail (offer) excludes any acceptance of the offer on the part of the recipient containing any amendment or variation.
- the sender insists on that the respective contract is concluded only upon an express mutual agreement on all its aspects.
- the sender of this e-mail informs that he/she is not authorized to enter into any contracts on behalf of the company except for cases in which he/she is expressly authorized to do so in writing, and such authorization or power of attorney is submitted to the recipient or the person represented by the recipient, or the existence of such authorization is known to the recipient of the person represented by the recipient.
#
Hi John,

Two things that can be helpful are to review the structure of the object returned by summary.glht(), which in your code above would be (see ?str):

 str(SumTukey)

and also review the print method for the object that actually generates the console output. In this case, using:

  multcomp:::print.summary.glht

or 

 getAnywhere(print.summary.glht)

will reveal the code that is used to generate the output that you see above. The print method is not exported from the package's namespace. 

You can review the print method code to see which components of 'SumTukey' are then used to create the output and what internal functions are used to do that.

Once you understand the structure of the object and how that object's content is formatted and output for display by the associated print method for the object class, you can modify things to fit your need by creating, if need be, your own functions to modify the required part or parts of the object itself and then output them.

If you want to understand what summary.glht() is doing, take the same approach as above for the print method, since it is not exported either:

  multcomp:::summary.glht

or 

  getAnywhere(summary.glht)


Regards,

Marc Schwartz
#
This won't make you an R aficionado, but depending on your needs

library(broom)
tidy(SumTukey)

might be useful. This converts the output to a familiar data.frame, making
it much easier to work with.

Best,
Ista
On Jun 24, 2016 9:48 AM, "John Sorkin" <JSorkin at grecc.umaryland.edu> wrote: