parkmu {lmomco} | R 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 |
|
checklmom |
Should the |
checkbounds |
Should the L-skew and L-kurtosis boundaries of the distribution be checked. |
alsofitT3 |
Logical when true will add the error term |
alsofitT3T4 |
Logical when true will add the error term |
alsofitT3T4T5 |
Logical when true will add the error term |
justfitT3T4 |
Logical when true will only consider the sum of squares errors for L-skew and L-kurtosis as mathematically shown for |
boundary.tolerance |
A fudge number to help guide how close to the boundaries an arbitrary list of |
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: |
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)