Add ExpectationMaximization interoperability#384
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #384 +/- ##
==========================================
+ Coverage 81.38% 81.61% +0.23%
==========================================
Files 85 86 +1
Lines 5999 6064 +65
==========================================
+ Hits 4882 4949 +67
+ Misses 1117 1115 -2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Parameterize supported continuous margins, nested mixture components, mixture probabilities, and copula parameters on an unconstrained scale. Optimize their complete weighted Sklar likelihood together, retain the initialized model on optimizer regressions, and reject unsupported or discrete margins explicitly.
Allocate IFM pseudo-observations with a floating promoted element type so integer samples can be fitted. Keep numerically saturated marginal CDFs inside the open unit interval before evaluating copula densities, with regressions for integer data and extreme observations.
Assert weighted likelihood improvements, unit-weight consistency, sensitivity to weights, and non-decreasing mixture likelihoods. Cover invalid dimensions and weights, parameterless copulas, integer and extreme samples, unsupported continuous margins, discrete margins, and zero mixture probabilities while keeping the sample size bounded.
Explain that Sklar components use a joint weighted likelihood, list the continuous margin parameterizations supported recursively in mixtures, and document why discrete margins require rectangle probabilities instead of the continuous copula-density factorization. Reduce example sizes to bound documentation runtime.
lrnv
force-pushed
the
issue-27-em-compatibility
branch
from
July 20, 2026 19:36
153b2e2 to
9528729
Compare
Remove the family-specific joint parameterization and delegate each initialized continuous margin to its own fit_mle implementation. Fit the copula afterward on promoted, open-interval pseudo-observations, retain exact weighted MLE for bare copulas, and reject discrete IFM inputs explicitly. Update the extension tests to cover delegation and validation without assuming joint-likelihood improvement.
State that SklarDist components are updated sequentially through weighted marginal fits and a weighted copula fit, despite the fit_mle interoperability hook. Document the lack of a joint-MLE monotonicity guarantee, generic margin delegation, and the explicit exclusion of discrete margins.
Keep the exact weighted joint optimization requested for Sklar components, while preserving the concrete component-vector type of rebuilt mixture margins so ExpectationMaximization can update its typed component arrays. Limit open-interval CDF clipping to the optimization objective and retain the established censored-distribution semantics of the general Sklar logpdf.
This reverts commit f89ee95.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CopulasExpectationMaximizationExtpackage extensionfit_mlefor copulasSklarDistM-stepsSklarDist, and nested continuous mixture marginsThe core
fitAPI remains unchanged: the instance-based and weighted adapters are confined to the optional extension required by ExpectationMaximization.jl. The branch is rebased on the currentmain.Compatibility
ExpectationMaximization.jl 0.2.4 is supported on Julia LTS, while the 0.3 series is supported on Julia 1.12 and later.
Related issues
Closes #27.
This also addresses the cross-package interoperability discussed in dmetivie/ExpectationMaximization.jl#8. The explicit link is included so the upstream issue receives a backlink to this implementation.