DistributionFits {fBasics}R Documentation

Parameter Fit of a Distribution

Description

A collection and description of maximum likelihood estimators to fit the parameters of a distribution. Included are estimators for the Student-t, for the generalized hyperbolic hyperbolic, for the normal inverse Gaussian, and for empirical distributions.

The functions are:

tFit MLE parameter fit for a Student t-distribution,
ghFit MLE parameter fit for a generalized hyperbolic distribution,
hypFit MLE parameter fit for a hyperbolic distribution,
nigFit MLE parameter fit for a normal inverse Gaussian distribution,
ssdFit smoothing spline estimation ,
print.ssd S3 print method for objects returned from 'ssdFit'.

Usage

tFit(x, df = 4, doplot = TRUE, span = "auto", title = NULL, 
        description = NULL, ...)
        
ghFit(x, alpha = 1, beta = 0, delta = 1, mu = 0, lambda = 1, doplot = TRUE, 
    span = "auto", title = NULL, description = NULL, ...)     
hypFit(x, alpha = 1, beta = 0, delta = 1, mu = 0, doplot = TRUE, 
    span = "auto", title = NULL, description = NULL, ...)
nigFit(x, alpha = 1, beta = 0, delta = 1, mu = 0, doplot = TRUE, 
    span = "auto", title = NULL, description = NULL, ...)
   
## S3 method for class 'fDISTFIT':
print(x, ...)
 
ssdFit(x, alpha = 1.4, seed = NULL, title = NULL, description = NULL)

## S3 method for class 'ssd':
print(x, ...)

Arguments

alpha, beta, delta, mu, lambda [ssdFit] -
alpha is the parameter defining cross-validation score for smoothing parameter selection.
[hypFit][nigFit][hypStats] -
shape parameter alpha; skewness parameter beta with 0 < |beta| < alpha; scale parameter delta with delta <= 0; location parameter mu; lambda parameter lambda by default 1.
description a character string which allows for a brief description.
df [tFit] -
the number of degrees of freedom for the Student distribution, df > 2, maybe non-integer. By default a value of 4 is assumed.
doplot [tFit][hypFit][nigFit] -
a logical. Should a plot be displayed?
seed [ssdFit] -
Seed to be used for the random generation of "knots."
span x-coordinates for the plot, by default 100 values automatically selected and ranging between the 0.001, and 0.999 quantiles. Alternatively, you can specify the range by an expression like span=seq(min, max, times = n), where, min and max are the left and right endpoints of the range, and n gives the number of the intermediate points.
title a character string which allows for a project title.
x [*Fit] -
a numeric vector.
[print.ssd] -
an S3 object of class "ssd" as returned from the function ssdFit.
... parameters parsed to the function density and to the print.ssd function.

Details

Maximum Likelihood Estimation:
The function nlm is used to minimize the "negative" maximum log-likelihood function. nlm carries out a minimization using a Newton-type algorithm.

Spline Smoothed Distribution:
Estimates are done using smoothing spline ANOVA models with cubic spline marginals for numerical variables.

Value

The functions tFit, hypFit and nigFit return a list with the following components:

estimate the point at which the maximum value of the log liklihood function is obtained.
minimum the value of the estimated maximum, i.e. the value of the log liklihood function.
code an integer indicating why the optimization process terminated.
1: relative gradient is close to zero, current iterate is probably solution;
2: successive iterates within tolerance, current iterate is probably solution;
3: last global step failed to locate a point lower than estimate. Either estimate is an approximate local minimum of the function or steptol is too small;
4: iteration limit exceeded;
5: maximum step size stepmax exceeded five consecutive times. Either the function is unbounded below, becomes asymptotic to a finite value from above in some direction or stepmax is too small.
gradient the gradient at the estimated maximum.
steps number of function calls.


The function ssdFit returns an S3 object of class "ssd" which contains as information the parameters to compute density, probability, quantiles, and random deviates for the functions [dpqr]ssd.

Note

The function ssdFit does not implement the full functionality provided by R's contributed package "gss". Only the "cubic" spline method is provided and most of the optional arguments are set to default values. Since the original "gss" package does not interfere with Rmetrics you can load it in parallel, and use the function ssden in place of ssdFit.

It's worth to note that the "gss" package does not work under SPlus, but the modified and adapted functions ssdFit and *ssd can be used.

Author(s)

Chong Gu for the code from R's contributed package 'gss',
Diethelm Wuertz for the Rmetrics R-port.

See Also

dt, dhyp, dnig, nlm.

Examples

## SOURCE("fBasics.A0-SPlusCompatibility")
## SOURCE("fBasics.B1-HyperbolicDistribution")
## SOURCE("fBasics.B3-SmoothedSplineDistribution")
## SOURCE("fBasics.B4-DistributionFits")

## tFit -
   xmpBasics("\nStart: MLE Fit to Student's t Density > ")
   par(mfrow = c(2,2), cex = 0.7, err = -1)
   options(warn = -1)
   # Simulated random variates t(4):
   set.seed(1953)
   s = rt(n = 1000, df = 4) 
   # Note, this may take some time.
   # Starting vector:
   df.startvalue = 2*var(s)/(var(s)-1)
   tFit(s, df.startvalue, doplot = TRUE)
   
## ghFit -

## hypFit -
   xmpBasics("\nNext: MLE Fit to Hyperbolic Density > ")
   # Simulated random variates HYP(1, 0.3, 1, -1):
   set.seed(1953)
   s = rhyp(n = 1000, alpha = 1.5, beta = 0.3, delta = 0.5, mu = -1) 
   # Note, this may take some time.
   # Starting vector (1, 0, 1, mean(s)):
   hypFit(s, alpha = 1, beta = 0, delta = 1, mu = mean(s), 
     doplot = TRUE, width = 0.5)
   
## nigFit -
   xmpBasics("\nNext: MLE Fit to Normal Inverse Gaussian Density > ")
   # Simulated random variates HYP(1.5, 0.3, 0.5, -1.0):
   set.seed(1953)
   s = rnig(n = 1000, alpha = 1.5, beta = 0.3, delta = 0.5, mu = -1.0) 
   # Note, this may take some time.
   # Starting vector (1, 0, 1, mean(s)):
   nigFit(s, alpha = 1, beta = 0, delta = 1, mu = mean(s), doplot = TRUE)
   
## ssdFit -
   xmpBasics("\nNext: Smoothed Spline Density > ")
   set.seed(1953)
   x = rnorm(1000)
   ssdFit(x)

[Package fBasics version 201.10060 Index]