Skip to content

Enable More Complex Error Structures in ParmEst and Pyomo.DoE#3996

Draft
slilonfe5 wants to merge 21 commits into
Pyomo:mainfrom
slilonfe5:parmest-measurement-error
Draft

Enable More Complex Error Structures in ParmEst and Pyomo.DoE#3996
slilonfe5 wants to merge 21 commits into
Pyomo:mainfrom
slilonfe5:parmest-measurement-error

Conversation

@slilonfe5

@slilonfe5 slilonfe5 commented Jul 16, 2026

Copy link
Copy Markdown
Member

Fixes # .

Summary/Motivation:

  1. Currently, ParmEst and Pyomo.DoE support only independent and identically distributed (i.i.d.) measurement errors. This PR adds support for correlated measurement errors by enabling the construction of a full measurement-error covariance matrix (MCM), allowing correlations across time and between measurements collected at the same time point. The new implementation also supports proportional (heteroskedastic) error structures.
  2. Currently, the calculation of the parameter covariance/Fisher information matrix in ParmEst/Pyomo.DoE is not supported for indexed parameters. This PR develops the capability to compute these matrices for indexed parameters.

Changes proposed in this PR:

  • Update _compute_jacobian, _kaug_FIM, and _cov_at_theta in ParmEst to support covariance matrix estimation for indexed parameters
  • Add a helper function in both ParmEst and Pyomo.DoE that builds the MCM from the user-supplied standard deviation and covariances
  • Update SSE_weighted in ParmEst to use the MCM in computing the "SSE_weighted" objective function
  • Update _kaug_FIM and _finite_difference_FIM in ParmEst to use the MCM in computing the parameter covariance matrix
  • Update _kaug_FIM and _sequential_FIM in Pyomo.DoE to use the MCM
  • Update create_doe_model in Pyomo.DoE to use the MCM
  • Replicate ParmEst's _expanded_unknown_parameter_info in Pyomo.DoE
  • Update all appearances of model.unknown_parameters or model.scenario_blocks.unknown_parameters to use the expanded parameter objects
  • Add tests in test_parmest.py to exercise the new capabilities

AI-Use Disclosure

  • AI tools were NOT used during the preparation of this PR

or

  • AI tools contributed to the development of this PR

    • AI tools generated documentation (including the PR description/comments, code comments, and/or Sphinx documentation)
    • AI tools generated tests (baselines, examples, and/or code)
    • AI tools generated code (apart from tests)

    Review process (select ONE):

    • Rewritten: All AI-generated content was rewritten by me before being committed.
    • Reviewed/verified: I retained AI-generated content and verified it before committing. Verification included (as applicable):
      • Ran the code and fixed issues
      • Added and ran tests
      • Checked correctness/logic of code and tests
      • Checked for alignment with the contribution guide
      • Considered security implications
    • As-is: AI-generated content was commited directly to the repository

Notes for reviewers (optional):

Legal Acknowledgement

By contributing to this software project, I have read the contribution guide and agree to the following terms and conditions for my contribution:

  1. I agree my contributions are submitted under the BSD license.
  2. I represent I am authorized to make the contributions and grant the license. If my employer has rights to intellectual property that includes these contributions, I represent that I have received permission to make contributions and grant the required license on behalf of that employer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant