svyglm.nb() is an extension to the survey-package
to fit survey-weighted negative binomial models. It uses
svymle to fit sampling-weighted
maximum likelihood estimates, based on starting values provided
by glm.nb, as proposed by Lumley
(2010, pp249).
svyglm.nb(formula, design, ...)An object of class svymle and svyglm.nb,
with some additional information about the model.
For details on the computation method, see Lumley (2010), Appendix E
(especially 254ff.)
sjstats implements following S3-methods for svyglm.nb-objects:
family(), model.frame(), formula(), print(),
predict() and residuals(). However, these functions have some
limitations:
family() simply returns the family-object from the
underlying glm.nb-model.
The predict()-method just re-fits the svyglm.nb-model
with glm.nb, overwrites the $coefficients
from this model-object with the coefficients from the returned
svymle-object and finally calls
predict.glm to compute the predicted values.
residuals() re-fits the svyglm.nb-model with
glm.nb and then computes the Pearson-residuals
from the glm.nb-object.
Lumley T (2010). Complex Surveys: a guide to analysis using R. Wiley
# ------------------------------------------
# This example reproduces the results from
# Lumley 2010, figure E.7 (Appendix E, p256)
# ------------------------------------------
if (require("survey")) {
data(nhanes_sample)
# create survey design
des <- svydesign(
id = ~SDMVPSU,
strat = ~SDMVSTRA,
weights = ~WTINT2YR,
nest = TRUE,
data = nhanes_sample
)
# fit negative binomial regression
fit <- svyglm.nb(total ~ factor(RIAGENDR) * (log(age) + factor(RIDRETH1)), des)
# print coefficients and standard errors
fit
}
#> Loading required package: survey
#> Loading required package: grid
#> Loading required package: survival
#>
#> Attaching package: ‘survey’
#> The following object is masked from ‘package:sjstats’:
#>
#> cv
#> The following object is masked from ‘package:graphics’:
#>
#> dotchart
#> term irr std.error conf.low conf.high
#> 2 (Intercept) 9.8463 0.1556 7.2578 13.3580
#> 3 factor(RIAGENDR)2 0.4511 0.1805 0.3167 0.6426
#> 4 log(age) 2.9163 0.2331 1.8467 4.6056
#> 5 factor(RIDRETH1)2 1.0859 0.1477 0.8130 1.4504
#> 6 factor(RIDRETH1)3 1.0977 0.1779 0.7746 1.5556
#> 7 factor(RIDRETH1)4 2.2686 0.2974 1.2665 4.0634
#> 8 factor(RIDRETH1)5 1.0589 0.3789 0.5039 2.2250
#> 9 factor(RIAGENDR)2:log(age) 0.2947 0.2651 0.1753 0.4955
#> 10 factor(RIAGENDR)2:factor(RIDRETH1)2 0.8314 0.2611 0.4984 1.3870
#> 11 factor(RIAGENDR)2:factor(RIDRETH1)3 1.8285 0.1931 1.2523 2.6698
#> 12 factor(RIAGENDR)2:factor(RIDRETH1)4 1.0668 0.3747 0.5119 2.2232
#> 13 factor(RIAGENDR)2:factor(RIDRETH1)5 1.4564 0.4427 0.6116 3.4680
#> p.value
#> 2 <0.001 ***
#> 3 <0.001 ***
#> 4 <0.001 ***
#> 5 0.5769
#> 6 0.6003
#> 7 0.0059 **
#> 8 0.8800
#> 9 <0.001 ***
#> 10 0.4795
#> 11 0.0018 **
#> 12 0.8630
#> 13 0.3957
#>
#> Dispersion parameter Theta: 0.8062
#> Standard Error of Theta: 0.0216
#>
#> Showing robust standard errors on link-scale (untransformed).