Learn R Programming

RRreg (version 0.6.1)

RRuni: Univariate analysis of randomized response data

Description

Analyse a data vector response with a specified RR model (e.g., Warner) with known randomization probability p

Usage

RRuni(response, data, model, p, group = NULL, MLest = TRUE)

Arguments

response
either vector of responses containing 0='no' and 1='yes' or name of response variable in data. In Kuk's card playing method (Kuk), the observed response variable gives the number of red cards. For the Forced Response (FR) model, response values are integers from 0 to (m-1), where 'm' is the number of response categories.
data
optional data.frame containing the response variable
model
defines RR model. Available models: "Warner", "UQTknown", "UQTunknown", "Mangat", "Kuk","FR", "Crosswise", "CDM", "CDMsym", "SLD", "mix.norm", "mix.exp","mix.unknown", or "custom". See argument p or type vignette('RRreg') for detailed specifications.
p
randomization probability (see details or vignette("RRreg"))
group
a group vector of the same length as response containing values 1 or 2, only required for two-group models, which specify different randomization probabilities for two groups, e.g., CDM or SLD. If a data.frame data is provided, the variable group is searched within it.
MLest
whether to use optim to get ML instead of moment estimates (only relevant if pi is outside of [0,1])

Value

an RRuni object, can by analyzed by using summary

Details

Each RR design model differs in the definition of the randomization probability p, which is defined as a single probability for
  • "Warner": Probabiltiy to get sensitive Question
  • "Mangat": Prob. for noncarriers to respond truthfully (i.e., with No=0)
  • "Crosswise": Prevalence of 'yes' responses for unrelated question (response category is coded as 1=['no-no' or 'yes-yes']; 0=['yes-no' or 'no-yes'])
and as a two-valued vector of probabilities for
  • "Kuk": Probability of red cards in first and second set, respectively (red=1, black=0);
  • Unrelated Question ("UQTknown"): Prob. to respond to sensitive question and known prevalence of 'yes' responses to unrelated question
  • Unrelated Question ("UQTunknown"): Prob. to respond to sensitive question in group 1 and 2, respectively
  • Cheating Detection ("CDM"): Prob. to be prompted to say yes in group 1 and 2, respectively
  • Symmetric CDM ("CDMsym"): 4-valued vector: Prob. to be prompted to say 'yes'/'no' in group 1 and 'yes'/'no' in group 2
  • Stochastic Lie Detector ("SLD"): Prob. for noncarriers to reply with 0='no' in group 1 and 2, respectively
  • Forced Response model ("FR"): m-valued vector (m=number of response categories) with the probabilities of being prompted to select response categories 0,1,..,m-1, respectively (requires sum(p)<1< code="">)
  • RR as misclassification ("custom"): a quadratic misclassification matrix is specified, where the entry p[i,j] defines the probability of responding i (i-th row) given a true state of j (j-th column)) (see getPW)

For the continuous RR models:

  • "mix.norm": 3-valued vector - Prob. to respond to sensitive question and mean and SD of the masking normal distribution of the unrelated question
  • "mix.exp": 2-valued vector - Prob. to respond to sensitive question and mean of the masking exponential distribution of the unrelated question
  • "mix.unknown": 2-valued vector - Prob. of responding to sensitive question in group 1 and 2, respectively

See Also

vignette('RRreg') or https://dl.dropboxusercontent.com/u/21456540/RRreg/index.html for a detailed description of the RR models and the appropriate definition of p

Examples

Run this code
# Generate responses of 1000 people according to Warner's model
# with an underlying true proportion of .3
genData <- RRgen(n=1000, pi=.3, model="Warner", p=.7)
# Analyse univariate data to estimate 'pi'
analyse <- RRuni(response=genData$response, model="Warner", p=.7)
summary(analyse)

# Generate data in line with the Stochastic Lie Detector 
# assuming that 90% of the respondents answer truthfully
genData2 <- RRgen(n=1000, pi=.3, model="SLD", p=c(.2,.8), 
                  complyRates=c(.8,1),groupRatio=0.4)
analyse2 <- RRuni(response=genData2$response, model="SLD", 
                  p=c(.2,.8), group=genData2$group)
summary(analyse2)

Run the code above in your browser using DataLab