benchmark.null: Benchmark null data sets

View source: R/benchmark.null.R

benchmark.nullR Documentation

Benchmark null data sets

Description

This function provides an automated mechanism for producing the largest test statistic for each simulated data set in one of null600, null6000, fakenull.

Usage

benchmark.null(
  MAXFUN,
  test.name,
  null.name = "null600",
  SAVE = FALSE,
  loop = FALSE,
  pfreq = 1,
  ...
)

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

SAVE

A logical value indicating whether the results should be saved as an rda file. If TRUE, then the file is saved as paste("t", null.name, "_", test.name, ".rda", sep = "") to the current working directly. If FALSE, the vector is returned. Default is FALSE.

loop

A logicial value indicating whether a loop should be used to run the benchmark instead of pbapply. The default is FALSE.

pfreq

The frequency that messages are reported from the loop. The default is pfreq = 1, meaning a message is returned for each index of the loop. This is chosen because it is assumed that this will only be used when the method is quite slow.

...

Additional arguments passed on to the MAXFUN and pbapply.

Details

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

If the results are saved, then the name of the data object saved is paste("t", null.name, sep = "").

Value

A vector of the largest test statistics for each simulated data set, or writing out to 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.stat = 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))
}

benchmark.null(MAXFUN = max.scan.stat,
               test.name = "scan_test",
               null.name = "fakenull",
               SAVE = FALSE,
               zones = zones,
               ein = ein,
               eout = eout,
               ty = 600)

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