Last chance! 50% off unlimited learning
Sale ends in
Estimate the mean, standard deviation, and threshold parameters for a three-parameter lognormal distribution, and optionally construct a confidence interval for the threshold or the median of the distribution.
elnorm3(x, method = "lmle", ci = FALSE, ci.parameter = "threshold",
ci.method = "avar", ci.type = "two-sided", conf.level = 0.95,
threshold.lb.sd = 100, evNormOrdStats.method = "royston")
numeric vector of observations.
character string specifying the method of estimation. Possible values are:
"lmle"
(local maximum likelihood; the default)
"mme"
(method of moments)
"mmue"
(method of moments using an unbaised estimate of variance)
"mmme"
(modified method of moments due to Cohen and Whitten (1980))
"zero.skew"
(zero-skewness estimator due to Griffiths (1980))
"royston.skew"
(estimator based on Royston's (1992b) index of skewness).
See the DETAILS section for more information.
logical scalar indicating whether to compute a confidence interval for either
the threshold or median of the distribution. The default value is FALSE
.
character string indicating the parameter for which the confidence interval is
desired. The possible values are "threshold"
(the default) and
"median"
. This argument is ignored if ci=FALSE
.
character string indicating the method to use to construct the confidence interval.
The possible values are "avar"
(asymptotic variance; the default),
"likelihood.profile"
, and "skewness"
(method suggested by Royston
(1992b) for method="zero.skew"
). This argument is ignored if 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
.
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 positive numeric scalar specifying the range over which to look for the
local maximum likelihood (method="lmle"
) or zero-skewness
(method="zero.skewness"
) estimator of threshold. The range is set to
[ mean(x) - threshold.lb.sd * sd(x), min(x) ]
. If you receive a warning
message that elnorm3
is unable to find an acceptable estimate of threshold
in this range, it may be because of convergence problems specific to the data in
x
. When this occurs, try changing the value of threshold.lb.sd
. This
same range is used in constructing confidence intervals for the threshold parameter.
The default value is threshold.lb.sd=100
. This argument is relevant only if
method="lmle"
, method="zero.skew"
,
ci.method="likelihood.profile"
, and/or ci.method="skewness"
.
character string indicating which method to use in the call to
link{evNormOrdStatsScalar}
when method="mmme"
. See the DETAILS
section for more information.
a list of class "estimate"
containing the estimated parameters and other information.
See
estimate.object
for details.
If x
contains any missing (NA
), undefined (NaN
) or
infinite (Inf
, -Inf
) values, they will be removed prior to
performing the estimation.
Let meanlog=
sdlog=
threshold=
Estimation
Local Maximum Likelihood Estimation (method="lmle"
)
Hill (1963) showed that the likelihood function approaches infinity as
Cohen (1951) showed that the lmle of
On the other hand, Griffiths (1980) showed that for a given value of the threshold
parameter method="lmle"
, the function elnorm3
uses the function
nlminb
to search for the minimum of method="mmme"
; see below) as the
starting value for
Method of Moments Estimation (method="mme"
)
Denote the
Method of Moments Estimators Using an Unbiased Estimate of Variance (method="mmue"
)
This method of estimation is exactly the same as the method of moments
(method="mme"
), except that the unbiased estimator of variance (equation (3))
is used in place of the method of moments one (equation (4)). This modification is
given in Cohen (1988, pp.119-120).
Modified Method of Moments Estimation (method="mmme"
)
This method of estimation is described by Cohen (1988, pp.125-132). It was
introduced by Cohen and Whitten (1980; their MME-II with r=1) and was further
investigated by Cohen et al. (1985). It is motivated by the fact that the first
order statistic in the sample,
The first two sets of equations are the same as for the modified method of moments
estimators (method="mmme"
), i.e., equations (14) and (15) with the
unbiased estimator of variance (equation (3)) used in place of the method of
moments one (equation (4)). The third equation replaces equation (16)
by equating a function of the first order statistic with its expected value:
evNormOrdStats
for information
on how method="mmue"
).
Zero-Skewness Estimation (method="zero.skew"
)
This method of estimation was introduced by Griffiths (1980), and elaborated upon
by Royston (1992b). The idea is that if the threshold parameter
Once the value of
Royston (1992b) developed a modification of the Shaprio-Wilk goodness-of-fit test
for normality based on tranforming the data using equation (6) and the zero-skewness
estimator of gofTest
).
Estimators Based on Royston's Index of Skewness (method="royston.skew"
)
This method of estimation is discussed by Royston (1992b), and is similar to the
zero-skewness method discussed above, except a different measure of skewness is used.
Royston's (1992b) index of skewness is given by:
Royston (1992b) developed this estimator as a quick way to estimate
Confidence Intervals
This section explains three different methods for constructing confidence intervals
for the threshold parameter
Normal Approximation Based on Asymptotic Variances and Covariances (ci.method="avar"
)
Formulas for asymptotic variances and covariances for the three-parameter lognormal
distribution, based on the information matrix, are given in Cohen (1951), Cohen and
Whitten (1980), Cohen et al., (1985), and Cohen (1988). The relevant quantities for
A two-sided
This method of constructing confidence intervals is analogous to using the Wald test (e.g., Silvey, 1975, pp.115-118) to test hypotheses on the parameters.
Because of the regularity problems associated with the global maximum likelihood estimators, it is questionble whether the asymptotic variances and covariances shown above apply to local maximum likelihood estimators. Simulation studies, however, have shown that these estimates of variance and covariance perform reasonably well (Harter and Moore, 1966; Cohen and Whitten, 1980).
Note that this method of constructing confidence intervals can be used with
estimators other than the lmle's. Cohen and Whitten (1980) and Cohen et al. (1985)
found that the asymptotic variances and covariances are reasonably close to
corresponding simulated variances and covariances for the modified method of moments
estimators (method="mmme"
).
Likelihood Profile (ci.method="likelihood.profile"
)
Griffiths (1980) suggested constructing confidence intervals for the threshold
parameter
This method of constructing confidence intervals is analogous to using the likelihood-ratio test (e.g., Silvey, 1975, pp.108-115) to test hypotheses on the parameters.
To construct a two-sided
Construct a confidence interval for
Construct a confidence interval for
Construct the confidence interval for the median as:
Royston (1992b) actually suggested using the quantile from the standard normal
distribution instead of Student's t-distribution in step 2 above. The function
elnorm3
, however, uses the Student's t quantile.
Note that this method of constructing confidence intervals can be used with estimators other than the lmle's.
Royston's Confidence Interval Based on Significant Skewness (ci.method="skewness"
)
Royston (1992b) suggested constructing confidence intervals for the threshold
parameter method="zero.skew"
). A two-sided gofTest
). One-sided
confidence intervals are constructed in a similar manner.
To construct ci.method="likelihood.profile"
, except that the confidence interval for
Aitchison, J., and J.A.C. Brown (1957). The Lognormal Distribution (with special references to its uses in economics). Cambridge University Press, London, Chapter 5.
Calitz, F. (1973). Maximum Likelihood Estimation of the Parameters of the Three-Parameter Lognormal Distribution--a Reconsideration. Australian Journal of Statistics 15(3), 185--190.
Cohen, A.C. (1951). Estimating Parameters of Logarithmic-Normal Distributions by Maximum Likelihood. Journal of the American Statistical Association 46, 206--212.
Cohen, A.C. (1988). Three-Parameter Estimation. In Crow, E.L., and K. Shimizu, eds. Lognormal Distributions: Theory and Applications. Marcel Dekker, New York, Chapter 4.
Cohen, A.C., and B.J. Whitten. (1980). Estimation in the Three-Parameter Lognormal Distribution. Journal of the American Statistical Association 75, 399--404.
Cohen, A.C., B.J. Whitten, and Y. Ding. (1985). Modified Moment Estimation for the Three-Parameter Lognormal Distribution. Journal of Quality Technology 17, 92--99.
Crow, E.L., and K. Shimizu. (1988). Lognormal Distributions: Theory and Applications. Marcel Dekker, New York, Chapter 2.
Griffiths, D.A. (1980). Interval Estimation for the Three-Parameter Lognormal Distribution via the Likelihood Function. Applied Statistics 29, 58--68.
Harter, H.L., and A.H. Moore. (1966). Local-Maximum-Likelihood Estimation of the Parameters of Three-Parameter Lognormal Populations from Complete and Censored Samples. Journal of the American Statistical Association 61, 842--851.
Heyde, C.C. (1963). On a Property of the Lognormal Distribution. Journal of the Royal Statistical Society, Series B 25, 392--393.
Hill, .B.M. (1963). The Three-Parameter Lognormal Distribution and Bayesian Analysis of a Point-Source Epidemic. Journal of the American Statistical Association 58, 72--84.
Hoshi, K., J.R. Stedinger, and J. Burges. (1984). Estimation of Log-Normal Quantiles: Monte Carlo Results and First-Order Approximations. Journal of Hydrology 71, 1--30.
Johnson, N. L., S. Kotz, and N. Balakrishnan. (1994). Continuous Univariate Distributions, Volume 1. Second Edition. John Wiley and Sons, New York.
Royston, J.P. (1992b). Estimation, Reference Ranges and Goodness of Fit for the Three-Parameter Log-Normal Distribution. Statistics in Medicine 11, 897--912.
Stedinger, J.R. (1980). Fitting Lognormal Distributions to Hydrologic Data. Water Resources Research 16(3), 481--490.
# NOT RUN {
# Generate 20 observations from a 3-parameter lognormal distribution
# with parameters meanlog=1.5, sdlog=1, and threshold=10, then use
# Cohen and Whitten's (1980) modified moments estimators to estimate
# the parameters, and construct a confidence interval for the
# threshold based on the estimated asymptotic variance.
# (Note: the call to set.seed simply allows you to reproduce this example.)
set.seed(250)
dat <- rlnorm3(20, meanlog = 1.5, sdlog = 1, threshold = 10)
elnorm3(dat, method = "mmme", ci = TRUE)
#Results of Distribution Parameter Estimation
#--------------------------------------------
#
#Assumed Distribution: 3-Parameter Lognormal
#
#Estimated Parameter(s): meanlog = 1.5206664
# sdlog = 0.5330974
# threshold = 9.6620403
#
#Estimation Method: mmme
#
#Data: dat
#
#Sample Size: 20
#
#Confidence Interval for: threshold
#
#Confidence Interval Method: Normal Approximation
# Based on Asymptotic Variance
#
#Confidence Interval Type: two-sided
#
#Confidence Level: 95%
#
#Confidence Interval: LCL = 6.985258
# UCL = 12.338823
#----------
# Repeat the above example using the other methods of estimation
# and compare.
round(elnorm3(dat, "lmle")$parameters, 1)
#meanlog sdlog threshold
# 1.3 0.7 10.5
round(elnorm3(dat, "mme")$parameters, 1)
#meanlog sdlog threshold
# 2.1 0.3 6.0
round(elnorm3(dat, "mmue")$parameters, 1)
#meanlog sdlog threshold
# 2.2 0.3 5.8
round(elnorm3(dat, "mmme")$parameters, 1)
#meanlog sdlog threshold
# 1.5 0.5 9.7
round(elnorm3(dat, "zero.skew")$parameters, 1)
#meanlog sdlog threshold
# 1.3 0.6 10.3
round(elnorm3(dat, "royston")$parameters, 1)
#meanlog sdlog threshold
# 1.4 0.6 10.1
#----------
# Compare methods for computing a two-sided 95% confidence interval
# for the threshold:
# modified method of moments estimator using asymptotic variance,
# lmle using asymptotic variance,
# lmle using likelihood profile, and
# zero-skewness estimator using the skewness method.
elnorm3(dat, method = "mmme", ci = TRUE,
ci.method = "avar")$interval$limits
# LCL UCL
# 6.985258 12.338823
elnorm3(dat, method = "lmle", ci = TRUE,
ci.method = "avar")$interval$limits
# LCL UCL
# 9.017223 11.980107
elnorm3(dat, method = "lmle", ci = TRUE,
ci.method="likelihood.profile")$interval$limits
# LCL UCL
# 3.699989 11.266029
elnorm3(dat, method = "zero.skew", ci = TRUE,
ci.method = "skewness")$interval$limits
# LCL UCL
#-25.18851 11.18652
#----------
# Now construct a confidence interval for the median of the distribution
# based on using the modified method of moments estimator for threshold
# and the asymptotic variances and covariances. Note that the true median
# is given by threshold + exp(meanlog) = 10 + exp(1.5) = 14.48169.
elnorm3(dat, method = "mmme", ci = TRUE, ci.parameter = "median")
#Results of Distribution Parameter Estimation
#--------------------------------------------
#
#Assumed Distribution: 3-Parameter Lognormal
#
#Estimated Parameter(s): meanlog = 1.5206664
# sdlog = 0.5330974
# threshold = 9.6620403
#
#Estimation Method: mmme
#
#Data: dat
#
#Sample Size: 20
#
#Confidence Interval for: median
#
#Confidence Interval Method: Normal Approximation
# Based on Asymptotic Variance
#
#Confidence Interval Type: two-sided
#
#Confidence Level: 95%
#
#Confidence Interval: LCL = 11.20541
# UCL = 17.26922
#----------
# Compare methods for computing a two-sided 95% confidence interval
# for the median:
# modified method of moments estimator using asymptotic variance,
# lmle using asymptotic variance,
# lmle using likelihood profile, and
# zero-skewness estimator using the skewness method.
elnorm3(dat, method = "mmme", ci = TRUE, ci.parameter = "median",
ci.method = "avar")$interval$limits
# LCL UCL
#11.20541 17.26922
elnorm3(dat, method = "lmle", ci = TRUE, ci.parameter = "median",
ci.method = "avar")$interval$limits
# LCL UCL
#12.28326 15.87233
elnorm3(dat, method = "lmle", ci = TRUE, ci.parameter = "median",
ci.method = "likelihood.profile")$interval$limits
# LCL UCL
# 6.314583 16.165525
elnorm3(dat, method = "zero.skew", ci = TRUE, ci.parameter = "median",
ci.method = "skewness")$interval$limits
# LCL UCL
#-22.38322 16.33569
#----------
# Clean up
#---------
rm(dat)
# }
Run the code above in your browser using DataLab