The Python package called parmest facilitates model-based parameter
estimation along with characterization of uncertainty associated with
the estimates. For example, parmest can provide confidence regions
around the parameter estimates. Additionally, parameter vectors, each
with an attached probability estimate, can be used to build scenarios
for design optimization.
Background
The goal of parameter estimation is to estimate values for
a vector, \({\theta}\), to use in the functional form
\[y = g(x; \theta)\]
where \(x\) is a vector containing measured data, typically in high
dimension, \({\theta}\) is a vector of values to estimate, in much
lower dimension, and the response vectors are given as \(y_{i},
i=1,\ldots,m\) with \(m\) also much smaller than the dimension of
\(x\). This is done by collecting \(S\) data points, which are
\({\tilde{x}},{\tilde{y}}\) pairs and then finding \({\theta}\)
values that minimize some function of the deviation between the values
of \({\tilde{y}}\) that are measured and the values of
\(g({\tilde{x}};{\theta})\) for each corresponding
\({\tilde{x}}\), which is a subvector of the vector \(x\). Note
that for most experiments, only small parts of \(x\) will change
from one experiment to the next.
The following least squares objective can be used to estimate parameter
values, where data points are indexed by \(s=1,\ldots,S\)
\[\min_{{\theta}} Q({\theta};{\tilde{x}}, {\tilde{y}}) \equiv \sum_{s=1}^{S}q_{s}({\theta};{\tilde{x}}_{s}, {\tilde{y}}_{s}) \;\;\]
where
\[q_{s}({\theta};{\tilde{x}}_{s}, {\tilde{y}}_{s}) = \sum_{i=1}^{m}w_{i}\left[{\tilde{y}}_{si} - g_{i}({\tilde{x}}_{s};{\theta})\right]^{2},\]
i.e., the contribution of sample \(s\) to \(Q\), where \(w
\in \Re^{m}\) is a vector of weights for the responses. For
multi-dimensional \(y\), this is the squared weighted \(L_{2}\)
norm and for univariate \(y\) the weighted squared deviation.
Custom objectives can also be defined for parameter estimation.
In the applications of interest to us, the function \(g(\cdot)\) is
usually defined as an optimization problem with a large number of
(perhaps constrained) optimization variables, a subset of which are
fixed at values \({\tilde{x}}\) when the optimization is performed.
In other applications, the values of \({\theta}\) are fixed
parameter values, but for the problem formulation above, the values of
\({\theta}\) are the primary optimization variables. Note that in
general, the function \(g(\cdot)\) will have a large set of
parameters that are not included in \({\theta}\). Often, the
\(y_{is}\) will be vectors themselves, perhaps indexed by time with
index sets that vary with \(s\).