qvcalc {qvcalc}R Documentation

Quasi Variances for Model Coefficients

Description

Computes a set of quasi variances (and corresponding quasi standard errors) for estimated model coefficients relating to the levels of a categorical (i.e., factor) explanatory variable. For details of the method see Firth (2000), Firth (2003) or Firth and Menezes (2004). Quasi variances generalize and improve the accuracy of “floating absolute risk” (Easton et al., 1991).

Usage

qvcalc(object, factorname=NULL, labels = NULL, dispersion = NULL,
      estimates=NULL,  modelcall=NULL)

Arguments

object A model (of class lm, glm, etc.), or the covariance (sub)matrix for the estimates of interest
factorname If object is a model, the name of the factor of interest
labels An optional vector of row names for the qvframe component of the result (redundant if object is a model)
dispersion an optional scalar multiplier for the covariance matrix, to cope with overdispersion for example
estimates an optional vector of estimated coefficients (redundant if object is a model)
modelcall optional, the call expression for the model of interest (redundant if object is a model)

Details

If object is a Bradley-Terry model of class BTm, of the standard, unstructured kind that is specified using the special BTm formula ~ .., the factorname argument can be omitted, in which case the factorname component of the resulting qv object will be "".

Ordinarily the quasi variances are positive and so their square roots (the quasi standard errors) exist and can be used in plots, etc.

Occasionally one (and only one) of the quasi variances is negative, and so the corresponding quasi standard error does not exist (it appears as NaN). This is fairly rare in applications, and when it occurs it is because the factor of interest is strongly correlated with one or more other predictors in the model. It is not an indication that quasi variances are inaccurate. An example is shown below using data from the car package: the quasi variance approximation is exact (since type has only 3 levels), and there is a negative quasi variance. The quasi variances remain perfectly valid (they can be used to obtain inference on any contrast), but it makes no sense to plot `comparison intervals' in the usual way since one of the quasi standard errors is not a real number.

Value

A list of class qv, with components

covmat the full variance-covariance matrix for the estimated coefficients corresponding to the factor of interest
qvframe a data frame with variables estimate, SE, quasiSE and quasiVar, the last two being a quasi standard error and quasi-variance for each level of the factor of interest
relerrs relative errors for approximating the standard errors of all simple contrasts
factorname the factor name if given
modelcall if object is a model, object$call; otherwise NULL

Author(s)

David Firth, d.firth@warwick.ac.uk

References

Easton, D. F, Peto, J. and Babiker, A. G. A. G. (1991) Floating absolute risk: an alternative to relative risk in survival and case-control analysis avoiding an arbitrary reference group. Statistics in Medicine 10, 1025–1035.

Firth, D. (2000) Quasi-variances in Xlisp-Stat and on the web. Journal of Statistical Software 5.4, 1–13. At http://www.jstatsoft.org

Firth, D. (2003) Overcoming the reference category problem in the presentation of statistical models. Sociological Methodology 33, 1–18.

Firth, D. and Mezezes, R. X. de (2004) Quasi-variances. Biometrika 91, 65–80.

McCullagh, P. and Nelder, J. A. (1989) Generalized Linear Models. London: Chapman and Hall.

Menezes, R. X. (1999) More useful standard errors for group and factor effects in generalized linear models. D.Phil. Thesis, Department of Statistics, University of Oxford.

See Also

worstErrors, plot.qv

Examples

##  Overdispersed Poisson loglinear model for ship damage data
##  from McCullagh and Nelder (1989), Sec 6.3.2 
library(MASS)
data(ships)
ships$year <- as.factor(ships$year)
ships$period <- as.factor(ships$period)
shipmodel <- glm(formula = incidents ~ type + year + period,
    family = quasipoisson, 
    data = ships, subset = (service > 0), offset = log(service))
shiptype.qvs <- qvcalc(shipmodel, "type")
summary(shiptype.qvs, digits=4)
plot(shiptype.qvs)
##  A Bradley-Terry model example
##  For details and references see help(BTm)
library(BradleyTerry)
##
##  Baseball data from Agresti (2002) p438
data(baseball)
##  Fit the Bradley-Terry model with home advantage effect
baseballModel <- BTm(baseball ~ .., order.effect = baseball$home.adv)
baseball.qv <- qvcalc(baseballModel, factorname = "team")
plot(baseball.qv, main = "Bradley-Terry analysis of baseball data")
## Not run: 
##  Example of a negative quasi variance
##  Requires the "car" package
library(car)
data(Prestige)
attach(Prestige)
mymodel <- lm(prestige ~ type + education)
library(qvcalc)
type.qvs <- qvcalc(mymodel, "type")
##  Warning message: 
##  NaNs produced in: sqrt(qv) 
summary(type.qvs)
##  Model call:  lm(formula = prestige ~ type + education) 
##  Factor name:  type 
##          estimate       SE  quasiSE  quasiVar
##    bc    0.000000 0.000000 2.874361  8.261952
##    prof  6.142444 4.258961 3.142737  9.876793
##    wc   -5.458495 2.690667      NaN -1.022262
##  Worst relative errors in SEs of simple contrasts (%):  0 0 
##  Worst relative errors over *all* contrasts (%):  0 0
plot(type.qvs)
##  Error in plot.qv(type.qvs) :  No comparison intervals available,
##  since one of the quasi variances is negative.  See ?qvcalc for more.
## End(Not run) 

[Package qvcalc version 0.8-4 Index]