Установка сигмоида в данные
Есть много инструментов для подгонки кривой и интерполяции, таких как 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]()