testExponential: Apply Goodness of Fit Test for Exponential Distribution

View source: R/testExponential.R

testExponentialR Documentation

Apply Goodness of Fit Test for Exponential Distribution

Description

Performs the goodness-of-fit test based on empirical distribution function to check if an i.i.d sample follows an Exponential distribution.

Usage

testExponential(
  x,
  discretize = FALSE,
  ngrid = length(x),
  gridpit = FALSE,
  hessian = FALSE,
  method = "cvm",
  weight_function = NULL
)

Arguments

x

a non-empty numeric vector of sample data.

discretize

If TRUE, the covariance function of W_{n}(u) process is evaluated at some data points (see ngrid and gridpit), and the integral equation is replaced by a matrix equation. If FALSE (the default value), the covariance function is first estimated, and then the integral equation is solved to find the eigenvalues. The results of our simulations recommend using the estimated covariance for solving the integral equation. The parameters ngrid, gridpit, and hessian are only relevant when discretize = TRUE.

ngrid

the number of equally spaced points to discretize the (0,1) interval for computing the covariance function.

gridpit

logical. If TRUE (the default value), the parameter ngrid is ignored and (0,1) interval is divided based on probability integral transforms or PITs obtained from the sample. If FALSE, the interval is divided into ngrid equally spaced points for computing the covariance function.

hessian

logical. If TRUE the Fisher information matrix is estimated by the observed Hessian Matrix based on the sample. If FALSE (the default value) the Fisher information matrix is estimated by the variance of the observed score matrix.

method

a character string indicating which goodness-of-fit statistic is to be computed. The default value is 'cvm' for the Cramer-von-Mises statistic. Other options include 'ad' for the Anderson-Darling statistic, 'both' to compute both cvm and ad statistics, and 'user' for custom weight function. See weight_function for details about custom weight function.

weight_function

a function representing the weight function w(u) used to compute the weighted Cramér-von Mises statistic when method = 'user'. The function must take a numeric vector u \in (0,1) as input and return a numeric vector of the same length. The statistic is computed as

T_n = n \int_{0}^{1} w^2(u) \left( F_n(u) - u \right)^2 du

where w^2(u) is computed internally by squaring the supplied function. The default value is NULL and when method is 'cvm', 'ad', or 'both' the weight_function is ignored. When method = 'user', this argument must be provided, otherwise an error is returned.

Value

A list of two containing the following components:

  • Statistic: the value of goodness-of-fit statistic.

  • p-value: the approximate p-value for the goodness-of-fit test. if method = 'cvm' or method = 'ad', it returns a numeric value for the statistic and p-value. If method = 'both', it returns a numeric vector with two elements and one for each statistic. If method = 'user' it returns the weighted statistic.

Examples

set.seed(123)
n <- 50
sim_data <- rexp(n, rate = 2)
testExponential(x = sim_data)

# Example to show custom weight function
w_cvm <- function(u) rep(1, length(u))
testExponential(x = sim_data, method = 'user', weight_function = w_cvm)


gofedf documentation built on April 12, 2026, 9:07 a.m.