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) .

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 J, 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