Global fitting with shared parameters

Click For Summary
SUMMARY

The discussion centers on implementing global fitting for multiple exponential decay curves that share parameters, specifically using the Levenberg-Marquardt algorithm. The user seeks to adapt this algorithm for simultaneous fitting of curves with shared initial amplitude while managing the complexity of constructing a large Jacobian matrix. The challenge lies in efficiently handling the increased dimensionality of the Jacobian when fitting multiple curves with shared parameters. Participants are encouraged to share experiences or solutions related to multi-curve fitting techniques.

PREREQUISITES
  • Understanding of the Levenberg-Marquardt algorithm for curve fitting
  • Familiarity with Jacobian matrices in the context of optimization
  • Knowledge of exponential decay functions and their parameters
  • Experience with multi-dimensional data analysis
NEXT STEPS
  • Research multi-curve fitting techniques in scientific computing
  • Explore libraries such as SciPy for implementing global fitting
  • Learn about parameter sharing in optimization algorithms
  • Investigate alternative fitting algorithms designed for large datasets
USEFUL FOR

Researchers, data scientists, and engineers involved in curve fitting, particularly those working with complex datasets that require simultaneous parameter estimation across multiple curves.

raul_l
Messages
105
Reaction score
0

Homework Statement



Hi
I'm looking for an algorithm that can perform a fitting procedure on many curves simultaneously. Let's say, for example, that I have 3 exponential decay curves with 3 different decay times but they all share the same initial amplitude. So I have to find a fit for 4 parameters (in reality I'm dealing with much more complicated systems).

Homework Equations



Levenberg-Marquardt:
\delta a = \frac{1}{\bold{J}^T\bold{J}+\lambda \bold{diag}(\bold{J}^T\bold{J})} \bold{J}^T \boldsymbol{\chi}
with the Jacobian
J_{ij} = \frac{\partial f(x_{i};\bold a)}{\partial a_{j}}
where f is the fitting function, x are datapoints and a are the parameters to be fitted.
\boldsymbol{\chi} is defined as
\chi_i = \frac{y_i - f(x_{i};\bold a)}{\sigma_i}

The Attempt at a Solution



So far I've been using the Levenberg-Marquardt algorithm to find fits for single curves. But how to implement global curve fitting when some of the parameters are shared?

I guess a straightforward approach would be to construct a global function that takes the whole data set (constructed from all the curves) as argument. For example, if a single curve consists of 10 000 data points and I'm fitting for 5 parameters, I would need to build Jacobian with dimensions 10 000 x 5 for single-curve-fitting. Now assume I have 10 curves with 2 of those 5 parameters shared. Then I would need a 100 000 x 32 Jacobian which is pretty massive.

My question is this. Are there any algorithms especially designed for multi-curve-fitting or do I have to use the usual single-curve-fitting techniques with a few modifications?
I hope anyone has had experience in that area.
 
Physics news on Phys.org
Hi,

I have the same problem and was wondering if you solved it by now. If so, could you please throw some light on what you did.

Thanks,
 

Similar threads

  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 5 ·
Replies
5
Views
5K
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 34 ·
2
Replies
34
Views
6K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 6 ·
Replies
6
Views
4K