Установка сигмоида в данные

Есть много инструментов для подгонки кривой и интерполяции, таких как polyfit (или даже этот красивый набор инструментов для логфина, который я нашел здесь), но я не могу найти ничего, что будет поместите функцию sigmoid в мои xy-данные.

Существует ли такой инструмент или мне нужно сделать свой собственный?

Ответ 1

Если у вас установлен пакет статистики, вы можете использовать нелинейную регрессию с nlinfit:

sigfunc = @(A, x)(A(1) ./ (A(2) + exp(-x)));
A0 = ones(size(A)); %// Initial values fed into the iterative algorithm
A_fit = nlinfit(x, y, sigfunc, A0);

Здесь sigfunc - всего лишь пример сигмоидной функции, а A - вектор коэффициентов подстановки.

Ответ 2

nlinfit, и особенно gatool, являются большими молотками для этой проблемы. Сигмоид не является конкретной функцией. Чаще всего он считается таким же, как логистическая функция (также часто наиболее эффективная для вычисления):

y = 1./(1+exp(-x));

или обобщенная логистика. Но всевозможные кривые могут иметь сигмоидальные формы. Если вы знаете, что ваши данные соответствуют одному, в частности, можно улучшить установку и использовать более эффективные методы. Например, функция ошибки (erf) имеет сигмоидальную форму и отображается в CDF нормального распределения . Если вы знаете, что ваши данные являются результатом процесса Гаусса (т.е. Данные являются CDF), и у вас есть панель инструментов Stats, вы можете использовать функцию normfit. Эта функция основана на оценке максимального правдоподобия (MLE). Если вам нужно написать специальную функцию фитинга - скажем, по соображениям производительности, я бы исследовал методы MLE для конкретной формы сигмоида, которую вы хотели бы поместить.

Ответ 3

Я бы предложил использовать MATLAB Global Optimization Toolbox и, в частности, Решатель генетического алгоритма, который вы можете использовать для своей проблемы, оптимизируя (= поиск наилучшего соответствия вашим данным) параметры сигмовидной функции с помощью генетического алгоритма. Он имеет графический интерфейс, который прост в использовании.

Решитель генетического алгоритма, который вы можете вызвать с помощью gatool: enter image description here