MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Основы работы в Curve Fitting Toolbox \ Curve Fitting Toolbox

В оглавление книги \ К следующему разделу

Функции Curve Fitting Toolbox

Исключение части данных

Перед поиском параметров линейной или нелинейной параметрической модели может понадобиться исключение части данных. Например, визуальный анализ данных может указать на наличие явных выбросов, или же просто требуется исключить данные, лежащие вне некоторого диапазона.

В Curve Fitting Toolbox для предварительной обработки данных имеется функция excludedata. Ее входными аргументами являются массивы данных xdata и ydata и один из способов исключения данных. Функция excludedata возвращает логический массив (состоящий из единиц и нулей), в котором нули соответствуют исключаемым данным, т.е. тем данным которые не будут участвовать в формировании целевой функции ошибки в процессе подбора параметров:

outliers = excludedata(xdata,ydata,'НазваниеСпособа', МассивОграничений)

Логический массив outliers затем указывается в качестве входного аргумента функции fit, выполняющей подбор параметров модели.

Данные могут быть исключены одним из четырех способов, приведенных в следующей таблице вместе с соответствующими им массивами ограничений.

Способы исключения данных
'НазваниеСпособа' МассивОграничений
box вектор [xmin, xmax, ymin, ymax] из четырех элементов, задающий границы независимой и зависимой переменных, вне которых данные не будут принимать участие в процессе подбора параметров
domain вектор [xmin, xmax] из двух элементов, задающий границы независимой переменной, вне которых данные не будут принимать участие в процессе подбора параметров
range вектор [ymin, ymax] из двух элементов, задающий границы зависимой переменной, вне которых данные не будут принимать участие в процессе подбора параметров
indices вектор индексов тех данных, которые не будут принимать участие в процессе подбора параметров

Приведем пример, в котором данные имеют несколько явных выбросов:

>> xdata=(0:0.01:2)';
>> ydata=0.6*sin(2.44*xdata)+0.8*exp(-xdata)+ 0.05*randn(size(xdata));
>> ydata(10)=2.3;
>> ydata(50)=2.4;
>> ydata(100)=2.2;
>> ydata(150)=-0.8;


Данные с выбросами

В этом примере имеет смысл применить способ range для исключения данных, лежащих выше 1.5 и ниже -0.5:

>> outliers = excludedata(xdata,ydata,'range', [-0.5 1.5]);

Теперь зададим собственную нелинейную параметрическую модель с тремя параметрами a, b и c:
(см. разд. Приближение с созданием объекта для пользовательской нелинейной параметрической модели.)

>> ftype=fittype('a*sin(b*x)+c*exp(-x)');

Зададим начальные значения параметров, которые будут являться стартовой точной в алгоритме нелинейной минимизации целевой функции ошибки (она нелинейна, т.к. нелинейна сама модель):

>> spoint=[0.5 2 1];

Найдем теперь параметры модели при помощи функции fit, указав в ее входных аргументах исходные данные, саму модель, начальные значения параметров и исключенные данные

>> fresult=fit(xdata,ydata,ftype,'startpoint',spoint,'exclude',outliers)

Информация об объекте с найденным приближением выводится в командное окно. Она содержит вид модели и полученные значения параметров вместе с границами доверительных интервалов, отвечающими уровню вероятности в 95%:

fresult =
     General model:
       fresult(x) = a*sin(b*x)+c*exp(-x)
     Coefficients (with 95% confidence bounds):
       a =      0.5829  (0.5708, 0.5951)
       b =       2.454  (2.436, 2.472)
       c =      0.8172  (0.7993, 0.8351)

Для визуализации результата удобно применить функцию plot (переопределенную в Curve Fitting Toolbox), во входных аргументах которой указывается не только построенное приближение и исходные данные, но и логический массив, содержащий информацию об исключенных данных:

>> plot(fresult,xdata,ydata,outliers)

На графике исключенным данным и тем, которые принимали участи в процессе подбора параметров, соответствуют разные маркеры.


Данные, исключенные данные и приближение

Для исключения данных по более сложным критериям, требуется применять логическое индексирование (это базовое средство MATLAB). Кратко логическое индексирование объяснено в следующем разделе.

В оглавление книги \ К следующему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика