pargld | R Documentation |

This function estimates the parameters of the Generalized Lambda distribution given the L-moments of the data in an ordinary L-moment object (`lmoms`

) or a trimmed L-moment object (`TLmoms`

for `t=1`

). The relations between distribution parameters and L-moments are seen under `lmomgld`

. There are no simple expressions for the parameters in terms of the L-moments. Consider that multiple parameter solutions are possible with the Generalized Lambda so some expertise in the distribution and other aspects are needed.

pargld(lmom, verbose=FALSE, initkh=NULL, eps=1e-3, aux=c("tau5", "tau6"), checklmom=TRUE, ...)

`lmom` |
An L-moment object created by |

`verbose` |
A logical switch on the verbosity of output. Default is |

`initkh` |
A vector of the initial guess of the |

`eps` |
A small term or threshold for which the square root of the sum of square errors in |

`aux` |
Control the algorithm to order solutions based on smallest error in |

`checklmom` |
Should the |

`...` |
Other arguments to pass. |

Karian and Dudewicz (2000) summarize six regions of the *κ* and *h* space in which the Generalized Lambda distribution is valid for suitably choosen *α*. Numerical experimentation suggestions that the L-moments are not valid in Regions 1 and 2. However, initial guesses of the parameters within each region are used with numerous separate `optim`

(the **R** function) efforts to perform a least sum-of-square errors on the following objective function

*(\hat{τ}_3 - \tilde{τ}_3)^2 + (\hat{τ}_4 - \tilde{τ}_4)^2 \mbox{, }*

where *\hat{τ}_r* is the L-moment ratio of the data, *\tilde{τ}_r* is the estimated value of the L-moment ratio for the fitted distribution *κ* and *h* and *τ_r* is the actual value of the L-moment ratio.

For each optimization, a check on the validity of the parameters so produced is made—are the parameters consistent with the Generalized Lambda distribution? A second check is made on the validity of *τ_3* and *τ_4*. If both validity checks return `TRUE`

then the optimization is retained if its sum-of-square error is less than the previous optimum value. It is possible for a given solution to be found outside the starting region of the initial guesses. The surface generated by the *τ_3* and *τ_4* equations seen in `lmomgld`

is complex–different initial guesses within a given region can yield what appear to be radically different *κ* and *h*. Users are encouraged to “play” with alternative solutions (see the `verbose`

argument). A quick double check on the L-moments from the solved parameters using `lmomgld`

is encouraged as well. Karvanen and others (2002, eq. 25) provide an equation expressing *κ* and *h* as equal (a symmetrical Generalized Lambda distribution) in terms of *τ_4* and suggest that the equation be used to determine initial values for the parameters. The Karvanen equation is used on a semi-experimental basis for the final optimization attempt by `pargld`

.

An **R** `list`

is returned if `result='best'`

.

`type` |
The type of distribution: |

`para` |
The parameters of the distribution. |

`delTau5` |
Difference between the |

`error` |
Smallest sum of square error found. |

`source` |
The source of the parameters: “pargld”. |

`rest` |
An |

The rest of the solutions have the following:

`xi` |
The location parameter of the distribution. |

`alpha` |
The scale parameter of the distribution. |

`kappa` |
The 1st shape parameter of the distribution. |

`h` |
The 2nd shape parameter of the distribution. |

`attempt` |
The attempt number that found valid TL-moments and parameters of GLD. |

`delTau5` |
The absolute difference between |

`error` |
The sum of square error found. |

`initial_k` |
The starting point of the |

`initial_h` |
The starting point of the |

`valid.gld` |
Logical on validity of the GLD— |

`valid.lmr` |
Logical on validity of the L-moments— |

`lowerror` |
Logical on whether error was less than |

This function is a cumbersome method of parameter solution, but years of testing suggest that with supervision and the available options regarding the optimization that reliable parameter estimations result.

W.H. Asquith

W.H. Asquith in Feb. 2006 with a copy of Karian and Dudewicz (2000) and again Feb. 2011.

Asquith, W.H., 2007, L-moments and TL-moments of the generalized lambda distribution: Computational Statistics and Data Analysis, v. 51, no. 9, pp. 4484–4496.

Karvanen, J., Eriksson, J., and Koivunen, V., 2002, Adaptive score functions for maximum likelihood ICA: Journal of VLSI Signal Processing, v. 32, pp. 82–92.

Karian, Z.A., and Dudewicz, E.J., 2000, Fitting statistical distributions—The generalized lambda distribution and generalized bootstrap methods: CRC Press, Boca Raton, FL, 438 p.

`lmomgld`

, `cdfgld`

, `pdfgld`

, `quagld`

, `parTLgld`

## Not run: X <- rgamma(202,2) # simulate a skewed distribution lmr <- lmoms(X) # compute trimmed L-moments PARgld <- pargld(lmr) # fit the GLD F <- pp(X) plot(F,sort(X), col=8, cex=0.25) lines(F, qlmomco(F,PARgld)) # show the best estimate if(! is.null(PARgld$rest)) { #$ n <- length(PARgld$rest$xi) other <- unlist(PARgld$rest[n,1:4]) #$ # show alternative lines(F, qlmomco(F,vec2par(other, type="gld")), col=2) } # Note in the extraction of other solutions that no testing for whether # additional solutions were found is made. Also, it is quite possible # that the other solutions "[n,1:4]" is effectively another numerical # convergence on the primary solution. Some users of this example thus # might not see two separate lines. Users are encouraged to inspect the # rest of the solutions: print(PARgld$rest); #$ # For one run of the above example, the GLD results follow #print(PARgld) #$type #[1] "gld" #$para # xi alpha kappa h #3.144379 2.943327 7.420334 1.050792 #$delTau5 #[1] -0.0367435 #$error #[1] 5.448016e-10 #$source #[1] "pargld" #$rest # xi alpha kappa h attempt delTau5 error #1 3.1446434 2.943469 7.421131671 1.0505370 14 -0.03675376 6.394270e-10 #2 0.4962471 8.794038 0.008295796 0.2283519 4 -0.04602541 8.921139e-10 ## End(Not run) ## Not run: F <- seq(.01,.99,.01) plot(F, qlmomco(F, vec2par(c(3.1446434, 2.943469, 7.4211316, 1.050537), type="gld")), type="l") lines(F,qlmomco(F, vec2par(c(0.4962471, 8.794038, 0.0082958, 0.228352), type="gld"))) ## End(Not run)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.