Learn R Programming

lmomco (version 2.4.14)

paremu: Estimate the Parameters of the Eta-Mu Distribution

Description

This function estimates the parameters (\(\eta\) and \(\alpha\)) of the Eta-Mu (\(\eta:\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 lmomemu.

The basic approach for parameter optimization is to extract initial guesses for the parameters from the table EMU_lmompara_byeta 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

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

Value

An R

list is returned.

type

The type of distribution: emu.

para

The parameters of the distribution.

source

The source of the parameters: “paremu”.

Arguments

lmom

An L-moment object created by lmoms or vec2lmom.

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.

Author

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

lmomemu, cdfemu, pdfemu, quaemu

Examples

Run this code
if (FALSE) {
   par1 <- vec2par(c(.3, 2.15), type="emu")
   lmr1 <- lmomemu(par1, nmom=4)
   par2.1 <- paremu(lmr1, alsofitT3=FALSE, verbose=TRUE, trackoptim=TRUE)
   par2.1$para # correct parameters not found: eta=0.889 mu=3.54
   par2.2 <- paremu(lmr1, alsofitT3=TRUE, verbose=TRUE, trackoptim=TRUE)
   par2.2$para # correct parameters not found: eta=0.9063 mu=3.607
   par2.3 <- paremu(lmr1, alsofitT3T4=TRUE,  verbose=TRUE, trackoptim=TRUE)
   par2.3$para # correct parameters not found: eta=0.910 mu=3.62
   par2.4 <- paremu(lmr1, justfitT3T4=TRUE,  verbose=TRUE, trackoptim=TRUE)
   par2.4$para # correct parameters not found: eta=0.559 mu=3.69

   x <- seq(0,3,by=.01)
   plot(x,  pdfemu(x, par1), type="l", lwd=6, col=8, ylim=c(0,2))
   lines(x, pdfemu(x, par2.1), col=2, lwd=2, lty=2)
   lines(x, pdfemu(x, par2.2), col=4)
   lines(x, pdfemu(x, par2.3), col=3, lty=3, lwd=2)
   lines(x, pdfemu(x, par2.4), col=5, lty=2, lwd=2)
}

Run the code above in your browser using DataLab