benchmark.null.slow: Automatic, but slow benchmarking of a null data set

View source: R/benchmark.null.slow.R

benchmark.null.slowR Documentation

Automatic, but slow benchmarking of a null data set

Description

This function provides an automated mechanism for identifying the largest test statistic for a simulated null data set within the benchmark2003 or benchmark2006 data sets. This function uses a loop and message to print progress instead of the pbapply function. The advantage is that incremental progress is easily seen, allowing the user to identify any problematic rows of the data set. The results for each row of the data set are saved in a file using the name paste("t", null.name, "_", test.name, "_", i, ".rds", sep = ""),, where i is the row of the data set.

Usage

benchmark.null.slow(
  MAXFUN,
  test.name,
  null.name,
  idx = seq_len(10000),
  ...,
  units = "auto"
)

Arguments

MAXFUN

A function that returns only the maximum test statistic across all zones. The first argument MUST take a vector of cases.

test.name

The name of the test being applied. Must be a character vector.

null.name

Which null data set to use. Must be one of "null600" or "null6000" or "fakenull".

idx

A vector with the row indices of the data set to be benchmarked.

...

Additional arguments passed on to the MAXFUN.

units

The units of time for printing the iterative evaluation time. The default is "auto". See difftime for additional options.

Details

For the specified data set, MAXFUN is applied to each row of the specified data sets.

Value

NULL. Results are saved in an rda file.

Examples

# load required data
data(neastdata)
# construct zone information
coords = neastdata[, c("x", "y")]
ubpop = 0.5
pop = neastdata$population

# all distinct zones subject to population constraints
zones = smerc::scan.zones(coords, pop, ubpop)
# expected number of cases in each region
e = 600/sum(pop)*pop

# expected number of cases in each zone
ein = sapply(zones, function(x) sum(e[x]))
# expected number of cases outside of each zone
eout = 600 - ein

# takes a set of cases and determines the largest
# test statistic across all zones using required
# information
max.scan.test = function(cases, zones, ein, eout, ty) {
  # compute yin for each zone
  yin = sapply(zones, function(zone) sum(cases[zone]))
  # take max over statistics of all zones
  max(smerc::scan.stat(yin, ein, eout, ty))
}

## Not run: 
benchmark.null.slow(MAXFUN = max.scan.test,
                    test.name = "scan_test",
                    null.name = "fakenull",
                    idx = seq_len(5),
                    zones = zones,
                    ein = ein,
                    eout = eout,
                    ty = 600)
clean.benchmark(test.name = "scan_test",
                    data.name = "fakenull",
                    idx = seq_len(5),
                    unlist = TRUE)

## End(Not run)

jpfrench81/neastbenchmark documentation built on July 26, 2023, 3:07 p.m.