% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/testGamma.R
\name{testGamma}
\alias{testGamma}
\title{Apply Goodness of Fit Test for Gamma Distribution}
\usage{
testGamma(
  x,
  discretize = FALSE,
  ngrid = length(x),
  gridpit = FALSE,
  hessian = FALSE,
  rate = TRUE,
  method = "cvm",
  weight_function = NULL
)
}
\arguments{
\item{x}{a non-empty numeric vector of sample data.}

\item{discretize}{If \code{TRUE}, the covariance function of \eqn{W_{n}(u)}
process is evaluated at some data points (see \code{ngrid} and
\code{gridpit}), and the integral equation is replaced by a matrix
equation. If \code{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 \code{ngrid},
\code{gridpit}, and \code{hessian} are only relevant when \code{discretize
  = TRUE}.}

\item{ngrid}{the number of equally spaced points to discretize the (0,1)
interval for computing the covariance function.}

\item{gridpit}{logical. If \code{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 \code{FALSE}, the
interval is divided into ngrid equally spaced points for computing the
covariance function.}

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

\item{rate}{logical. If \code{TRUE} (the default value), the rate is
estimated in Gamma distribution. If \code{FALSE}, scale is estimated. See
\code{\link{GammaDist}} for more details.}

\item{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.}

\item{weight_function}{a function representing the weight function
\eqn{w(u)} used to compute the weighted Cramér-von Mises statistic
when \code{method = 'user'}. The function must take a numeric vector
\eqn{u \in (0,1)} as input and return a numeric vector of the same
length. The statistic is computed as
\deqn{T_n = n \int_{0}^{1} w^2(u) \left( F_n(u) - u \right)^2 du}
where \eqn{w^2(u)} is computed internally by squaring the supplied
function. The default value is \code{NULL} and when \code{method} is
\code{'cvm'}, \code{'ad'}, or \code{'both'} the weight_function is ignored.
When \code{method = 'user'}, this argument must be provided, otherwise
an error is returned.}
}
\value{
A list of two containing the following components:
\itemize{
\item Statistic: the value of goodness-of-fit statistic.
\item 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.
}
}
\description{
Performs the goodness-of-fit test based on empirical
distribution function to check if an i.i.d sample follows a Gamma
distribution.
}
\examples{
set.seed(123)
sim_data <- rgamma(n = 50, shape = 3)
# Cramer-von-Mises
testGamma(x = sim_data)
# Anderson-Darling
testGamma(x = sim_data, method = 'ad')
# Example to show custom weight function
w_cvm <- function(u) rep(1, length(u))
testGamma(x = sim_data, method = 'user', weight_function = w_cvm)
w_ad <- function(u) 1 / sqrt(u * (1 - u))
testGamma(x = sim_data, method = 'user', weight_function = w_ad)


sim_data <- runif(n = 50)
testGamma(x = sim_data)

}
