Learn R Programming

binomTools (version 1.0-1)

group: Group observations in a binomial glm

Description

This function groups the observations in a binomial glm based on the covariate structure. This can make it possible to assess goodness-of-fit in some models fitted to binary observations.

Usage

## S3 method for class 'glm':
group(object, eval = TRUE, ind = NULL, ...)

Arguments

object
a binomial glm object
eval
should the new glm-model be evaluated?
ind
an indicator for which rows to keep. If this is not specified the grouping structure is based on the covariate structure in the model.
...
currently not used

Value

  • A list with components
  • newCallthe new call
  • newDataa data frame with the aggregated data set
  • oldDataa data frame with the original data set
  • oldNthe number of rows (cases / observations) in the original data set
  • newNthe number of rows (cases / observations) in the aggregated data set
  • oldObjectthe original fitted model
  • newObjectif eval = TRUE the new fitted model object, otherwise empty

Details

The residual deviance and residual Pearson deviance are not meaningful measures of goodness-of-fit if the expected frequencies under the model are small (say less than five). if eval = TRUE it is tested whether the estimated coefficients are identical up to three significant digits and a warning is issued if this is not the case. This should be the case in well-behaved situations but may not happen in cases of complete separation.

References

Collett, D. (2003) Modelling binary data. Second edition. Chapman & Hall/CRC. Venables, W.N. and Ripley, B.D. (2002) Modern Applied Statistics with S. Fourth Edition. Springer

Examples

Run this code
## Lifted from example(predict.glm):
ldose <- rep(0:5, 2)
numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16)
sex <- factor(rep(c("M", "F"), c(6, 6)))
SF <- cbind(numdead, numalive=20-numdead)
## budworm.lg <- glm(SF ~ sex*ldose, family=binomial)
## summary(budworm.lg)
dat <- data.frame(SF=SF, sex, ldose)
dat[10, 1:2] <- rep(5, 2)
dat[13, ] <- dat[10, ]
rm(SF, sex, ldose)
SF <- as.matrix(dat[,1:2])
dat <- dat[,-(1:2)]
dat <- as.data.frame(cbind(SF, dat))

summary(m0 <- glm(SF ~ sex*ldose, binomial, dat))

## Various types of grouping:
(ind <- c(1:12, 10))
g <- group(m0, ind=ind, eval=TRUE)
g <- group(m0, eval=FALSE)
g <- group(m0, eval=TRUE)

## The correct GOF-test from the residual deviance is given by:
g$newObject

Run the code above in your browser using DataLab