distCheck {bgev}R Documentation

Check implementation of a distribution in R.

Description

This is just a refactorization of the original R function distCheck to allow customization for heavy tailed distributions and distribution with constrained support. Assumes one has implemented density, probability, quantile and random generation for a new distribution. Originally implemented to be used with the bimodal GEV distribution

Usage

distCheck(fun = "norm", n = 1000, robust = FALSE, subdivisions = 1500, 
support.lower = -Inf, support.upper = Inf, 
var.exists = TRUE, print.result = TRUE, ...)

Arguments

fun

Name of distribution. E.g, "bgev" for bimodal GEV, "gev" for GEV, "norm" for normal.

n

size of the sample when generating random values through "rfun"

robust

Boolean. Used for computing mean and variance in a robust way when evaluating mean and variance.

subdivisions

used for numerical integration when using "dfun"

support.lower

lower limit of the support of the distribution

support.upper

upper limit of the support of the distribution

var.exists

Boolean indicating if variance exists (useful for gev, bimodal gev, stable etc)

print.result

Boolean indicating weather to print results of the tests on screen.

...

parameters passed to the distribution, e.g., mu and sd for normal, mu, sigma, xi and delta for bimodal GEV.

Details

All tests results are organized into a list to make it easier to find where results went wrong and to make it scalable for testing distributions for several parameters.

Value

A list of lists with test results

list( functionTested = fun, functionParam = list(...),
test1.density = list(computed = NULL, expected = NULL, error.check = NULL),
test2.quantile.cdf = list(computed = NULL, expected = NULL, error.check = NULL),
test3.mean.var = list(computed = list(mean = NULL, var = NULL, log = NULL),
expected = list(mean = NULL, var = NULL, log = NULL),
error.check = NULL,
condition.is.var.finite = TRUE))

functionParam

Additional parameters passed to the distribution with the ... argument

test1.density

results for the density function test. A list with the 'computed' value using the density function and numerical integration, the 'expected' value (which is 1) and the result of the 'error.check' comparing both values.

test2.quantile.cdf

results for the quantile function test. A list with the 'computed' value using the quantile function at chosen probabilites on [0,1], the 'expected' value (which is 1) and the result of the 'error.check' comparing both values.

test3.mean.var

results for the random generation and the density function. A list with the 'computed' values using the random quantities (computes mean(X), variance(X) and E(log(abs(X))) where X follows the distribution being tested. The 'expected' is a list containing the same quantities computed using numerical integration

error.check

check if expected variance and computed variance are close enough.

condition.is.var.finite

For some distributions there are known conditions for the variance to be finite. This quantity is expected to be evaluated outside the DistCheck function and passed through the argument 'var.exists'.

Author(s)

Cira Otiniano Author [aut], Yasmin Lirio Author [aut], Thiago Sousa Developer [cre]

References

Otiniano, Cira EG, et al. (2023). A bimodal model for extremes data. Environmental and Ecological Statistics, 1-28. http://dx.doi.org/10.1007/s10651-023-00566-7

Examples

# generate random values for the parameters and test the 
# bimodal gev distribution implementation
set.seed(1)
mu = runif(1,-2,2)
sigma = runif(1,0.1,2)
xi = runif(1,0.3,0.9) * sign(runif(1,-1,1))
delta = 1#runif(1,-0.6,2)
support = bgev.support(mu, sigma, xi, delta)
var.exists = ( xi != 0) & (xi < (delta + 1)/2)
ret = distCheck(fun="bgev", n = 2000, 
      support.lower = support[1], support.upper = support[2], 
      subdivisions = 5000, mu = mu, sigma = sigma, xi = xi, 
      delta = delta, var.exists = var.exists, print.result = TRUE)

[Package bgev version 0.1 Index]