0

How to use ExpressionModel in LMFIT to fit a conditional model that can be represented as:

from lmfit.models import ExpressionModel
# read(xdata and ydata) here
if xdata < some_parameter_value:
    model = ExpressionModel('expression1')
else:
    model = ExpressionModel('expression2')

How to write this conditional model as one model (global_model) and pass it to the fit method

results = global_model.fit(y, x = x, parameters_dictionary)

some_parameter_value: is a member of parameters_dictionary which is created using Parameters class

Hzine
  • 105
  • 1
  • 9

1 Answers1

0

lmfit Models are defined independent of the data and cannot be used for "part of the data".

Perhaps you can rewrite the expression for the model as:

 expr1 if x < x0 else expr2

Otherwise, I think you'll have to write a custom Model that tests the condition and does a different calculation based on that condition.

M Newville
  • 7,486
  • 2
  • 16
  • 29