Modified CUSUM method as proposed by Rogerson and Yamada (2004)
algo.rogerson.Rd
Modified Poisson CUSUM method that allows for a time-varying in-control parameter
\(\theta_{0,t}\) as proposed by Rogerson and Yamada (2004). The
same approach can be applied to binomial data if distribution="binomial"
is specified.
Arguments
- disProgObj
object of class
disProg
that includes a matrix with the observed number of counts- control
list with elements
- range
vector of indices in the observed matrix of
disProgObj
to monitor- theta0t
matrix with in-control parameter, must be specified
- ARL0
desired average run length \(\gamma\)
- s
change to detect, see
findH
for further details- hValues
matrix with decision intervals
h
for a sequence of values \(\theta_{0,t}\) (in the range oftheta0t
)- distribution
"poisson"
or"binomial"
- nt
optional matrix with varying sample sizes for the binomial CUSUM
- FIR
a FIR CUSUM with head start \(h/2\) is applied to the data if
TRUE
, otherwise no head start is used; see details- limit
numeric that determines the procedure after an alarm is given, see details
- digits
the reference value and decision interval are rounded to
digits
decimal places. Defaults to 1 and should correspond to the number of digits used to computehValues
Details
The CUSUM for a sequence of Poisson or binomial variates \(x_t\) is computed as $$S_t = \max \{0, S_{t-1} + c_t (x_t- k_t)\} , \, t=1,2,\ldots ,$$ where \(S_0=0\) and \(c_t=h/h_t\); \(k_t\) and \(h_t\) are time-varying reference values and decision intervals. An alarm is given at time \(t\) if \(S_t \geq h\).
If FIR=TRUE
, the CUSUM starts
with a head start value \(S_0=h/2\) at time \(t=0\).
After an alarm is given, the FIR CUSUM starts again at this head start value.
The procedure after the CUSUM gives an alarm can be determined by limit
.
Suppose that the CUSUM signals at time \(t\), i.e. \(S_t \geq h\).
For numeric values of limit
, the CUSUM is bounded
above after an alarm is given,
i.e. \(S_t\) is set to
\( \min\{\code{limit} \cdot h, S_t\} \).
Using limit
=0 corresponds to
resetting \(S_t\) to zero after an alarm as proposed in the original
formulation of the CUSUM. If FIR=TRUE
,
\(S_t\) is reset to \( h/2 \)
(i.e. limit
=\(h/2\) ).
If limit=NULL
, no resetting occurs after an alarm is given.
Note
algo.rogerson
is a univariate CUSUM method. If the data are
available in several regions (i.e. observed
is a matrix),
multiple univariate CUSUMs are applied to each region.
Value
Returns an object of class survRes
with elements
- alarm
indicates whether the CUSUM signaled at time \(t\) or not (1 = alarm, 0 = no alarm)
- upperbound
CUSUM values \(S_t\)
- disProgObj
disProg
object- control
list with the alarm threshold \(h\) and the specified control object
References
Rogerson, P. A. and Yamada, I. Approaches to Syndromic Surveillance When Data Consist of Small Regional Counts. Morbidity and Mortality Weekly Report, 2004, 53/Supplement, 79-85
Examples
# simulate data (seasonal Poisson)
set.seed(123)
t <- 1:300
lambda <- exp(-0.5 + 0.4 * sin(2*pi*t/52) + 0.6 * cos(2*pi*t/52))
data <- sts(observed = rpois(length(lambda), lambda))
# determine a matrix with h values
hVals <- hValues(theta0 = 10:150/100, ARL0=500, s = 1, distr = "poisson")
# convert to legacy "disProg" class and apply modified Poisson CUSUM
disProgObj <- sts2disProg(data)
res <- algo.rogerson(disProgObj, control=c(hVals, list(theta0t=lambda, range=1:300)))
plot(res, xaxis.years = FALSE)