Releases: queelius/compositional.mle
Releases · queelius/compositional.mle
Release list
v1.0.2 - CRAN Submission
CRAN Submission Release
Changes since v1.0.1
Bug Fixes:
- Fix
race()parallel execution withfuturepackage - worker processes now correctly loadcompositional.mle
Testing:
- Add unit tests for
race(parallel = TRUE)functionality
Build:
- Add
docs/to.Rbuildignoreto exclude pkgdown site from package tarball
R CMD check
0 errors ✔ | 0 warnings ✔ | 0 notes ✔
v1.0.1 - CRAN Submission
CRAN Submission Release
Changes since v1.0.0
Code Quality Improvements:
- Remove unused
mle_config*functions (dead code cleanup) - Fix CRAN policy: wrap
message()ininteractive()checks - Add
@returntags to all print methods - Add
@examplesto utility functions - Add
@seealsocross-references to solvers
Bug Fixes:
- Fix input validation for
mle_trace(every)parameter - Fix unsafe float comparison in backtracking line search
- Add solver names to error messages for better debugging
Style:
- Fix line length violations (>80 chars)
- Fix indentation issues
R CMD check
0 errors ✔ | 0 warnings ✔ | 1 note (optional 'future' package)
compositional.mle v0.2.0
Major Refactoring: Composable MLE Solvers
This release renames the package from numerical.mle to compositional.mle and introduces a new composable API based on SICP principles.
Key Changes
- Factory Pattern: Solvers are now factory functions that return solver functions with uniform signature:
(problem, theta0, trace) -> result - Composition Operators:
%>>%- Sequential chaining (coarse-to-fine strategies)%|%- Parallel racing (pick best result)with_restarts()- Multiple random starting pointsunless_converged()- Conditional refinement
- Problem Specification: New
mle_problem()separates the statistical problem from optimization strategy - New Solvers:
bfgs(),lbfgsb(),nelder_mead(),random_search(),fisher_scoring() - Tracing:
mle_trace()for configurable iteration diagnostics - Transformers:
with_subsampling(),with_penalty()(L1/L2/elastic net)
Example
# Define problem once
problem <- mle_problem(loglike, score, constraint = mle_constraint(...))
# Create composable strategy
strategy <- grid_search(n = 5) %>>% gradient_ascent() %>>% newton_raphson()
# Or race different methods
strategy <- gradient_ascent() %|% bfgs() %|% nelder_mead()
# Solve
result <- strategy(problem, theta0)Testing
All 255 tests passing.
v0.1.0 - Initial Release
numerical.mle v0.1.0
Initial release of the numerical.mle R package for numerical maximum likelihood estimation.
Features
Configuration System
mle_config()- Base configuration for convergence criteriamle_config_gradient()- Gradient descent with fixed learning ratemle_config_linesearch()- Adaptive step size via backtracking line searchmle_constraint()- Domain constraints with support checking and projection
Core Solvers
mle_gradient_ascent()- First-order gradient-based optimizationmle_newton_raphson()- Second-order optimization using Fisher information
Meta-Solvers
mle_grid_search()- Exhaustive grid search over parameter spacemle_random_restart()- Multiple random initializations for global optimization
Function Transformers
with_subsampling()- Stochastic gradient ascent via mini-batchingwith_penalty()- Regularization with L1, L2, or elastic net penalties
Convenience Wrappers
mle_grad()- Quick gradient ascent with sensible defaultsmle_nr()- Quick Newton-Raphson with sensible defaultswith_constraint()- Apply constraints to any solver
Installation
# Install from GitHub
devtools::install_github("queelius/numerical.mle")Documentation
Full documentation available at: https://queelius.github.io/numerical.mle/