# ci.lin: Compute linear functions of parameters with standard errors... In Epi: A Package for Statistical Analysis in Epidemiology

## Description

For a given model object the function computes a linear function of the parameters and the corresponding standard errors, p-values and confidence intervals.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23``` ```ci.lin( obj, ctr.mat = NULL, subset = NULL, subint = NULL, diffs = FALSE, fnam = !diffs, vcov = FALSE, alpha = 0.05, df = Inf, Exp = FALSE, sample = FALSE ) ci.exp( ..., Exp = TRUE, pval = FALSE ) Wald( obj, H0=0, ... ) ci.mat( alpha = 0.05, df = Inf ) ci.pred( obj, newdata, Exp = NULL, alpha = 0.05 ) ci.ratio( r1, r2, se1 = NULL, se2 = NULL, log.tr = !is.null(se1) & !is.null(se2), alpha = 0.05, pval = FALSE ) ```

## Arguments

 `obj` A model object (in general of class `glm`, but for `ci.lin` and `ci.exp` it may also be of class `lm`, `coxph`, `survreg`, `clogistic`, `cch`, `lme`, `mer`, `lmerMod`, `gls`, `nls`, `gnlm`, `MIresult`, `mipo`, `polr`, or `rq`). `ctr.mat` Contrast matrix to be multiplied to the parameter vector, i.e. the desired linear function of the parameters. Can also be a list of two data frames (see below), in which case all other arguments than `Exp` are ignored - see details. `subset` The subset of the parameters to be used. If given as a character vector, the elements are in turn matched against the parameter names (using `grep`) to find the subset. Repeat parameters may result from using a character vector. This is considered a facility. `subint` Character. `sub`set selection, but where each element of the character vector is used to select a subset of parameters and only the `int`ersection of these is returned. `diffs` If TRUE, all differences between parameters in the subset are computed. `ctr.mat` is ignored. If `obj` inherits from `lm`, and `subset` is given as a string `subset` is used to search among the factors in the model and differences of all factor levels for the first match are shown. If `subset` does not match any of the factors in the model, all pairwise differences between parameters matching are returned. `fnam` Should the common part of the parameter names be included with the annotation of contrasts? Ignored if `diffs==T`. If a sting is supplied this will be prefixed to the labels. `vcov` Should the covariance matrix of the set of parameters be returned? If this is set, `Exp` is ignored. See details. `alpha` Significance level for the confidence intervals. `df` Integer. Number of degrees of freedom in the t-distribution used to compute the quantiles used to construct the confidence intervals. `Exp` For `ci.lin`, if `TRUE` columns 5:6 are replaced with exp( columns 1,5,6 ). For `ci.exp` of `FALSE`, the untransformed parameters are returned. For `ci.pred` it indicates whether the predictions should be exponentiated - the default (`Exp=NULL`) is to make a prediction with a Wald CI on the scale of the linear predictor and back-transform it by the inverse link function; if `FALSE`, the prediction on the link scale is returned. `sample` Logical or numerical. If `TRUE` or numerical a sample of size `as.numeric(sample)` is drawn from the multivariate normal with mean equal to the (`subset` defined) coefficients and variance equal to the estimated variance-covariance of these. These are then transformed by `ctr.mat` and returned. `pval` Logical. Should a column of P-values be included with the estimates and confidence intervals output by `ci.exp`. `H0` Numeric. The null values for the selected/transformed parameters to be tested by a Wald test. Must have the same length as the selected parameter vector. `...` Parameters passed on to `ci.lin`. `newdata` Data frame of covariates where prediction is made. `r1,r2` Estimates of rates in two independent groups, with confidence intervals. `se1,se2` Standard errors of log-rates in the two groups. If given, it is assumed that `r1` and `r2` represent log-rates. `log.tr` Logical, if true, it is assumed that `r1` and `r2` represent log-rates with confidence intervals.

## Value

`ci.lin` returns a matrix with number of rows and row names as `ctr.mat`. The columns are Estimate, Std.Err, z, P, 2.5% and 97.5% (or according to the value of `alpha`). If `vcov=TRUE` a list of length 2 with components `coef` (a vector), the desired functional of the parameters and `vcov` (a square matrix), the variance covariance matrix of this, is returned but not printed. If `Exp==TRUE` the confidence intervals for the parameters are replaced with three columns: exp(estimate,c.i.).

`ci.exp` returns only the exponentiated parameter estimates with confidence intervals. It is merely a wrapper for `ci.lin`, fishing out the last 3 columns from `ci.lin(...,Exp=TRUE)`. If you just want the estimates and confidence limits, but not exponentiated, use `ci.exp(...,Exp=FALSE)`.

If `ctr.mat` is a list of two data frames, the difference of the predictions (on the linear predictor scale) from using the first versus the last as newdata arguments to predict is computed. Columns that are identical in the two data frames can be omitted (see example). If the second data frame has only one row, this is replicated to match the number of rows in the first. This facility is primarily aimed at teasing out RRs that are non-linear functions of a quantitative variable without setting up contrast matrices using the same code as in the model.

`Wald` computes a Wald test for a subset of (possibly linear combinations of) parameters being equal to the vector of null values as given by `H0`. The selection of the subset of parameters is the same as for `ci.lin`. Using the `ctr.mat` argument makes it possible to do a Wald test for equality of parameters. `Wald` returns a named numerical vector of length 3, with names `Chisq`, `d.f.` and `P`.

`ci.mat` returns a 2 by 3 matrix with rows `c(1,0,0)` and `c(0,-1,1)*1.96`, devised to post-multiply to a p by 2 matrix with columns of estimates and standard errors, so as to produce a p by 3 matrix of estimates and confidence limits. Used internally in `ci.lin` and `ci.cum`. The 1.96 is replaced by the appropriate quantile from the normal or t-distribution when arguments `alpha` and/or `df` are given.

`ci.pred` returns a 3-column matrix with estimates and upper and lower confidence intervals as columns. This is just a convenience wrapper for `predict.glm(obj,se.fit=TRUE)` which returns a rather unhandy structure. The prediction with c.i. is made in the `link` scale, and by default transformed by the inverse link, since the most common use for this is for multiplicative Poisson or binomial models with either log or logit link.

`ci.ratio` returns the rate-ratio of two independent set of rates given with confidence intervals or s.e.s. If `se1` and `se2` are given and `log.tr=FALSE` it is assumed that `r1` and `r2` are rates and `se1` and `se2` are standard errors of the log-rates.

## Author(s)

Bendix Carstensen, BendixCarstensen.com & Michael Hills

See also `ci.cum` for a function computing cumulative sums of (functions of) parameter estimates.
 ``` 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 34 35 36 37 38 39 40``` ```# Bogus data: f <- factor( sample( letters[1:5], 200, replace=TRUE ) ) g <- factor( sample( letters[1:3], 200, replace=TRUE ) ) x <- rnorm( 200 ) y <- 7 + as.integer( f ) * 3 + 2 * x + 1.7 * rnorm( 200 ) # Fit a simple model: mm <- lm( y ~ x + f + g ) ci.lin( mm ) ci.lin( mm, subset=3:6, diff=TRUE, fnam=FALSE ) ci.lin( mm, subset=3:6, diff=TRUE, fnam=TRUE ) ci.lin( mm, subset="f", diff=TRUE, fnam="f levels:" ) print( ci.lin( mm, subset="g", diff=TRUE, fnam="gee!:", vcov=TRUE ) ) # Use character defined subset to get ALL contrasts: ci.lin( mm, subset="f", diff=TRUE ) # Suppose the x-effect differs across levels of g: mi <- update( mm, . ~ . + g:x ) ci.lin( mi ) # RR a vs. b by x: nda <- data.frame( x=-3:3, g="a", f="b" ) ndb <- data.frame( x=-3:3, g="b", f="b" ) # ci.lin( mi, list(nda,ndb) ) # Same result if f column is omitted because "f" columns are identical ci.lin( mi, list(nda[,-3],ndb[,-3]) ) # A Wald test of whether the g-parameters are 0 Wald( mm, subset="g" ) # Wald test of whether the three first f-parameters are equal: ( CM <- rbind( c(1,-1,0,0), c(1,0,-1,0)) ) Wald( mm, subset="f", ctr.mat=CM ) # or alternatively ( CM <- rbind( c(1,-1,0,0), c(0,1,-1,0)) ) Wald( mm, subset="f", ctr.mat=CM ) # Confidence intervals for ratio of rates ci.ratio( cbind(10,8,12.5), cbind(5,4,6.25) ) ci.ratio( cbind(8,12.5), cbind(4,6.25) ) ```