Fits a hyperbolic distribution to data. Displays the histogram, log-histogram (both with fitted densities), Q-Q plot and P-P plot for the fit which has the maximum likelihood.
hyperbFit(x, freq =NULL, breaks =NULL, ThetaStart =NULL, startMethod ="Nelder-Mead", startValues ="BN", method ="Nelder-Mead", hessian =FALSE, plots =FALSE, printOut =FALSE, controlBFGS = list(maxit=200), controlNM = list(maxit=1000), maxitNLM =1500,...)## S3 method for class 'hyperbFit'print(x, digits = max(3, getOption("digits")-3),...)## S3 method for class 'hyperbFit'plot(x, which =1:4, plotTitles = paste(c("Histogram of ","Log-Histogram of ","Q-Q Plot of ","P-P Plot of "), x$obsName, sep =""), ask = prod(par("mfcol"))< length(which)&& dev.interactive(),...)
Arguments
x: Data vector for hyperbFit. Object of class "hyperbFit" for print.hyperbFit and plot.hyperbFit.
freq: A vector of weights with length equal to length(x).
breaks: Breaks for histogram, defaults to those generated by hist(x, right = FALSE, plot = FALSE).
ThetaStart: A user specified starting parameter vector Theta taking the form c(pi,zeta,delta,mu).
startMethod: Method used by hyperbFitStart in calls to optim.
startValues: Code giving the method of determining starting values for finding the maximum likelihood estimate of Theta.
method: Different optimisation methods to consider. See Details .
hessian: Logical. If TRUE the value of the hessian is returned.
plots: Logical. If FALSE suppresses printing of the histogram, log-histogram, Q-Q plot and P-P plot.
printOut: Logical. If FALSE suppresses printing of results of fitting.
controlBFGS: A list of control parameters for optim when using the "BFGS" optimisation.
controlNM: A list of control parameters for optim
when using the "Nelder-Mead" optimisation.
maxitNLM: A positive integer specifying the maximum number of iterations when using the "nlm" optimisation.
digits: Desired number of digits when the object is printed.
which: If a subset of the plots is required, specify a subset of the numbers 1:4.
plotTitles: Titles to appear above the plots.
ask: Logical. If TRUE, the user is asked before each plot, see par(ask = .).
...: Passes arguments to par, hist, logHist, qqhyperb and pphyperb.
Details
startMethod can be either "BFGS" or "Nelder-Mead".
startValues can be one of the following:
"US": User-supplied.
"BN": Based on Barndorff-Nielsen (1977).
"FN": A fitted normal distribution.
"SL": Based on a fitted skew-Laplace distribution.
"MoM": Method of moments.
For the details concerning the use of ThetaStart, startMethod, and startValues, see hyperbFitStart.
The three optimisation methods currently available are:
"BFGS": Uses the quasi-Newton method "BFGS" as documented in optim.
"Nelder-Mead": Uses an implementation of the Nelder and Mead method as documented in optim.
"nlm": Uses the nlm function in R.
For details of how to pass control information for optimisation using
optim and nlm, see optim and
nlm.
When method = "nlm"is used, warnings may be produced. These do not appear to be a problem.
Returns
A list with components: - Theta: A vector giving the maximum likelihood estimate of Theta, as (pi,zeta,delta,mu).
maxLik: The value of the maximised log-likelihood.
hessian: If hessian was set to TRUE, the value of the hessian. Not present otherwise.
method: Optimisation method used.
conv: Convergence code. See the relevant documentation (either optim or nlm) for details on convergence.
iter: Number of iterations of optimisation routine.
x: The data used to fit the hyperbolic distribution.
xName: A character string with the actual x argument name.
ThetaStart: Starting value of Theta returned by call to hyperbFitStart.
svName: Descriptive name for the method finding start values.
startValues: Acronym for the method of finding start values.
KNu: Value of the Bessel function in the fitted density.
breaks: The cell boundaries found by a call to hist.
midpoints: The cell midpoints found by a call to hist.
empDens: The estimated density found by a call to hist.
References
Barndorff-Nielsen, O. (1977) Exponentially decreasing distributions for the logarithm of particle size, Proc. Roy. Soc. Lond., A353 , 401--419.
Fieller, N. J., Flenley, E. C. and Olbricht, W. (1992) Statistics of particle size data. Appl. Statist., 41 , 127--146.
Author(s)
David Scott d.scott@auckland.ac.nz , Ai-Wei Lee, Jennifer Tso, Richard Trendall, Thomas Tran
See Also
optim, nlm, par, hist, logHist, qqhyperb, pphyperb, dskewlap and hyperbFitStart.
Examples
Theta <- c(2,2,2,2)dataVector <- rhyperb(500, Theta)## See how well hyperbFit workshyperbFit(dataVector)hyperbFit(dataVector, plots =TRUE)fit <- hyperbFit(dataVector)par(mfrow = c(1,2))plot(fit, which = c(1,3))## Use nlm instead of defaulthyperbFit(dataVector, method ="nlm")