# LambertW Update History

* only complete starting with version 0.2.9.7

## Future TODOs

* **knitr** vignettes will be added in upcoming releases.
* always: add more distributions by default
* eventually convert the Lambert W toolkit to reference classes, rather than S3 classes

## v0.5

Version 0.5 is a long awaited - big - update to the **LambertW** package. 
That's why it's a big bump from 0.2.9.9 to 0.5.

It has lots of improved code, bug fixes, more user friendly function (names) 
and implementation, more explicit error checking and meaningful error messages, etc.

Definitely check out the new manual - it has been reviewed *very* thoroughly.

### New

* code and documentation is now in Roxygen style (thanks **Rd2roxygen** and **roxygen2**!)
* `W()` (and related functions) gained a `branch` argument (see also deprecated functions below).
* `Gaussianize()` gained several new arguments that allow to do the inverse 
  ''DeGaussianization'' as well. See `?Gaussianize` for details.
* several new functions (I probably forgot some):
    * `check_beta()`
    * `check_distname()`
    * `check_tau()`
    * `deriv_W_gamma()`
    * `estimate_beta()`
    * `get_distname_family()`
    * `get_distnames()`
    * `get_gamma_bounds()`
    * `get_initial_tau()`
    * `get_output()` (due to popular demand)
    * `log_W()`
    * `tau2theta()`
* added - this very - `NEWS` file
* added `CITATION` file.  See citation information with `citation("LambertW")`
* added F distribution; called "f", not "F" (to avoid confusion with `FALSE`).
* Use list `theta` as argument in functions instead of `alpha`, `beta`, `gamma`, or
  `delta`. Passing the elements as single arguments still works, but using 
  `theta = list(beta = ..., gamma = ..., delta = ..., alpha = ...)` is preferred.
  In future versions the `alpha`, `beta`, `gamma`, and `delta` arguments will be deprecated.

### Bug fixes, minor changes & minor improvements

* `normfit()`:
    * produces less ink plots
    * ACF plot does not show the non-informative lag 0 estimate (it's always $\hat{\rho}(0) = 1$); 
      improves y-axis scale for higher-order lags.
    * if sample size $>5,000$ it will subsample it so Normality tests still work.
* more error checking and much more meaningful error messages.
* following more closely [Google's R style guide](https://google-styleguide.googlecode.com/svn/trunk/Rguide.xml) (with some of [Hadley Wickham's guide](http://r-pkgs.had.co.nz/style.html) too)
     * use underscore `_` as separator in function names
     * changed assignments from `=` to `<-`
     * changed variable names with underscore `_` to `.` (unless it `_` helps understanding; e.g.,  
       `mu_y` reminds of `mu` with the `y` subscript in LaTeX / pdf)
     * start function names with verbs as much as possible (e.g., `get_initial_theta()` instead of `starting_theta()`; `get_support()` instead of `support()`)
* Removed **nortest** package dependency; *suggest* only. Since `normfit` is often called for visual checks only, I made the normality tests optional. They are called if the **nortest** package is available (`require(nortest) == TRUE`); otherwise
  it just returns `NA`.  This is useful in case users do not have the **nortest** package available 
  in their R installation.
* fixed bug in `qU()` and `pU()`: incorrect usage of standard deviation vs scale in t distribution (`dU()`, and thus log-likelihood was correct).
* `ks.test.t` now uses the scale parameter, rather than standard deviation.  This now 
  allows to test also if degrees of freedom < 2.
* `MLE_LambertW` changed the `estimate.only` argument to `return.estimate.only`.

### Deprecated

Several deprecated functions (see also `?deprecated-function`):

* `beta_names()`: use `get_beta_names()`
* `bounds_theta()`: use `get_theta_bounds()`
* `d1W()` and `d1W_1()`: use `deriv_W(..., branch)`.
* `d1W_delta()`, `d1W_delta_alpha()`: use `deriv_W_delta()` and `deriv_W_delta_alpha()`.
* `get.input()`: use `get_input()`
* `p_1()`: use `p_1m()` 
* `params2theta()`: use `unflatten_theta()`
* `skewness_test()`: use `test_symmetry()`
* `starting_theta()`: use `get_initial_theta()`
* `support()`: use `get_support()`
* `theta2params()`: use `flatten_theta()`
* `vec.norm()`: use `lp_norm()`
* `W_1()`: use `W(z, branch = -1)`; similarly for `W_gamma_1()`
* `W_2delta_alpha()`: use `W_2delta_2alpha()`.
* `W_gamma_1()`: use `W_gamma(..., branch = -1)`.



### Removed

* `G()` since it was never used. If you need it use `G_delta(z, delta = 0)`.
* `MLE_LambertW_new()` and (`MLE_LambertW_new.default()`); `MLE_LambertW` now works also
  for unbounded optimziation.
* `.default` methods for `IGMM` and `MLE_LambertW`. They just work one way on a numeric vector.
* dependency on **maxLik** package for numerical Hessian computation.  Use `optim(..., hessian = TRUE)` instead.
* **Rsolnp**, **numDeriv**, and **nortest** are only suggested packages; not required anymore.

## v0.2.9.9

* changed email to `im@gmge.org`

## v0.2.9.7

### New Features

* SolarFlares dataset

### Bug fixes & minor improvements

* `get.input()` had the wrong variable for `nu > 2` (`u` instead of `uu`)
* `loglik_penalty()` returned `NA` for `0/0` when computing inverse transformation. 
  Replaced this term with equivalent expression avoiding `0/0`.

## v0.2.9.5
- bug fixes to version 0.2.9

## v0.2.9
- bug fixes to version 0.2.6

## v0.2.6
- bug fixes to version 0.2.5

## v0.2.5
- new toolkit version of Lambert W x F distributions
- bug fixes to previous versions

## v0.1.0

* first version submitted March 23, 2009 by Georg M. Goerg (`im@gmge.org`)