Last chance! 50% off unlimited learning
Sale ends in
Estimate the shape and scale parameters (or the mean and coefficient of variation) of a Gamma distribution.
egamma(x, method = "mle", ci = FALSE,
ci.type = "two-sided", ci.method = "normal.approx",
normal.approx.transform = "kulkarni.powar", conf.level = 0.95) egammaAlt(x, method = "mle", ci = FALSE,
ci.type = "two-sided", ci.method = "normal.approx",
normal.approx.transform = "kulkarni.powar", conf.level = 0.95)
numeric vector of non-negative observations.
Missing (NA
), undefined (NaN
), and
infinite (Inf
, -Inf
) values are allowed but will be removed.
character string specifying the method of estimation. The possible values are:
"mle"
(maximum likelihood; the default),
"bcmle"
(bias-corrected mle),
"mme"
(method of moments), and
"mmue"
(method of moments based on the unbiased estimator of variance).
See the DETAILS section for more information.
logical scalar indicating whether to compute a confidence interval for the mean.
The default value is ci=FALSE
.
character string indicating what kind of confidence interval to compute.
The possible values are
"two-sided"
(the default), "lower"
, and "upper"
.
This argument is ignored if ci=FALSE
.
character string indicating which method to use to construct the confidence interval.
Possible values are "normal.approx"
(the default),
"profile.likelihood"
, "chisq.approx"
, and "chisq.adj"
.
This argument is ignored if ci=FALSE
.
character string indicating which power transformation to use when
ci.method="normal.approx"
. Possible values are
"kulkarni.powar"
(the default), "cube.root"
, and
"fourth.root"
. See the DETAILS section for more informaiton.
This argument is ignored if ci=FALSE
or ci.method="chisq.approx"
.
a scalar between 0 and 1 indicating the confidence level of the confidence interval. The default
value is conf.level=0.95
. This argument is ignored if ci=FALSE
.
a list of class "estimate"
containing the estimated parameters and other information.
See
estimate.object
for details.
When ci=TRUE
and ci.method="normal.approx"
, it is possible for the
lower confidence limit based on the transformed data to be less than 0.
In this case, the lower confidence limit on the original scale is set to 0 and a warning is
issued stating that the normal approximation is not accurate in this case.
If x
contains any missing (NA
), undefined (NaN
) or
infinite (Inf
, -Inf
) values, they will be removed prior to
performing the estimation.
Let shape=
scale=
mean=
cv=
The function egamma
returns estimates of the shape and scale parameters.
The function egammaAlt
returns estimates of the mean (
Estimation
Maximum Likelihood Estimation (method="mle"
)
The maximum likelihood estimators (mle's) of the shape and scale parameters
digamma function
,
and
Bias-Corrected Maximum Likelihood Estimation (method="bcmle"
)
The “bias-corrected” maximum likelihood estimator of
the shape parameter is based on the suggestion of Anderson and Ray (1975;
see also Johnon et al., 1994, p.366 and Singh et al., 2010b, p.48), who noted that
the bias of the maximum likelihood estimator of the shape parameter can be
considerable when the sample size is small. This estimator is given by:
method="bcmle"
, Equation (6) above is modified so that the estimate of the
scale paramter is based on the “bias-corrected” maximum likelihood estimator
of the shape parameter:
Method of Moments Estimation (method="mme"
)
The method of moments estimators (mme's) of the shape and scale parameters
Method of Moments Estimation Based on the Unbiased Estimator of Variance (method="mmue"
)
The method of moments estimators based on the unbiased estimator of variance
are exactly the same as the method of moments estimators,
except that the method of moments estimator of variance is replaced with the
unbiased estimator of variance:
Confidence Intervals
This section discusses how confidence intervals for the mean
Normal Approximation (ci.method="normal.approx"
)
The normal approximation method is based on the method of Kulkarni and Powar (2010),
who use a power transformation of the the original data to approximate a sample
from a normal distribuiton, compute the confidence interval for the mean on the
transformed scale using the usual formula for a confidence interval for the
mean of a normal distribuiton, and then tranform the limits back to the original
space using equations based on the expected value of a gamma random variable
raised to a power.
The particular power used for the normal approximation is defined by the argument
normal.approx.transform
. The value
normal.approx.transform="cube.root"
uses the cube root transformation
suggested by Wilson and Hilferty (1931), and the value
"fourth.root"
uses the fourth root transformation suggested
by Hawkins and Wixley (1986). The default value "kulkarni.powar"
uses the “Optimum Power Normal Approximation Method” of Kulkarni and Powar
(2010), who show this method performs the best in terms of maintining coverage
and minimizing confidence interval width compared to eight other methods.
The “optimum” power
|
if |
where egamma
and egammaAlt
the power is based on whatever estimate of
shape is used (e.g., method="mle"
, method="bcmle"
, etc.).
Likelihood Profile (ci.method="profile.likelihood"
)
This method was proposed by Cox (1970, p.88), and Venzon and Moolgavkar (1988)
introduced an efficient method of computation. This method is also discussed by
Stryhn and Christensen (2003) and Royston (2007).
The idea behind this method is to invert the likelihood-ratio test to obtain a
confidence interval for the mean
The likelihood function is given by:
Following Stryhn and Christensen (2003), denote the maximum likelihood estimates
of the mean and coefficient of variation by
Alternatively, we may
express the test statistic in terms of the profile likelihood function
Chi-Square Approximation (ci.method="chisq.approx"
)
This method is based on the relationship between the sample mean of the gamma
distribution and the chi-squared distribution (Grice and Bain, 1980):
Because this method is exact only when the shape parameter egamma
and egammaAlt
is equivalent to the “approximate gamma”
method of ProUCL (USEPA, 2015, equation (2-34), p.62).
Chi-Square Adjusted (ci.method="chisq.adj"
)
This is the same method as the Chi-Square Approximation method discussed above,
execpt that the value of Grice.Bain.80.mat
.
This method requires that the sample size egamma
and egammaAlt
is equivalent to the “adjusted gamma”
method of ProUCL (USEPA, 2015, equation (2-35), p.63).
Anderson, C.W., and W.D. Ray. (1975). Improved Maximum Likelihood Estimators for the Gamma Distribution. Communications in Statistics, 4, 437--448.
Forbes, C., M. Evans, N. Hastings, and B. Peacock. (2011). Statistical Distributions, Fourth Edition. John Wiley and Sons, Hoboken, NJ.
Grice, J.V., and L.J. Bain. (1980). Inferences Concerning the Mean of the Gamma Distribution. Journal of the American Statistician, 75, 929-933.
Hawkins, D. M., and R.A.J. Wixley. (1986). A Note on the Transformation of Chi-Squared Variables to Normality. The American Statistician, 40, 296--298.
Johnson, N.L., S. Kotz, and N. Balakrishnan. (1994). Continuous Univariate Distributions, Volume 1. Second Edition. John Wiley and Sons, New York, Chapter 17.
Kulkarni, H.V., and S.K. Powar. (2010). A New Method for Interval Estimation of the Mean of the Gamma Distribution. Lifetime Data Analysis, 16, 431--447.
Singh, A., A.K. Singh, and R.J. Iaci. (2002). Estimation of the Exposure Point Concentration Term Using a Gamma Distribution. EPA/600/R-02/084. October 2002. Technology Support Center for Monitoring and Site Characterization, Office of Research and Development, Office of Solid Waste and Emergency Response, U.S. Environmental Protection Agency, Washington, D.C.
USEPA. (2015). ProUCL Version 5.1.002 Technical Guide. EPA/600/R-07/041, October 2015. Office of Research and Development. U.S. Environmental Protection Agency, Washington, D.C.
Wilson, E.B., and M.M. Hilferty. (1931). The Distribution of Chi-Squares. Proceedings of the National Academy of Sciences, 17, 684--688.
GammaDist
, estimate.object
, eqgamma
,
predIntGamma
, tolIntGamma
.
# NOT RUN {
# Generate 20 observations from a gamma distribution with parameters
# shape=3 and scale=2, then estimate the parameters.
# (Note: the call to set.seed simply allows you to reproduce this
# example.)
set.seed(250)
dat <- rgamma(20, shape = 3, scale = 2)
egamma(dat, ci = TRUE)
#Results of Distribution Parameter Estimation
#--------------------------------------------
#
#Assumed Distribution: Gamma
#
#Estimated Parameter(s): shape = 2.203862
# scale = 2.174928
#
#Estimation Method: mle
#
#Data: dat
#
#Sample Size: 20
#
#Confidence Interval for: mean
#
#Confidence Interval Method: Optimum Power Normal Approximation
# of Kulkarni & Powar (2010)
# using mle of 'shape'
#
#Normal Transform Power: 0.246
#
#Confidence Interval Type: two-sided
#
#Confidence Level: 95%
#
#Confidence Interval: LCL = 3.361652
# UCL = 6.746794
# Clean up
rm(dat)
#====================================================================
# Using the reference area TcCB data in EPA.94b.tccb.df, assume a
# gamma distribution, estimate the parameters based on the
# bias-corrected mle of shape, and compute a one-sided upper 90%
# confidence interval for the mean.
#----------
# First test to see whether the data appear to follow a gamma
# distribution.
with(EPA.94b.tccb.df,
gofTest(TcCB[Area == "Reference"], dist = "gamma",
est.arg.list = list(method = "bcmle"))
)
#Results of Goodness-of-Fit Test
#-------------------------------
#
#Test Method: Shapiro-Wilk GOF Based on
# Chen & Balakrisnan (1995)
#
#Hypothesized Distribution: Gamma
#
#Estimated Parameter(s): shape = 4.5695247
# scale = 0.1309788
#
#Estimation Method: bcmle
#
#Data: TcCB[Area == "Reference"]
#
#Sample Size: 47
#
#Test Statistic: W = 0.9703827
#
#Test Statistic Parameter: n = 47
#
#P-value: 0.2739512
#
#Alternative Hypothesis: True cdf does not equal the
# Gamma Distribution.
#----------
# Now estimate the paramters and compute the upper confidence limit.
with(EPA.94b.tccb.df,
egamma(TcCB[Area == "Reference"], method = "bcmle", ci = TRUE,
ci.type = "upper", conf.level = 0.9)
)
#Results of Distribution Parameter Estimation
#--------------------------------------------
#
#Assumed Distribution: Gamma
#
#Estimated Parameter(s): shape = 4.5695247
# scale = 0.1309788
#
#Estimation Method: bcmle
#
#Data: TcCB[Area == "Reference"]
#
#Sample Size: 47
#
#Confidence Interval for: mean
#
#Confidence Interval Method: Optimum Power Normal Approximation
# of Kulkarni & Powar (2010)
# using bcmle of 'shape'
#
#Normal Transform Power: 0.246
#
#Confidence Interval Type: upper
#
#Confidence Level: 90%
#
#Confidence Interval: LCL = 0.0000000
# UCL = 0.6561838
#------------------------------------------------------------------
# Repeat the above example but use the alternative parameterization.
with(EPA.94b.tccb.df,
egammaAlt(TcCB[Area == "Reference"], method = "bcmle", ci = TRUE,
ci.type = "upper", conf.level = 0.9)
)
#Results of Distribution Parameter Estimation
#--------------------------------------------
#
#Assumed Distribution: Gamma
#
#Estimated Parameter(s): mean = 0.5985106
# cv = 0.4678046
#
#Estimation Method: bcmle of 'shape'
#
#Data: TcCB[Area == "Reference"]
#
#Sample Size: 47
#
#Confidence Interval for: mean
#
#Confidence Interval Method: Optimum Power Normal Approximation
# of Kulkarni & Powar (2010)
# using bcmle of 'shape'
#
#Normal Transform Power: 0.246
#
#Confidence Interval Type: upper
#
#Confidence Level: 90%
#
#Confidence Interval: LCL = 0.0000000
# UCL = 0.6561838
#------------------------------------------------------------------
# Compare the upper confidence limit based on
# 1) the default method:
# normal approximation method based on Kulkarni and Powar (2010)
# 2) Profile Likelihood
# 3) Chi-Square Approximation
# 4) Chi-Square Adjusted
# Default Method
#---------------
with(EPA.94b.tccb.df,
egamma(TcCB[Area == "Reference"], method = "bcmle", ci = TRUE,
ci.type = "upper", conf.level = 0.9)$interval$limits["UCL"]
)
# UCL
#0.6561838
# Profile Likelihood
#-------------------
with(EPA.94b.tccb.df,
egamma(TcCB[Area == "Reference"], method = "mle", ci = TRUE,
ci.type = "upper", conf.level = 0.9,
ci.method = "profile.likelihood")$interval$limits["UCL"]
)
# UCL
#0.6527009
# Chi-Square Approximation
#-------------------------
with(EPA.94b.tccb.df,
egamma(TcCB[Area == "Reference"], method = "mle", ci = TRUE,
ci.type = "upper", conf.level = 0.9,
ci.method = "chisq.approx")$interval$limits["UCL"]
)
# UCL
#0.6532188
# Chi-Square Adjusted
#--------------------
with(EPA.94b.tccb.df,
egamma(TcCB[Area == "Reference"], method = "mle", ci = TRUE,
ci.type = "upper", conf.level = 0.9,
ci.method = "chisq.adj")$interval$limits["UCL"]
)
# UCL
#0.65467
# }
Run the code above in your browser using DataLab