#python #curve-fitting
Вопрос:
Я хотел бы выполнить подгонку ограниченной логистической кривой, где я могу определить уровни верхней и нижней асимптоты. Следующая функция позволяет это сделать
def func(x, U, L, k, x0):
return L (U - L) / (1 np.exp(-k*(x - x0)))
где U
верхняя асимптота, L
нижняя асимптота, k
максимальная скорость роста и x0
x-местоположение максимальной скорости роста.
Хотя я могу установить жесткие ограничения на то, какие значения L и U могут принимать (с помощью bounds
аргумента to scipy.optimize.curve_fit
), я не могу контролировать, при каком значении x функция достигает этих значений. См., например, это:
Я понимаю, что приведенная выше логистическая функция не в состоянии должным образом описать асимметрию здесь (и у меня есть более продвинутые модели с большим количеством параметров, которые работают довольно хорошо). Тем не менее, мне интересно посмотреть, как выглядит подогнанная кривая, если я смогу наложить ограничение, которое f(0) = min(ydata)
. Очевидно, что подгонка будет хуже из-за дополнительного ограничения, но давайте не будем обращать на это внимания.
Есть ли способ наложить такие ограничения с помощью`scipy»?