Fits a variance gamma 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.
vgFit(x, freq = NULL, breaks = NULL, paramStart = NULL,
startMethod = "Nelder-Mead", startValues = "SL",
method = "Nelder-Mead", hessian = FALSE,
plots = FALSE, printOut = FALSE,
controlBFGS = list(maxit = 200),
controlNM = list(maxit = 1000), maxitNLM = 1500, ...)
# S3 method for vgFit
print(x, digits = max(3, getOption("digits") - 3), ...)
# S3 method for vgFit
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(),
...)
A list with components:
A vector giving the maximum likelihood estimate of
param, as (c,sigma,theta,nu)
.
The value of the maximised log-likelihood.
If hessian
was set to TRUE
, the value
of the hessian. Not present otherwise.
Optimisation method used.
Convergence code. See the relevant documentation (either
optim
or nlm
) for details on
convergence.
Number of iterations of optimisation routine.
The data used to fit the hyperbolic distribution.
A character string with the actual obs
argument
name.
Starting value of param returned by call to
vgFitStart
.
Descriptive name for the method finding start values.
Acronym for the method of finding start values.
The cell boundaries found by a call to
hist
.
The cell midpoints found by a call to
hist
.
The estimated density found by a call to
hist
.
Data vector for vgFit
. Object of class
"vgFit"
for print.vgFit
and plot.vgFit
.
A vector of weights with length equal to length(x)
.
Breaks for histogram, defaults to those generated by
hist(x, right = FALSE, plot = FALSE)
.
A user specified starting parameter vector param taking
the form c(vgC,sigma,theta,nu)
.
Method used by vgFitStart
in calls to
optim
, default is "Nelder-Mead". See Details.
Code giving the method of determining starting values for finding the maximum likelihood estimate of param, default method is "SL". See Details.
Different optimisation methods to consider, default is "Nelder-Mead". See Details.
Logical. If TRUE
the value of the hessian is
returned.
Logical. If FALSE
suppresses printing of the
histogram, log-histogram, Q-Q plot and P-P plot.
Logical. If FALSE
suppresses printing of
results of fitting.
A list of control parameters for optim
when using
the "BFGS"
optimisation.
A list of control parameters for optim
when using the "Nelder-Mead"
optimisation.
A positive integer specifying the maximum number of
iterations when using the "nlm"
optimisation.
Desired number of digits when the object is printed.
If a subset of the plots is required, specify a subset of
the numbers 1:4
.
Titles to appear above the plots.
Logical. If TRUE
, the user is asked before
each plot, see par(ask = .)
.
Passes arguments to par
, hist
,
logHist
, qqhyperb
and pphyperb
.
David Scott d.scott@auckland.ac.nz, Christine Yang Dong c.dong@auckland.ac.nz
startMethod
can be either "BFGS"
or
"Nelder-Mead"
.
startValues
can be one of the following:
"US"
User-supplied.
"SL"
Based on a fitted skew-Laplace distribution.
"MoM"
Method of moments.
For the details concerning the use of paramStart
,
startMethod
, and startValues
, see
vgFitStart
.
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 = "Nelder-Mead"
is used, very rarely, it would return an
error message of "error in optim(paramStart,...)", use method = "BFGS"
or method = "nlm"
instead in that case.
When method = "nlm"
is used, warnings may be produced. These do
not appear to be a problem.
Seneta, E. (2004). Fitting the variance-gamma model to financial data. J. Appl. Prob., 41A:177--187.
param <- c(0,0.5,0,0.5)
dataVector <- rvg(500, param = param)
## See how well vgFit works
vgFit(dataVector)
vgFit(dataVector, plots = TRUE)
fit <- vgFit(dataVector)
par(mfrow = c(1,2))
plot(fit, which = c(1,3))
## Use nlm instead of default
param <- c(0,0.5,0,0.5)
dataVector <- rvg(500, param = param)
vgFit(dataVector, method = "nlm", hessian = TRUE)
## Use BFGS instead of deault
param <- c(0,0.5,0,0.5)
dataVector <- rvg(500, param = param)
vgFit(dataVector, method = "BFGS", hessian = TRUE)
Run the code above in your browser using DataLab