- only complete starting with version 0.2.9.7
- knitr more vignettes will be added in upcoming releases.
- always: add more distributions by default
- convert Lambert W toolkit to reference classes, rather than S3 classes
- fixed Rd file link issue with CRAN warnings
- fixed Rcpp issue with CRAN warnings (see RcppCore/Rcpp#1287)
-
added
"weibull"as supported distributions (iedistname="weibull"works for MLE) -
misc print/summary cleanups
-
added reference to github pages for R (https://github.com/gmgeorg/LambertW) and Python (https://github.com/gmgeorg/pylambertw)
- fixes bug on lower/upper bound on
deltaestimates (#3) - update CITATION file to fix misc CRAN checks
- clean up vignette
- minor fix on HTML formatting to be compliant with CRAN.
- renamed
ks.test.ttoks_test_tto avoid CRAN complaining about misuse ofS3method
- fixed link issues with new way of parsing URLs in
Rdfiles for R - updated vignette (added
markdowntoSuggests)
- moved code to https://github.com/gmgeorg/LambertW
- fixed CRAN check
WARNINGS(thanks to Kurt Hornik for help on resolving Rcpp build errors) - fixed zero-division bug in
get_initial_tau()(happened whenmad(y) = 0-- which can happen for data with majority of values fall on the same exact value) - added a introduction vignette
- updated test files to upcoming version of testthat package
- added a couple of unit tests
- removed unused variable in
skewness.cpp
-
rewrote a couple of functions in C++ using the amazing (!) Rcpp package. 3-4x speed up for
Wrelated functions; also forIGMMandMLE_LambertW -
added bootstrap functions for users to easily check if a Lambert W x F distribution with finite mean and variance input makes sense:
bootstrap.LambertW_fitanalyze_convergence
-
added
use.mean.varianceargument to distinguish between mean-variance Lambert W x F distributions and general location-scale Lambert W x F distributions. See also Goerg (2015b). See the help file on these functions for references on why they were included. -
added more unit tests (moving code from "Examples" to unit tests)
- revised the manual to reflect changes in recent R package dependencies
thetaargument in thedpqrfunction becomes the recommended argument to specify the distribution.alpha,beta,gamma,deltanow give warnings and will be deprecated in future versions.- added third order approximation in
gamma_Taylorfor better initial estimates. - added dependency on Rcpp
- removed dependency of moments package, and made Rcpp versions of
skewness()andkurtosis()instead directly in LambertW.
-
moved from gsl to lamW R package: the Lambert W implementation is ~4x faster than for gsl. Needless to say that this will also speed up many computations in the LambertW package. Thank you Avraham Adler for the lamW package.
-
new functions:
deriv_xexp()normalize_by_tau()log_deriv_W()
-
lots of performance improvements (not only due to lamW package). Leads to 2-3x faster estimation via IGMM or MLE overall.
-
added (first iteration) of unit tests using the testthat package
- added recommended packages to
NAMESPACEfollowing new CRAN policies - set
from = 0inplot.LambertW_fitfor scale families with all positive values. get_distname_familyreturns a third logical entrynon.negativeto check whether a distribution is for non-negative random variables (e.g., exponential or Gamma).loglik_penaltyloses the "distname" argument, but gains the "is.non.negative" argument.- replaced all
any(is.na(...))withanyNA(...)(small speedups) - made
deriv_Wfaster and more precise using a log transform first and using mathematial identities of the derivative of W, its derivative, and logarithm. - made "optimize" the default optimizer in
delta_GMMandgamma_GMM(it's about 30% faster than "nlm")
delta_GMM: fordeltatoo large (>1e100) the backtransformed datauwould become negligibly small and numerically a constant (1e-100); thuskurtosis()estimate would beNaN, which resulted in stop ofnlmfunction indelta_GMM. Added anNAcheck and returned large value for objective function, fornlm()to search for a betterdelta. backtransformedget_initial_theta: if initial estimates ofgammaare too extreme, then the backtransformed input data for X containsNA. This caused an error inestimate_beta(). NowNAs are removed before passingx.inittoestimate_beta()log_W(Inf)returnedNA; fixed to returnInf.qLambertW()didn't compute correct quantiles for non-negative distributions (e.g.,"exp"or"gamma") andtype = "s"; replaced now with closed form expressions.
See also ?deprecated-function:
H(): usexexp()instead
datainput toGaussianize()does not have to havecolnames; will be assigned by default ifcolnames(data) = NULL- fixed bug in
mLambertWwhich ignoreddeltavalues passed viatheta
Several deprecated functions (see also ?deprecated-function):
normfit(): usetest_normality()(or shorttest_norm()) instead
- Updated citation with "The Scientific World Journal: Probability and Statistics with Applications in Finance and Economics. Available at https://www.hindawi.com/journals/tswj/2015/909231/"
- added
gridtotest_normality(previously known asnormfit) - added a "^2" to the N(mu, sigma^2) of the legend; now its clear that the displayed value is the standard deviation, not the variance.
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.
- code and documentation is now in Roxygen style (thanks Rd2roxygen and roxygen2!)
W()(and related functions) gained abranchargument (see also deprecated functions below).Gaussianize()gained several new arguments that allow to do the inverse ''DeGaussianization'' as well. See?Gaussianizefor 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 -
NEWSfile - added
CITATIONfile. See citation information withcitation("LambertW") - added F distribution; called "f", not "F" (to avoid confusion with
FALSE). - Use list
thetaas argument in functions instead ofalpha,beta,gamma, ordelta. Passing the elements as single arguments still works, but usingtheta = list(beta = ..., gamma = ..., delta = ..., alpha = ...)is preferred. In future versions thealpha,beta,gamma, anddeltaarguments will be deprecated.
-
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 (with some of Hadley
Wickham's tidyverse guide 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_yreminds ofmuwith theysubscript in LaTeX / pdf) - start function names with verbs as much as possible (e.g.,
get_initial_theta()instead ofstarting_theta();get_support()instead ofsupport())
- use underscore
- Removed nortest package dependency; suggest only. Since
normfitis 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 returnsNA. This is useful in case users do not have the nortest package available in their R installation. - fixed bug in
qU()andpU(): incorrect usage of standard deviation vs scale in t distribution (dU()and thus log-likelihood was correct). -
ks.test.tnow uses the scale parameter, rather than standard deviation. This now allows to test also if degrees of freedom < 2. -
MLE_LambertWchanged theestimate.onlyargument toreturn.estimate.only.
Several deprecated functions (see also ?deprecated-function):
beta_names(): useget_beta_names()bounds_theta(): useget_theta_bounds()d1W()andd1W_1(): usederiv_W(..., branch).d1W_delta(),d1W_delta_alpha(): usederiv_W_delta()andderiv_W_delta_alpha().get.input(): useget_input()p_1(): usep_1m()params2theta(): useunflatten_theta()skewness_test(): usetest_symmetry()starting_theta(): useget_initial_theta()support(): useget_support()theta2params(): useflatten_theta()vec.norm(): uselp_norm()W_1(): useW(z, branch = -1); similarly forW_gamma_1()W_2delta_alpha(): useW_2delta_2alpha().W_gamma_1(): useW_gamma(..., branch = -1).
G()since it was never used. If you need it useG_delta(z, delta = 0).MLE_LambertW_new()and (MLE_LambertW_new.default());MLE_LambertWnow works also for unbounded optimziation..defaultmethods forIGMMandMLE_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.
- changed email to
im@gmge.org
- SolarFlares dataset
get.input()had the wrong variable fornu > 2(uinstead ofuu)loglik_penalty()returnedNAfor0/0when computing inverse transformation. Replaced this term with equivalent expression avoiding0/0.
- bug fixes to version 0.2.9
- bug fixes to version 0.2.6
- bug fixes to version 0.2.5
- new toolkit version of Lambert W x F distributions
- bug fixes to previous versions
- first version submitted March 23, 2009 by Georg M. Goerg (
im@gmge.org)