parkmu: Estimate the Parameters of the Kappa-Mu Distribution

parkmuR Documentation

Estimate the Parameters of the Kappa-Mu Distribution

Description

This function estimates the parameters (\nu and \alpha) of the Kappa-Mu (\kappa:\mu) distribution given the L-moments of the data in an L-moment object such as that returned by lmoms. The relations between distribution parameters and L-moments are seen under lmomkmu.

The basic approach for parameter optimization is to extract initial guesses for the parameters from the table KMU_lmompara_bykappa in the .lmomcohash environment. The parameters having a minimum Euclidean error as controlled by three arguments are used for initial guesses in a Nelder-Mead simplex multidimensional optimization using the R function optim and default arguments.

Limited testing indicates that of the “error term controlling options” that the default values as shown in the Usage section seem to provide superior performance in terms of recovering the a priori known parameters in experiments. It seems that only Euclidean optimization using L-skew and L-kurtosis is preferable, but experiments show the general algorithm to be slow.

Usage

parkmu(lmom, checklmom=TRUE, checkbounds=TRUE,
         alsofitT3=FALSE, alsofitT3T4=FALSE, alsofitT3T4T5=FALSE,
         justfitT3T4=TRUE, boundary.tolerance=0.001,
         verbose=FALSE, trackoptim=TRUE, ...)

Arguments

lmom

An L-moment object created by lmoms or pwm2lmom.

checklmom

Should the lmom be checked for validity using the are.lmom.valid function. Normally this should be left as the default and it is very unlikely that the L-moments will not be viable (particularly in the \tau_4 and \tau_3 inequality).

checkbounds

Should the L-skew and L-kurtosis boundaries of the distribution be checked.

alsofitT3

Logical when true will add the error term (\hat\tau_3 - \tau_3)^2 to the sum of square errors for the mean and L-CV.

alsofitT3T4

Logical when true will add the error term (\hat\tau_3 - \tau_3)^2 + (\hat\tau_4 - \tau_4)^2 to the sum of square errors for the mean and L-CV.

alsofitT3T4T5

Logical when true will add the error term (\hat\tau_3 - \tau_3)^2 + (\hat\tau_4 - \tau_4)^2 + (\hat\tau_5 - \tau_5)^2 to the sum of square errors for the mean and L-CV.

justfitT3T4

Logical when true will only consider the sum of squares errors for L-skew and L-kurtosis as mathematically shown for alsofitT3T4.

boundary.tolerance

A fudge number to help guide how close to the boundaries an arbitrary list of \tau_3 and \tau_4 can be to consider them formally in or out of the attainable \{\tau_3, \tau_4\} domain.

verbose

A logical to control a level of diagnostic output.

trackoptim

A logical to control specific messaging through each iteration of the objective function.

...

Other arguments to pass.

Value

An R list is returned.

type

The type of distribution: kmu.

para

The parameters of the distribution.

source

The source of the parameters: “parkmu”.

Author(s)

W.H. Asquith

References

Yacoub, M.D., 2007, The kappa-mu distribution and the eta-mu distribution: IEEE Antennas and Propagation Magazine, v. 49, no. 1, pp. 68–81

See Also

lmomkmu, cdfkmu, pdfkmu, quakmu

Examples

## Not run: 
   par1 <- vec2par(c(0.7, 0.2), type="kmu")
   lmr1 <- lmomkmu(par1, nmom=4)
   par2.1 <- parkmu(lmr1, alsofitT3=TRUE,   verbose=TRUE, trackoptim=TRUE)
   par2.1$para
   par2.2 <- parkmu(lmr1, alsofitT3T4=TRUE, verbose=TRUE, trackoptim=TRUE)
   par2.2$para
   par2.3 <- parkmu(lmr1, alsofitT3=FALSE,  verbose=TRUE, trackoptim=TRUE)
   par2.3$para
   par2.4 <- parkmu(lmr1, justfitT3T4=TRUE, verbose=TRUE, trackoptim=TRUE)
   par2.4$para
   x <- seq(0,3,by=.01)
   plot(x,  pdfkmu(x, par1), type="l", lwd=6, col=8, ylim=c(0,5))
   lines(x, pdfkmu(x, par2.1), col=2, lwd=2, lty=2)
   lines(x, pdfkmu(x, par2.2), col=4)
   lines(x, pdfkmu(x, par2.3), col=3, lty=3, lwd=2)
   lines(x, pdfkmu(x, par2.4), col=5, lty=2, lwd=2)

## End(Not run)
## Not run: 
   par1 <- vec2par(c(1, 0.65), type="kmu")
   lmr1 <- lmomkmu(par1, nmom=4)
   par2.1 <- parkmu(lmr1, alsofitT3=TRUE,   verbose=TRUE, trackoptim=TRUE)
   par2.1$para # eta=1.0  mu=0.65
   par2.2 <- parkmu(lmr1, alsofitT3T4=TRUE, verbose=TRUE, trackoptim=TRUE)
   par2.2$para # eta=1.0  mu=0.65
   par2.3 <- parkmu(lmr1, alsofitT3=FALSE,  verbose=TRUE, trackoptim=TRUE)
   par2.3$para # eta=8.5779  mu=0.2060
   par2.4 <- parkmu(lmr1, justfitT3T4=TRUE, verbose=TRUE, trackoptim=TRUE)
   par2.4$para # eta=1.0 mu=0.65
   x <- seq(0,3,by=.01)
   plot(x,  pdfkmu(x, par1), type="l", lwd=6, col=8, ylim=c(0,1))
   lines(x, pdfkmu(x, par2.1), col=2, lwd=2, lty=2)
   lines(x, pdfkmu(x, par2.2), col=4)
   lines(x, pdfkmu(x, par2.3), col=3, lty=3, lwd=2)
   lines(x, pdfkmu(x, par2.4), col=5, lty=2, lwd=2)
   lines(x, dlmomco(x, lmom2par(lmr1, type="gam")),  lwd=2, col=2)
   lines(x, dlmomco(x, lmom2par(lmr1, type="ray")),  lwd=2, col=2, lty=2)
   lines(x, dlmomco(x, lmom2par(lmr1, type="rice")), lwd=2, col=4, lty=2)

## End(Not run)

lmomco documentation built on Aug. 30, 2023, 5:10 p.m.