# svycontrast: Linear and nonlinearconstrasts of survey statistics In survey: Analysis of Complex Survey Samples

 svycontrast R Documentation

## Linear and nonlinearconstrasts of survey statistics

### Description

Computes linear or nonlinear contrasts of estimates produced by survey functions (or any object with `coef` and `vcov` methods).

### Usage

``````svycontrast(stat, contrasts, add=FALSE, ...)
``````

### Arguments

 `stat` object of class `svrepstat` or `svystat` `contrasts` A vector or list of vectors of coefficients, or a call or list of calls `add` keep all the coefficients of the input in the output? `...` For future expansion

### Details

If `contrasts` is a list, the element names are used as names for the returned statistics.

If an element of `contrasts` is shorter than `coef(stat)` and has names, the names are used to match up the vectors and the remaining elements of `contrasts` are assumed to be zero. If the names are not legal variable names (eg `0.1`) they must be quoted (eg `"0.1"`)

If `contrasts` is a `"call"` or list of `"call"s`, and `stat` is a `svrepstat` object including replicates, the replicates are transformed and used to compute the variance. If `stat` is a `svystat` object or a `svrepstat` object without replicates, the delta-method is used to compute variances, and the calls must use only functions that `deriv` knows how to differentiate. If the names are not legal variable names they must be quoted with backticks (eg ``0.1``).

### Value

Object of class `svrepstat` or `svystat`

`regTermTest`, `svyglm`

### Examples

``````data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)

a <- svytotal(~api00+enroll+api99, dclus1)
svycontrast(a, list(avg=c(0.5,0,0.5), diff=c(1,0,-1)))
## if contrast vectors have names, zeroes may be omitted
svycontrast(a, list(avg=c(api00=0.5,api99=0.5), diff=c(api00=1,api99=-1)))

## nonlinear contrasts
svycontrast(a, quote(api00/api99))
svyratio(~api00, ~api99, dclus1)

## Example: standardised skewness coefficient
moments<-svymean(~I(api00^3)+I(api00^2)+I(api00), dclus1)
svycontrast(moments,
quote((`I(api00^3)`-3*`I(api00^2)`*`I(api00)`+ 3*`I(api00)`*`I(api00)`^2-`I(api00)`^3)/
(`I(api00^2)`-`I(api00)`^2)^1.5))

## Example: geometric means
## using delta method
meanlogs <- svymean(~log(api00)+log(api99), dclus1)
svycontrast(meanlogs,
list(api00=quote(exp(`log(api00)`)), api99=quote(exp(`log(api99)`))))

## using delta method
rclus1<-as.svrepdesign(dclus1)
meanlogs <- svymean(~log(api00)+log(api99), rclus1)
svycontrast(meanlogs,
list(api00=quote(exp(`log(api00)`)),
api99=quote(exp(`log(api99)`))))

(totals<-svyby(~enroll,~stype,design=dclus1,svytotal,covmat=TRUE))

svycontrast(totals1, list(quote(E/total), quote(H/total), quote(M/total)))

all.equal(as.matrix(totals1),as.matrix(totals2))

## more complicated svyby
means <- svyby(~api00+api99, ~stype+sch.wide, design=dclus1, svymean,covmat=TRUE)
svycontrast(means, quote(`E.No:api00`-`E.No:api99`))
svycontrast(means, quote(`E.No:api00`/`E.No:api99`))

## transforming replicates
meanlogs_r <- svymean(~log(api00)+log(api99), rclus1, return.replicates=TRUE)
svycontrast(meanlogs_r,
list(api00=quote(exp(`log(api00)`)), api99=quote(exp(`log(api99)`))))

``````

survey documentation built on May 3, 2023, 9:12 a.m.