Changelog
Source:NEWS.md
gkwdist 1.1.1
Major Refactoring Release
This release represents a comprehensive refactoring of the entire package codebase, focusing on numerical stability, code consistency, and maintainability.
C++ Backend Overhaul
-
Unified utility functions: Introduced
utils.hheader providing numerically stable implementations of critical functions:-
log1mexp(): Stable computation of log(1 - exp(x)) using Mächler (2012) methodology -
log1pexp(): Overflow-protected computation of log(1 + exp(x)) -
safe_log(),safe_exp(),safe_pow(): Protected arithmetic operations with graceful handling of edge cases - Vectorized versions (
vec_safe_log,vec_log1mexp, etc.) for efficient array operations
-
Consistent parameter validation: All distribution families now use dedicated parameter checkers (
check_pars(),check_kw_pars(),check_ekw_pars(), etc.) that properly handle NaN, Inf, and boundary conditions.-
Complete documentation: All C++ source files now include comprehensive Doxygen-style documentation headers describing:
- Mathematical formulas for PDF, CDF, quantile, and random generation
- Parameter constraints and special cases
- Numerical stability considerations
- Relationship to parent GKw distribution
Bug Fixes
Fixed critical bug in
qgkw(): Corrected logic error wherelower_tailtransformation was incorrectly applied whenlog_p = TRUE. The probability is now properly converted to linear scale before tail adjustment.Fixed gradient calculation in
grkkw(): Resolved issue wherelog_zwas not recomputed after clampingzto minimum threshold, causing corrupted gradient values near boundaries.Fixed Hessian calculation in
hsmc(): Corrected sign errors and formula for the lambda component of the Hessian matrix for the Beta-Power/McDonald distribution.Fixed gradient signs in
grmc(): Ensured consistent computation of log-likelihood gradient before negation for optimization.
Code Quality Improvements
Eliminated unused variables: Removed declared but unused constants (
exp_threshold) and intermediate variables across all distribution files.Removed redundant calculations: Streamlined computations, notably in
pgkw()where logarithm was computed twice for the same quantity.Simplified parameter recycling: Replaced double-modulo indexing pattern (
idx = i % k; vec[idx % vec.n_elem]) with direct single-modulo access (vec[i % vec.n_elem]) in random generation functions.Standardized function signatures: All distribution functions now follow consistent patterns for parameter order, validation, and return value handling.
R Wrapper Layer
-
Complete separation of R and C++ interfaces: All exported R functions now serve as wrappers around internal C++ implementations (
.dgkw_cpp,.pgkw_cpp, etc.), providing:- Enhanced input validation with informative error messages
- Consistent argument checking across all distribution families
- Proper NA/NaN propagation
- Documentation accessible via standard R help system
Distribution Families
All seven distribution families have been refactored with identical improvements:
| Distribution | Parameters | File |
|---|---|---|
| Generalized Kumaraswamy (GKw) | α, β, γ, δ, λ | gkw.cpp |
| Kumaraswamy-Kumaraswamy (KKw) | α, β, δ, λ | kkw.cpp |
| Beta-Kumaraswamy (BKw) | α, β, γ, δ | bkw.cpp |
| Exponentiated Kumaraswamy (EKw) | α, β, λ | ekw.cpp |
| Beta-Power/McDonald (BP/Mc) | γ, δ, λ | bpmc.cpp |
| Kumaraswamy (Kw) | α, β | kw.cpp |
| Beta (GKw-style) | γ, δ | beta.cpp |
Each family includes: density (d*), distribution (p*), quantile (q*), random generation (r*), negative log-likelihood (ll*), gradient (gr*), and Hessian (hs*) functions.
gkwdist 1.0.5
Documentation Improvements
-
Enhanced Examples for Likelihood Functions: All
ll*,gr*, andhs*functions now include comprehensive examples demonstrating:- Maximum likelihood estimation with analytical gradients
- Univariate profile likelihoods with confidence thresholds
- 2D likelihood surfaces with confidence regions (90%, 95%, 99%)
- Confidence ellipses with marginal intervals for parameter pairs
- Numerical vs analytical derivative verification
- Likelihood ratio tests and score tests
-
Professional Visualization Standards:
- Consistent color scheme across all examples
- Grid-adaptive algorithms for computational efficiency
- Base R only - no external dependencies required
Complete Coverage: Enhanced documentation for all distribution families (Kw, EKw, KKw, GKw) covering 2 to 5 parameters
Theoretical References: Documentation cites foundational work by Carrasco et al. (2010), Jones (2009), Kumaraswamy (1980), and standard inference theory from Casella & Berger (2002)
gkwdist 1.0.1
Major Improvements
Enhanced gkwgetstartvalues() Function
-
NEW: Added
familyparameter to support all distribution families- Automatically returns correct number of parameters for each family
- Family-specific initial value strategies for better convergence
- Supported families:
"gkw","bkw","kkw","ekw","mc","kw","beta" - Case-insensitive family names for user convenience
Documentation Enhancements
-
README.md: Complete rewrite with mathematical rigor
- All LaTeX formulas corrected and verified for proper rendering
- Eight comprehensive examples using
optim()with analytical gradients - Corrected function signatures: all
ll*(),gr*(), andhs*()functions use(par, data)signature - Added performance benchmarks demonstrating 10-50× speedup with C++ implementation
- Hierarchical structure diagram for all distribution families
- Model selection workflow and practical guidelines
- Removed all references to deprecated
gkwfit()function
Bug Fixes
- Fixed function call signatures in all README examples to match actual implementation
- Corrected parameter passing in optimization examples (now consistently use
(par, data)) - Fixed LaTeX rendering issues with
\left/\rightdelimiters in GitHub Markdown
Testing
-
NEW: Comprehensive test suite using
testthat- 100+ tests covering all exported functions
- Tests for all 7 distribution families (GKw, BKw, KKw, EKw, MC, Kw, Beta)
- PDF, CDF, quantile, and random generation tests
- Log-likelihood, gradient, and Hessian validation
- Parameter recovery tests with MLE
- Edge cases and boundary condition handling
- Integration tests for PDF-CDF consistency
Performance
- All functions implemented in C++ for maximum computational efficiency
- Analytical derivatives (gradient and Hessian) provide exact computations
- Optimized numerical stability for extreme parameter values
Notes
- This is the initial CRAN submission
- Package focuses exclusively on distribution functions (no high-level fitting interface)
- Companion package
gkwregprovides regression modeling capabilities - All user-facing functions maintain backward compatibility
- C++ implementation uses RcppArmadillo for linear algebra operations
- Analytical functions use robust log-scale computations to prevent overflow/underflow
- Random generation uses inverse CDF method where closed-form solutions exist
gkwdist 0.1.0
New Features
- Initial CRAN release
- Generalized Kumaraswamy distribution (5 parameters)
- Six nested sub-families: Beta, Kumaraswamy, Exponentiated-Kumaraswamy, Kumaraswamy-Kumaraswamy, Beta-Kumaraswamy, and McDonald distributions
- Complete set of distribution functions (d/p/q/r)
- Log-likelihood, gradient, and Hessian functions for all families