|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [0.19.0] - 2025-10-03 |
| 4 | + |
| 5 | +### Added |
| 6 | +- Added product distributions expressible via tuples. (Note: Sufficient statistics are locked behind the `experimental` option since their behavior is not certain.) |
| 7 | +- Added `ScaledPrior` and `ShiftedPrior` wrappers. |
| 8 | + |
| 9 | + |
| 10 | +### Changed |
| 11 | +- Updated to Rust 2024 Edition |
| 12 | +- Updated `rand`, `rand_xoshiro`, and `rand_distr` deps. |
| 13 | +- Updated nalgebra. |
| 14 | +- `NormalInvChiSquared`, `NormalGamma`, and `NormalInvGamme` `PpCache` for Gaussian conjugate analysis changed. `ln_pp_with_cache` is much faster. |
| 15 | +- `Gamma` `PpCache` for Poisson conjugate analysis has been optimized. `ln_pp_with_cache` is faster. |
| 16 | +- Fixed some typos. |
| 17 | +- GitHub CI uses nightly since experimental features require nightly rust. |
| 18 | +- `OnceLock` removed on distribution initialization in favor of uniform initialization cost over threads. |
| 19 | +- Reworked `extract_stat` internals. |
| 20 | +- `CDVM` was cleaned up, errors expanded, and parameters made more clear. |
| 21 | +- Von Mises were sped up. |
| 22 | +- `LogSumExp` was fixed when encountering -inf. |
| 23 | +- `NormalInvGamma::ln_pp` was sped up. |
| 24 | +- `NIX` `PpCache` was sped up by 20%. |
| 25 | +- `NiX` Posterior predictive has its speed improved. |
| 26 | + |
3 | 27 | ## [0.18.1] - 2025-02-28 |
4 | 28 |
|
5 | 29 | ### Fixed |
|
49 | 73 |
|
50 | 74 |
|
51 | 75 | ## [0.16.5] - 2024-03-14 |
| 76 | + |
| 77 | +### Changed |
52 | 78 | - Moved repository to GitHub. |
53 | 79 |
|
54 | 80 | ## [0.16.4] - 2024-01-31 |
| 81 | +### Changed |
55 | 82 | - Bump min rust version to 1.72 |
56 | 83 | - Fix bug in `dist::Beta` that sometimes resulted in invalid cache setting |
57 | 84 | `alpha`or `beta`. |
58 | 85 | - Add `set_a` and `set_b` methods to `dist::Uniform` |
59 | 86 |
|
60 | 87 | ## [0.16.3] - 2024-01-23 |
| 88 | + |
| 89 | +### Added |
61 | 90 | - Implement `Variance<f64>`for mixture models whose component distribution type |
62 | 91 | also implements `Variance<f64>` and `Mean<f64>`. |
63 | 92 | - Implement `Variance<f32>`for mixture models whose component distribution type |
64 | 93 | also implements `Variance<f32>` and `Mean<f32>`. |
65 | 94 |
|
66 | 95 | ## [0.16.2] - 2024-01-02 |
| 96 | + |
| 97 | +### Changed |
67 | 98 | - Fix edge case in `misc::logsumexp` that would return `NaN` if the first value |
68 | 99 | in the slice was `-inf`. |
69 | 100 |
|
70 | 101 | ## [0.16.1] - 2023-12-14 |
| 102 | + |
| 103 | +### Changed |
71 | 104 | - Performance improvements in `misc::logsumexp` |
72 | 105 |
|
73 | 106 | ## [0.16.0] - 2023-06-07 |
| 107 | + |
| 108 | +### Changed |
74 | 109 | - Fix bug in `InvGaussianSuffStat` |
| 110 | +- Cache ln(weights) for `Mixture` to improve `ln_f` computation performance |
| 111 | + |
| 112 | +### Added |
75 | 113 | - Add `ln_f_stat` method to `HasSuffStat` trait. This method computes the log |
76 | 114 | likelihood of the data represented by the statistic. |
77 | | -- Un-implement `HasSuffStat<f64>` for `InverseGamma` |
78 | 115 | - Add `InvGammaSuffStat` |
79 | 116 | - Add `BetaSuffStat` |
80 | | -- Cache ln(weights) for `Mixture` to improve `ln_f` computation performance |
| 117 | + |
| 118 | +### Removed |
| 119 | +- Un-implement `HasSuffStat<f64>` for `InverseGamma` |
81 | 120 |
|
82 | 121 | ## [0.15.1] - 2023-05-22 |
| 122 | + |
| 123 | +### Changed |
83 | 124 | - Fix bug in `Empirical::draw` that causes an `index out of bounds error` when |
84 | 125 | the last last bin is drawn. |
85 | 126 |
|
86 | 127 | ## [0.15.0] - 2023-03-07 |
| 128 | + |
| 129 | +### Changed |
87 | 130 | - All structs and enums use `snake_case` naming. |
88 | 131 | - Dependency updates (thanks @bsull). |
89 | 132 | - Entropy impl for Bernoulli Mixuture. |
|
93 | 136 | - Improve CI. |
94 | 137 |
|
95 | 138 | ## [0.14.4] - 2022-02-16 |
| 139 | + |
| 140 | +### Changed |
96 | 141 | - re-export nalgebra (flag `arraydist`) |
97 | 142 | - add `reparameterize` method to `process::gaussian::Kernel`, which will |
98 | 143 | replace `from_parmeters` in 0.15.0 |
99 | 144 | - Implement `Error` for `NormalInvGammaError` and `NormalInvChiSquaredError` |
100 | 145 |
|
101 | 146 | ## [0.14.3] - 2022-02-16 |
| 147 | + |
| 148 | +### Removed |
102 | 149 | - Remove dependency on peroxide |
103 | 150 |
|
104 | 151 | ## [0.14.2] - 2022-01-31 |
| 152 | + |
| 153 | +### Changed |
105 | 154 | - Fix some incorrect documentation |
106 | 155 | - Pass `--all-features` to docs.rs builds |
107 | 156 |
|
108 | 157 | ## [0.14.1] - 2022-01-21 |
| 158 | + |
| 159 | +### Changed |
109 | 160 | - Fix bug in computation of entropies for continuous mixture models |
110 | 161 |
|
111 | 162 | ## [0.14.0] - 2022-01-05 |
| 163 | + |
| 164 | +### Changed |
112 | 165 | - Fix typo: `CategoricalError::EmptyWights` to `CategoricalError::EmptyWeights` |
113 | 166 | - Allow `Categorical::from_ln_weights` to accept zero (-Inf) weights |
114 | 167 | - Update `lru` crate to 0.7 due to security vulnerability in 0.6.6 |
115 | 168 |
|
116 | 169 | ## [0.13.1] - 2021-08-14 |
| 170 | + |
| 171 | +### Changed |
117 | 172 | - When using `dist::Gamma` to draw a `dist::Poisson`, the Poisson rate |
118 | 173 | parameter is shifted to `f64::EPSILON` in the event of underflow. |
119 | 174 |
|
120 | 175 | ## [0.13.0] - 2021-07-15 |
| 176 | + |
| 177 | +### Changed |
121 | 178 | - Clippy lints |
122 | 179 | - Use `&'a [T]` instead of `&'a Vec<T>` in `DataOrSuffStat` |
123 | 180 | - Use `&[T]` instead of `&Vec<T>` in `GewekeTester` |
|
131 | 188 | `Mixture::combine` where one or more of the inputs was an empty mixture |
132 | 189 |
|
133 | 190 | ## [0.12.0] - 2021-05-05 |
| 191 | + |
| 192 | +### Added |
134 | 193 | - Added Inverse X^2 distribution |
135 | 194 | - Added Scaled Inverse X^2 distribution (`InvChiSquared`) |
136 | 195 | - Added Inverse Gaussian distribution |
|
140 | 199 | - Added Inverse X^2 distribution (`InvChiSquared`) |
141 | 200 | - Implemented `From` instead of `Into` for sufficient statistic converters to |
142 | 201 | allow the more explicit/ergonomic `From` conversions. |
| 202 | +- Added Gaussian prior geweke tests and example |
| 203 | +- More robust dpgmm example -- can use different priors |
| 204 | + |
| 205 | +### Changed |
143 | 206 | - Improved some error messages in `NormalGamma` |
144 | 207 | - Caching of a normalizing constant in `BetaBinomial` |
145 | 208 | - Lots of testing verifying proper conjugate prior behavior |
146 | | -- Added Gaussian prior geweke tests and example |
147 | | -- More robust dpgmm example -- can use different priors |
148 | 209 | - Version updates |
149 | 210 | - Misc styling and warning fixes |
150 | 211 |
|
151 | 212 | ## [0.11.1] - 2021-02-12 |
| 213 | + |
| 214 | +### Added |
152 | 215 | - Added Normal Inverse Gamma (`NormalInvGamma`) distribution as prior for |
153 | 216 | Gaussian |
154 | 217 |
|
155 | 218 | ## [0.11.0] - 2020-11-20 |
| 219 | + |
| 220 | +### Changed |
| 221 | +- Gaussian process improvements including new kernels |
| 222 | + |
| 223 | +### Added |
156 | 224 | - Added `_with_cache` variants to `ConjugatePrior` `ln_m` and `ln_pp` methods |
157 | 225 | for use cases where these methods are called many times in different data |
158 | 226 | without changing the underlying distribution. This also adds two more |
159 | 227 | associated types to the trait (`LnMCache` and `LnPpCache`), and one method |
160 | 228 | each to compute the caches. |
| 229 | + |
| 230 | +### Removed |
161 | 231 | - Remove all references to `serde_derive` crate |
162 | | -- Gaussian process improvements including new kernels |
163 | 232 |
|
164 | 233 | ## [0.10.4] - 2020-10-09 |
| 234 | + |
| 235 | +### Added |
165 | 236 | - Added Gaussian processes |
166 | 237 |
|
167 | 238 | ## [0.10.3] - 2020-10-07 |
| 239 | +### Changed |
168 | 240 | - Updated math in `NormalGamma` and `GaussianSuffStat` to reduce rounding errors |
169 | 241 |
|
170 | 242 | ## [0.10.2] - 2020-09-07 |
| 243 | +### Changed |
171 | 244 | - Categorical datum converters work like standard usize-to-boolean casting where |
172 | 245 | 0 is false, and anything greater than 0 is true. |
173 | 246 |
|
174 | 247 | ## [0.10.1] - 2020-08-10 |
| 248 | +### Changed |
175 | 249 | - Add `from_parts_unchecked` method for constructing sufficient statistic since |
176 | 250 | there was no way of manipulating statistic's fields or creating them |
177 | 251 | manually. |
178 | 252 |
|
179 | 253 | ## [0.10.0] - 2020-06-02 |
| 254 | + |
| 255 | +### Changed |
180 | 256 | - Implement Poisson Mode |
181 | 257 | - Store `GaussianSuffStat` in a more numerically stable way. The extra numerical |
182 | 258 | stability comes at the cost of slower `observe` and `forget`. Serialization |
183 | 259 | on `GaussianSuffStat` has changed. |
184 | 260 |
|
185 | 261 | ## [0.9.3] - 2020-05-30 |
| 262 | + |
| 263 | +### Changed |
186 | 264 | - Entropy for Gaussian mixtures more robust to models with dispersed |
187 | 265 | low-variance components |
188 | 266 | - Categorical::new_unchecked is now public |
189 | 267 |
|
190 | 268 | ## [0.9.2] - 2020-05-23 |
| 269 | + |
| 270 | +### Changed |
191 | 271 | - Benchmarks |
| 272 | + |
| 273 | +### Added |
192 | 274 | - implement `Entropy` and `KlDivergence` for `Poisson` |
193 | 275 | - Implement `QuadBounds` and `Entropy` for `Mixture<Poisson>` |
194 | 276 | - Implement `Mean` for mixtures of distributions that implement `Mean<f64>` or |
|
197 | 279 | random numbers. |
198 | 280 |
|
199 | 281 | ## [0.9.1] - 2020-05-16 |
| 282 | + |
| 283 | +### Removed |
200 | 284 | - Remove printlns |
201 | 285 |
|
202 | 286 | ## [0.9.0] - 2020-05-16 |
| 287 | + |
| 288 | +### Changed |
203 | 289 | - Refactor errors to provide more information |
204 | 290 | - Errors implement the `std::error::Error` trait |
205 | 291 | - Fixed a bug with `rv::dist::Mixture` that would compute means incorrectly |
206 | 292 | - `MvGaussian::dims` renamed to `MvGaussian::ndims` |
207 | 293 | - More aggressive caching of log likelihood terms |
208 | 294 | - Cached terms no longer unnecessarily computed on `Clone` |
209 | | -- Remove dependency on `getset` |
210 | 295 | - Setters do input validation unless prefixed by `_unchecked`. |
211 | 296 | - feature `serde_support` renamed to `serde1` |
212 | 297 |
|
| 298 | +### Removed |
| 299 | +- Remove dependency on `getset` |
| 300 | + |
213 | 301 | ## [0.8.3] - 2020-05-05 |
| 302 | + |
| 303 | +### Added |
214 | 304 | - Added Negative Binomial distribution |
215 | 305 | - Added Skellam Distribution |
216 | 306 | - Add `try_quad` function for numerical integration of functions that return |
217 | 307 | `Result<f64, E>`. |
218 | 308 |
|
219 | 309 | ## [0.8.2] - 2020-02-12 |
| 310 | + |
| 311 | +### Removed |
220 | 312 | - Remove dependency on `quadrature` crate in favor of hand-rolled adaptive |
221 | 313 | Simpson's rule, which handles multimodal distributions better. |
222 | 314 |
|
| 315 | +[0.19.0]: https://github.com/promise-ai/rv/compare/v0.18.1...v0.19.0 |
223 | 316 | [0.18.1]: https://github.com/promise-ai/rv/compare/v0.18.0...v0.18.1 |
224 | 317 | [0.18.0]: https://github.com/promise-ai/rv/compare/v0.17.0...v0.18.0 |
225 | 318 | [0.17.0]: https://github.com/promise-ai/rv/compare/v0.16.5...v0.17.0 |
|
0 commit comments