nAuditMUS {PracTools} | R Documentation |
Sample sizes for a Monetary Unit Sample in an audit
Description
Compute a sample size for an audit where the goal is to control the probability of observing only a small number of errors given an underlying error rate in the population. The sample will be selected with probabilities proportional to a measure of size (MOS). When the MOS of each record is a monetary unit, auditors refer to this as an monetary unit sampling or dollar unit sampling.
Usage
nAuditMUS(MUSVar, Value.sw, CL = 0.90, Error.sw, Tol.Error, Exp.Error = 0)
Arguments
MUSVar |
The measure of size for monetary unit sampling (MUS) |
Value.sw |
Determines whether the monetary unit sample is based on positive values, negative values, or absolute values. If |
CL |
Probability that the sample will contain an acceptable number of errors. Auditors refer to this as 'confidence level'. The probability that the sample will contain the tolerable number of errors or fewer is |
Error.sw |
Determines whether errors are based on monetary amounts or percentages, i.e., whether |
Tol.Error |
The amount of error expressed as a value or a percentage that the auditor considers tolerable. If |
Exp.Error |
The amount of error, expressed as a value or a percentage, that the auditor expects in the population. If |
Details
nAuditMUS
computes the minimum sample size required for a given population, tolerable error rate or misstatement, and desired confidence level. If the expected error or misstatement is 0, (i.e. Exp.Error
= 0), then the sample size is computed using the hypergeometric distribution where the acceptable number of deviations is 0. If the expected error is greater than 0, then sample size is computed by first calculating the maximum sample size where the number of deviations divided by the sample size is less than the expected error, then calculating the minimum sample size where the number of deviations divided by the sample size is greater than the expected error, and finally performing a straight line interpolation between these two values where the interpolated value is the specified expected error. The returned sample size calculation is the ceiling of that interpolated sample size.
Value
List object with values:
Value.Range |
Whether the MUS variable is for positive, negative, or absolute values as defined by |
Error.Type |
Amount or Percent as defined by |
Tol.Error.Rate |
The tolerable error expressed as a percentage of items if |
Exp.Error.Rate |
The expected error expressed as a percentage of items if |
Number.Records |
The population count of records in the value range based on selecting ones with positive, negative or absolute value of |
Sample.Size |
Minimum sample size needed to meet tolerable and expected error rate requirements |
Number.HighVal |
Number of records that are high value (exceed the interval used for systematic sampling) and will be certainties in the sample |
Positive.Pop.Dollars |
The absolute value of the total dollar (or other monetary unit) amount in the population in the value range |
Conf.level |
Probability that the sample will meet MUS requirements |
Sampling.Interval |
Spacing or skip interval that would be used in a systematic probability proportional to monetary unit sampling |
Author(s)
George Zipf, Richard Valliant
References
GAO (2020). Financial Audit Manual, Volume 1, section 480.21-480.26. Washington DC; https://www.gao.gov/assets/gao-18-601g.pdf
See Also
Examples
# generate an artificial population with some negative monetary amounts
EX <- 1000
relvar <- 2
alpha <- 1/relvar
sigma <- EX * relvar
lowval <- 100 # minimum positive X's allowed
prop.neg <- 0.05 # proportion of pop with negative values
N.neg <- floor(1000 * prop.neg) # number of negative X's allowed
X <- rgamma(n=1000, shape=alpha, scale=sigma)
Xlow <- sort(X)[1:N.neg]
xneg <- -Xlow - lowval
xpos <- X[N.neg:length(X)]
X <- c(xneg, xpos)
nAuditMUS(X, Value.sw = "Pos", Error.sw = "Amount", Tol.Error = 180000, Exp.Error = 10000)
nAuditMUS(X, Value.sw = "Pos", Error.sw = "Pct", Tol.Error = 18, Exp.Error = 3)
nAuditMUS(X, Value.sw = "Abs", Error.sw = "Amount", Tol.Error = 180000, Exp.Error = 10000)