tabgee: Generate Summary Tables of Fitted Generalized Estimating...

Description Usage Arguments Details Value Note Author(s) References See Also Examples

Description

This function takes an object returned from the gee function in the package gee [1] and generates a clean summary table for a statistical report.

Usage

1
2
3
4
5
6
7
8
tabgee(geefit, latex = FALSE, xlabels = NULL, ci.beta = TRUE, decimals = 2,
       p.decimals = c(2, 3), p.cuts = 0.01, p.lowerbound = 0.001,
       p.leading0 = TRUE, p.avoid1 = FALSE, basic.form = FALSE,
       intercept = TRUE, n.id = FALSE, n.total = FALSE, or = TRUE,
       robust = TRUE, data = NULL, greek.beta = FALSE, binary.compress = TRUE,
       bold.colnames = TRUE, bold.varnames = FALSE, bold.varlevels = FALSE,
       predictor.colname = "Variable", print.html = FALSE,
       html.filename = "table1.html")

Arguments

geefit

An object returned from gee function call.

latex

If TRUE, object returned is formatted for printing in LaTeX using xtable [2]; if FALSE, formatted for copy-and-pasting from RStudio into a word processor.

xlabels

Optional character vector to label the x variables and their levels. If unspecified, generic labels are used.

ci.beta

If TRUE, the table returned will include a column for Wald 95% confidence interval for the estimated coefficients.

decimals

Number of decimal places for numeric values in the table (except p-values).

p.decimals

Number of decimal places for p-values. If a vector is provided rather than a single value, number of decimal places will depend on what range the p-value lies in. See p.cuts.

p.cuts

Cut-point(s) to control number of decimal places used for p-values. For example, by default p.cuts = 0.1 and p.decimals = c(2, 3). This means that p-values in the range [0.1, 1] will be printed to two decimal places, while p-values in the range [0, 0.1) will be printed to three decimal places.

p.lowerbound

Controls cut-point at which p-values are no longer printed as their value, but rather <lowerbound. For example, by default p.lowerbound = 0.001. Under this setting, p-values less than 0.001 are printed as <0.001.

p.leading0

If TRUE, p-values are printed with 0 before decimal place; if FALSE, the leading 0 is omitted.

p.avoid1

If TRUE, p-values rounded to 1 are not printed as 1, but as >0.99 (or similarly depending on p.decimals and p.cuts).

basic.form

If TRUE, there is no attempt to neatly format factor variables and their levels, and the table returned is very similar to what you see when you run summary(geefit).

intercept

If FALSE, the table returned will not include a row for the intercept.

n.id

If TRUE, the table returned will include a column for number of unique IDs (e.g. clusters).

n.total

If TRUE, the table returned will include a column for total number of observations used.

or

If TRUE, the table returned will include columns for odds ratios and Wald 95% confidence intervals for odds ratios. Only meaningful for logistic regression.

robust

If TRUE, robust standard errors are used (i.e. from sandwich estimator); if FALSE, naive standard errors are used.

data

Data frame or matrix containing variables passed to gee to create geefit. Only necessary when one or more of the predictors is a factor variable and basic.form = FALSE.

greek.beta

If TRUE, column headings refer to regression parameters as Greek letter beta rather than Beta. Only used when latex = TRUE.

binary.compress

If TRUE, only one row of the table is dedicated to parameter estimates for each binary factor predictor. If FALSE, the table displays separate rows for the variable name and the two levels for each binary factor predictor, much like the presentation for factor variables with more than two levels.

bold.colnames

If TRUE, column headings are printed in bold font. Only applies if latex = TRUE.

bold.varnames

If TRUE, variable names in the first column of the table are printed in bold font. Only applies if latex = TRUE.

bold.varlevels

If TRUE, levels of each factor variable are printed in bold font. Only applies if latex = TRUE and there is at least one factor variable included as a predictor.

predictor.colname

Character string with desired column heading for the column of predictors.

print.html

If TRUE, function prints a .html file to the current working directory.

html.filename

Character string indicating the name of the .html file that gets printed if print.html = TRUE.

Details

The function should work well with categorical predictors (factors), provided they are not ordered. For ordered factors, just convert to unordered before creating the gee object to pass to tabgee. Note that you can define the levels of an unordered factor to control, which dictates which level is used as the reference group in regression models. For example, suppose a factor variable x takes values "low", "medium", and "high". If you write x = factor(x = x, levels = c("low", "medium", "high")), then you can run levels(x) to see that the levels are now arranged "low", "medium", "high". It is still a regular factor, but now if you use x as a predictor in a call to gee, "low" will be the reference group.

Interaction and polynomial terms are compatible with tabgee. If interaction terms are included, the table will be formatted a little differently. Basically including an interaction is equivalent to setting basic.form = TRUE. All variable names and levels will be exactly as they appear when you run summary(geefit), where geefit is the object returned from a call to gee.

Value

A character matrix that summarizes the fitted GEE. If latex = TRUE, the character matrix will be formatted for inserting into a Markdown/Sweave/knitr report using the xtable package [2].

Note

While tabgee should work with any object generated by a call to gee, not all possibilities have been tested. Therefore in general I recommend always doing a quick check that the table created by tabgee matches the information in the gee object itself.

If you wish to paste your tables into Word, you can use either of these approaches:

1. Use the write.cb function in the Kmisc package [3]. If your table is stored in a character matrix named table1, use write.cb(table1) to copy the table to your clipboard. Paste the result into Word, then highlight the text and go to Insert - Table - Convert Text to Table... OK.

2. Set print.html = TRUE. This will result in a .html file writing to your current working directory. When you open this file, you will see a nice looking table that you can copy and paste into Word. You can control the name of this file with html.filename.

If you wish to use LaTeX, R Markdown, knitr, Sweave, etc., set latex = TRUE and then use xtable [2]. You may have to set sanitize.text.function = identity when calling print.xtable.

If you have suggestions for additional options or features, or if you would like some help using any function in tab, please e-mail me at vandomed@gmail.com. Thanks!

Author(s)

Dane R. Van domelen

References

1. Carey VJ (2012). gee: Generalized estimation equation solver. R package version 4.13-18. https://cran.r-project.org/package=gee.

2. Dahl DB (2013). xtable: Export tables to LaTeX or HTML. R package version 1.7-1, https://cran.r-project.org/package=xtable.

3. Kevin Ushey (2013). Kmisc: Kevin Miscellaneous. R package version 0.5.0. https://CRAN.R-project.org/package=Kmisc.

Acknowledgment: This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-0940903.

See Also

gee
tabfreq
tabmeans
tabmedians
tabmulti
tabglm
tabcox
tabfreq.svy
tabmeans.svy
tabmedians.svy
tabmulti.svy
tabglm.svy

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Load in sample dataset d and convert to long format
data(d)
d2 <- reshape(data = d,
              varying = c("bp.1", "bp.2", "bp.3", "highbp.1", "highbp.2",
                          "highbp.3"),
              timevar = "bp.visit", direction = "long")
d2 <- d2[order(d2$id), ]

# Load required package gee
library("gee")

# Create labels for race levels
races <- c("White", "Black", "Mexican American", "Other")

# Test whether predictors are associated with blood pressure at 1, 2, and 3
# months
geefit1 <- gee(bp ~ Age + Sex + Race + BMI + Group, id = id, data = d2,
               corstr = "unstructured")

# Create summary table using tabgee
geetable1 <- tabgee(geefit = geefit1, data = d2, n.id = TRUE, n.total = TRUE,
                    xlabels = c("Intercept", "Age", "Male", "Race", races,
                                "BMI", "Treatment"))

# Test whether predictors are associated with high blood pressure at 1, 2, and
# 3 months
geefit2 <- gee(highbp ~ Age + Sex + Race + BMI + Group, id = id, data = d2,
               family = binomial, corstr = "unstructured")

# Create summary table using tabgee
geetable2 <- tabgee(geefit = geefit2, data = d2, ci.beta = FALSE,
                    xlabels = c("Intercept", "Age", "Male", "Race", races,
                                "BMI", "Treatment"))

Example output

Beginning Cgee S-function, @(#) geeformula.q 4.13 98/01/27
running glm to get initial regression estimate
         (Intercept)                  Age              SexMale 
        111.89775246           0.04056654           4.16389689 
           RaceBlack RaceMexican American            RaceOther 
          0.15475299           1.16832912           0.01975425 
                 BMI       GroupTreatment 
          0.63487889           3.65538664 
Beginning Cgee S-function, @(#) geeformula.q 4.13 98/01/27
running glm to get initial regression estimate
         (Intercept)                  Age              SexMale 
        -4.642853912          0.002922334          0.523048556 
           RaceBlack RaceMexican American            RaceOther 
         0.097001275          0.277749363         -0.087013170 
                 BMI       GroupTreatment 
         0.115028079          0.654824501 

tab documentation built on May 2, 2019, 6:50 p.m.