svycontrast | R Documentation |

Computes linear or nonlinear contrasts of estimates produced by survey
functions (or any object with `coef`

and `vcov`

methods).

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

`stat` |
object of class |

`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 |

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``

).

Object of class `svrepstat`

or `svystat`

`regTermTest`

, `svyglm`

```
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)`))))
## why is add=TRUE useful?
(totals<-svyby(~enroll,~stype,design=dclus1,svytotal,covmat=TRUE))
totals1<-svycontrast(totals, list(total=c(1,1,1)), add=TRUE)
svycontrast(totals1, list(quote(E/total), quote(H/total), quote(M/total)))
totals2<-svycontrast(totals, list(total=quote(E+H+M)), add=TRUE)
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.

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.