AAPOR Survey Response Rates
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
R
inst
man-roxygen
man
tests
.Rbuildignore
.gitignore
.travis.yml
CONTRIBUTING.md
DESCRIPTION
LICENSE
NAMESPACE
NEWS
README.Rmd
README.md

README.md

AAPOR Survey Response Rates

responserates is a package for calculating survey response rates according to the American Association for Public Opinion Research (AAPOR) Standard Definitions.

The main function of interest is rates(), which calculates all AAPOR standard response, refusal, cooperation, and contact rates based upon specified disposition codes. Disposition codes can be specified either as a vector of character codes (following AAPOR's standard acronyms):

library("responserates")
rates(c(rep("I", 100), rep("NC", 20)))
## Response Rates
##  RR1:    83.3% 
##  RR2:    83.3% 
##  RR3:    83.3% 
##  RR4:    83.3% 
##  RR5:    83.3% 
##  RR6:    83.3% 
## Cooperation Rates
##  COOP1: 100.0% 
##  COOP2: 100.0% 
##  COOP3: 100.0% 
##  COOP4: 100.0% 
## Refusal Rates
##  REF1:    0.0% 
##  REF2:    0.0% 
##  REF3:    0.0% 
## Contact Rates
##  CON1:   83.3% 
##  CON2:   83.3% 
##  CON3:   83.3%

or as a table or list of totals (codes are not case-sensitive):

rates(list(i = 100, nc = 20))
## Response Rates
##  RR1:    83.3% 
##  RR2:    83.3% 
##  RR3:    83.3% 
##  RR4:    83.3% 
##  RR5:    83.3% 
##  RR6:    83.3% 
## Cooperation Rates
##  COOP1: 100.0% 
##  COOP2: 100.0% 
##  COOP3: 100.0% 
##  COOP4: 100.0% 
## Refusal Rates
##  REF1:    0.0% 
##  REF2:    0.0% 
##  REF3:    0.0% 
## Contact Rates
##  CON1:   83.3% 
##  CON2:   83.3% 
##  CON3:   83.3%

Calculations are performed assuming equal probability of selection, but this can be modified by specifying a vector of codes and corresponding weights:

set.seed(1)
rates(c(rep("I", 100), rep("NC", 20)), w = runif(120))
## Response Rates
##  RR1:    84.1% 
##  RR2:    84.1% 
##  RR3:    84.1% 
##  RR4:    84.1% 
##  RR5:    84.1% 
##  RR6:    84.1% 
## Cooperation Rates
##  COOP1: 100.0% 
##  COOP2: 100.0% 
##  COOP3: 100.0% 
##  COOP4: 100.0% 
## Refusal Rates
##  REF1:    0.0% 
##  REF2:    0.0% 
##  REF3:    0.0% 
## Contact Rates
##  CON1:   84.1% 
##  CON2:   84.1% 
##  CON3:   84.1%

If some cases have unknown eligibility, a default value for the proportion eligible (e in the Standard Definitions) is assumed to be 1. This can easily be changed if other values are appropriate:

rates(list(i = 100, nc = 20, uo = 100, e = .25))
## Response Rates
##  RR1:    45.5% 
##  RR2:    45.5% 
##  RR3:    69.0% 
##  RR4:    69.0% 
##  RR5:    83.3% 
##  RR6:    83.3% 
## Cooperation Rates
##  COOP1: 100.0% 
##  COOP2: 100.0% 
##  COOP3: 100.0% 
##  COOP4: 100.0% 
## Refusal Rates
##  REF1:    0.0% 
##  REF2:    0.0% 
##  REF3:    0.0% 
## Contact Rates
##  CON1:   45.5% 
##  CON2:   69.0% 
##  CON3:   83.3%

The package also exposes functions for calculating each response rate (rr1(), rr2(), ref1(), etc.) based upon counts of disposition codes for a survey. These can be useful, for example, when one is only interested in a particular rate becuase the design is very simple (such as rr1(i = 10, r = 5)) or when handling complex survey designs. For instance, in a dual-frame survey, the overall response rate needs to average the response rate for each frame:

# landline frame
(ll <- rr1(i = 100, r = 400, nc = 300))
## Response Rate (AAPOR_RR1):  12.5%
# cellphone frame
(cp <- rr1(i = 150, r = 300, nc = 200))
## Response Rate (AAPOR_RR1):  23.1%
# Pr(interviews from ll frame)
p <- 100/150

# overall response rate
(ll * p) + (cp * (1-p))
## Response Rate (AAPOR_RR1):  16.0%

Installation

CRAN Build Status codecov.io

This package is not yet on CRAN. To install the latest development version from GitHub:

if(!require("remotes")){
    install.packages("remotes")
}
remotes::install_github("leeper/responserates")