Skip to contents

Provides standardized outcome rates for surveys, primarily as defined by the American Association for Public Opinion Research (AAPOR). Details can be found in the Standard Definitions manual (The American Association for Public Opinion Research 2016) .

Usage

outcomerate(x, e = NULL, rate = NULL, weight = NULL,
  return_nd = FALSE)

Arguments

x

a character vector of disposition outcomes (I, P, R, NC, O, UH, or UO). Alternatively, a named vector/table of (weighted) disposition counts.

e

a scalar number that specifies the eligibility rate (the estimated proportion of unknown cases which are eligible). A default method of calculating 'e' is provided by eligibility_rate().

rate

an optional character vector specifying the rates to be calculated. If set to NA (the default), all rates are returned.

weight

an optional numeric vector that specifies the weight of each element in 'x' if x is a character vector or factor. If none is provided (the default), an unweighted estimate is returned.

return_nd

a logical to switch to having the function return the numerator and denominator instead of the rate. Defaults to FALSE.

Details

Survey and public opinion research often categorizes interview attempts of of a survey according to a set of outcome codes as follows:

  • I = Complete interview

  • P = Partial interview

  • R = Refusal and break-off

  • NC = Non-contact

  • O = Other

  • UH = Unknown if household/occupied housing unit

  • UO = Unknown, other

  • NE = Known ineligible

These high-level classes are used to calculate outcome rates that provide some measure of quality over the fieldwork. These outcome rates are defined here as follows:

AAPOR Response Rate

The proportion of your intended sample that participate in the survey.

  • RR1 = I / ((I + P) + (R + NC + O) + (UH + UO))

  • RR2 = (I + P) / ((I + P) + (R + NC + O) + (UH + UO))

  • RR3 = I / ((I + P) + (R + NC + O) + e(UH + UO))

  • RR4 = (I + P) / ((I + P) + (R + NC + O) + e(UH + UO))

  • RR5 = I / ((I + P) + (R + NC + O))

  • RR6 = (I + P) / ((I + P) + (R + NC + O))

AAPOR Cooperation Rates

The proportion of contacted respondents who participate in the survey.

  • COOP1 = I / ((I + P) + R + O)

  • COOP2 = (I + P) / ((I + P) + R + O)

  • COOP3 = I / ((I + P) + R)

  • COOP4 = (I + P) / ((I + P) + R)

AAPOR Refusal Rates

The proportion of the sample that refuses to participate in the survey.

  • REF1 = R / ((I + P) + (R + NC + O) + (UH + UO))

  • REF2 = R / ((I + P) + (R + NC + O) + e(UH + UO))

  • REF3 = R / ((I + P) + (R + NC + O))

AAPOR Contact Rates

The proportion of the sample that is successfully contacted for an interview (whether they chose to participate or not).

  • CON1 = ((I + P) + (R + O)) / ((I + P) + (R + NC + O) + (UH+ UO))

  • CON2 = ((I + P) + (R + O)) / ((I + P) + (R + NC + O) + e(UH + UO))

  • CON3 = ((I + P) + (R + O)) / ((I + P) + (R + NC + O))

Location Rate

The proportion of cases that could be located for an interview.

The location rate is not defined in AAPOR's Standards, but can be found in (Valliant et al. 2013) . Note: depending on how the located cases are encoded, this may or may not be the correct formula.

  • LOC1 = ((I + P) + (R + O + NC)) / ((I + P) + (R + NC + O) + (UH + UO))

  • LOC2 = ((I + P) + (R + O + NC)) / ((I + P) + (R + NC + O) + e(UH + UO))

References

The American Association for Public Opinion Research (2016). “Standard Definitions: Final Dispositions of Case Codes and Outcome Rates for Surveys.” https://www.aapor.org/Standards-Ethics/Standard-Definitions-(1).aspx.

Valliant R, Dever JA, Kreuter F (2013). Practical Tools for Designing and Weighting Survey Samples, Statistics for Social and Behavioral Sciences. Springer New York. The American Association for Public Opinion Research (2016). “Standard Definitions: Final Dispositions of Case Codes and Outcome Rates for Surveys.” https://www.aapor.org/Standards-Ethics/Standard-Definitions-(1).aspx.

Examples

# load the outcomerate package
library(outcomerate)

# Create a vector of survey dispositions
#
# I  = Complete interview
# P  = Partial interview
# R  = Refusal and break-off
# NC = Non-contact
# O  = Other
# UH = Unknown if household/occupied housing unit
# UO = Unknown, other
# NE = Known ineligible
x <- c("I", "P", "I", "NC", "UH", "I", "R", "NE",
      "UO", "I", "O", "P", "I")

# calculate all rates
elr <- eligibility_rate(x)
outcomerate(x, e = elr)
#>        RR1        RR2        RR3        RR4        RR5        RR6      COOP1 
#> 0.41666667 0.58333333 0.42307692 0.59230769 0.50000000 0.70000000 0.55555556 
#>      COOP2      COOP3      COOP4       REF1       REF2       REF3       CON1 
#> 0.77777778 0.62500000 0.87500000 0.08333333 0.08461538 0.10000000 0.75000000 
#>       CON2       CON3       LOC1       LOC2 
#> 0.76153846 0.90000000 0.83333333 0.84615385 

# return only one rate
outcomerate(x, rate = "COOP1")
#>     COOP1 
#> 0.5555556 

# calculate weighted rates
w <- runif(length(x), 0, 5)
outcomerate(x, e = elr, weight = w)
#>      RR1w      RR2w      RR3w      RR4w      RR5w      RR6w    COOP1w    COOP2w 
#> 0.3916103 0.6189977 0.3960029 0.6259408 0.4460332 0.7050210 0.4824984 0.7626597 
#>    COOP3w    COOP4w     REF1w     REF2w     REF3w     CON1w     CON2w     CON3w 
#> 0.5024454 0.7941888 0.1604110 0.1622103 0.1827037 0.8116303 0.8207341 0.9244241 
#>     LOC1w     LOC2w 
#> 0.8779848 0.8878329 

# alternatively, provide input as counts
freq <- c(I = 6, P = 2, NC = 3, R = 1)
outcomerate(freq, e = elr)
#>        RR1        RR2        RR3        RR4        RR5        RR6      COOP1 
#> 0.50000000 0.66666667 0.50000000 0.66666667 0.50000000 0.66666667 0.66666667 
#>      COOP2      COOP3      COOP4       REF1       REF2       REF3       CON1 
#> 0.88888889 0.66666667 0.88888889 0.08333333 0.08333333 0.08333333 0.75000000 
#>       CON2       CON3       LOC1       LOC2 
#> 0.75000000 0.75000000 1.00000000 1.00000000