Michael.Laviolette at dhhs.state.nh.us
2015-Feb-04 15:16 UTC
[R] Flat tables for confidence intervals with "survey" package
I'm preparing some reports for substate regions from BRFSS survey data. I
can get estimates easily enough, but am having problems putting the results
in convenient form. Here's some code using the New Hampshire portion of the
public BRFSS "SMART" data:
library(foreign)
library(survey)
# download and extract http://www.cdc.gov/brfss/smart/2012/CNTY12XPT.zip
nh.smart <- svydesign(ids = ~0, strata = ~X_STSTR, weights = ~X_CNTYWT,
data = subset(read.xport("CNTY12.xpt"), X_STATE
=33))
# using asthma status as example
nh.smart <- update(nh.smart,
X_ASTHMS1 = factor(X_ASTHMS1, levels = 1:3,
labels =
c("Current","Former","Never")),
X_CNTY = factor(X_CNTY, labels =
c("Belknap","Carroll","Cheshire","Coos",
"Grafton","Hillsborough","Merrimack",
"Rockingham","Strafford")))
a <- svyby(~X_ASTHMS1, ~X_CNTY, nh.smart, svymean, na.rm = TRUE,
vartype = "ci")
Is there a convenient way to get a flat table similar to the following? I'm
not having much success with "ftable."
Thanks in advance,
Michael L.
# Percent LCI UCI
# Belknap Current 10.4 5.6 15.3
# Former 1.5 0.4 2.7
# Never 88.1 83.1 93.0
# Carroll Current 7.5 4.9 10.1
# Former 2.9 1.3 4.5
# Never 89.6 86.5 92.7
# ...
Duncan Murdoch
2015-Feb-04 16:18 UTC
[R] Flat tables for confidence intervals with "survey" package
On 04/02/2015 10:16 AM, Michael.Laviolette at dhhs.state.nh.us wrote:> I'm preparing some reports for substate regions from BRFSS survey data. I > can get estimates easily enough, but am having problems putting the results > in convenient form. Here's some code using the New Hampshire portion of the > public BRFSS "SMART" data: > > library(foreign) > library(survey) > # download and extract http://www.cdc.gov/brfss/smart/2012/CNTY12XPT.zip > nh.smart <- svydesign(ids = ~0, strata = ~X_STSTR, weights = ~X_CNTYWT, > data = subset(read.xport("CNTY12.xpt"), X_STATE => 33)) > # using asthma status as example > nh.smart <- update(nh.smart, > X_ASTHMS1 = factor(X_ASTHMS1, levels = 1:3, > labels = c("Current","Former","Never")), > X_CNTY = factor(X_CNTY, labels = c("Belknap","Carroll","Cheshire","Coos", > "Grafton","Hillsborough","Merrimack", > "Rockingham","Strafford"))) > a <- svyby(~X_ASTHMS1, ~X_CNTY, nh.smart, svymean, na.rm = TRUE, > vartype = "ci") > > Is there a convenient way to get a flat table similar to the following? I'm > not having much success with "ftable." > > Thanks in advance, > Michael L. > > # Percent LCI UCI > # Belknap Current 10.4 5.6 15.3 > # Former 1.5 0.4 2.7 > # Never 88.1 83.1 93.0 > # Carroll Current 7.5 4.9 10.1 > # Former 2.9 1.3 4.5 > # Never 89.6 86.5 92.7 > # ... >What do you mean by a "flat table"? You can get a table that's suitable for conversion to LaTeX or HTML (or maybe some other format) from the tables package. I haven't tried this, but I would think the syntax would be something like tabular(Factor(X_CNTY, "County")*Factor(X_ASTHMS1, "Asthma") ~ Percent(denom=Equal(X_CNTY)) + Percent(denom=Equal(X_CNTY), fn=LCI) + Percent(denom=Equal(X_CNTY), fn=UCI), data=nh.smart) You'll need to write the LCI and UCI functions to compute the confidence limits. I don't know how to extract those from the objects you've got; you may need to add an "analysis variable" to the tabular() call to get the required inputs. Duncan Murdoch