goodnessOfFit

Качество подгонки между тестовыми и эталонными данными для анализа и валидации идентифицированных моделей

Описание

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

пример

fit = goodnessOfFit(x,xref,cost_func) возвращает качество подгонки между тестовыми данными x и ссылочные данные xref использование функции затрат cost_func. fit является количественным представлением близости x на xref. Чтобы выполнить несколько сравнений подгонки «тест-ссылка», можно задать x и xref как массивы ячеек равного размера, которые содержат несколько наборов тестовых и ссылочных данных. С входами массива ячеек, fit возвращает массив значений аппроксимации.

Примеры

свернуть все

Найдите качество подгонки между измеренными выходными данными и моделируемым выходом оценочной модели.

Получите измеренный выход.

load iddata1 z1
yref = z1.y;

z1 является iddata объект, содержащий измеренные входно-выходные данные. z1.y - измеренный выход.

Оцените модель передаточной функции второго порядка и симулируйте результат модели y_est.

sys = tfest(z1,2);
y_est = sim(sys,z1(:,[],:)); 

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

cost_func = 'NRMSE';
y = y_est.y;
fit = goodnessOfFit(y,yref,cost_func) 
fit = 0.2943

Также можно использовать compare для вычисления подгонки. compare использует функцию затрат NRMSE и выражает процент подгонки, используя дополнение нормы ошибки. Отношение подгонки между compare и goodnessOfFit поэтому является fitcompare=(1-fitgof)*100. A compare результат 100% эквивалентен goodnessOfFit результат 0.

Задайте начальное условие нуля, чтобы соответствовать начальному условию, которое goodnessOfFit принимает.

opt = compareOptions('InitialCondition','z');
compare(z1,sys,opt);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent z1 (y1), sys: 70.57%.

Результаты подгонки эквивалентны.

Найдите качество подгонки между измеренным и оцененным выходами для двух моделей.

Получите измерения вход-выход z2 от iddata2. Скопируйте измеренный выход в опорный yref.

load iddata2 z2
yref = z2.y;

Оцените модели передаточной функции второго и четвертого порядков с помощью z2.

sys2 = tfest(z2,2);
sys4 = tfest(z2,4);

Симулируйте обе системы, чтобы получить предполагаемые выходы.

y_sim2 = sim(sys2,z2(:,[],:));
y2 = y_sim2.y;
y_sim4 = sim(sys4,z2(:,[],:));
y4 = y_sim4.y;

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

yrefc = {yref yref};
yc = {y2 y4};

Вычислите fit значения для трех функций затрат.

fit_nrmse = goodnessOfFit(yc,yrefc,'NRMSE')
fit_nrmse = 1×2

    0.1429    0.1342

fit_nmse = goodnessOfFit(yc,yrefc,'NMSE')
fit_nmse = 1×2

    0.0204    0.0180

fit_mse = goodnessOfFit(yc,yrefc,'MSE')
fit_mse = 1×2

    1.0811    0.9540

Значение соответствия 0 указывает на идеальную подгонку между опорным и предполагаемым выходами. Значение аппроксимации увеличивается, когда качество аппроксимации уменьшается. Для всех трех функций затрат модель четвертого порядка производит лучшую подгонку, чем модель второго порядка.

Входные параметры

свернуть все

Данные для тестирования, заданные как матрица или массив ячеек.

  • Для одного тестового набора данных задайте Ns матрицу N, где Ns - количество выборок, а N - количество каналов. Вы должны задать cost_fun как 'NRMSE' или 'NMSE' использовать многоканальные данные.

  • Для нескольких наборов тестовых данных задайте массив ячеек с Nd длины, где Nd количество пар «тест-ссылка», и каждая камера содержит одну матрицу данных.

x не должно содержать никаких NaN или Inf значения.

Ссылочные данные, с которыми можно сравнить x, заданный как матрица или массив ячеек.

  • Для одинарного набора ссылочных данных задайте Ns -by - N матрицу, где Ns - количество выборок и N - количество каналов. xref должен быть того же размера, что и x. Вы должны задать cost_fun как 'NRMSE' или 'NMSE' использовать многоканальные данные.

  • Для нескольких наборов ссылочных данных задайте массив ячеек с Nd длины, где Nd количество пар «тест-ссылка», и каждая камера содержит одну матрицу ссылочных данных. Как и в случае с отдельными матрицами данных, размеры массива ячеек для x и xref должен совпадать. Каждый i й элемент fit соответствует парам i-х камер x и xref.

xref не должно содержать никаких NaN или Inf значения.

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

ЗначениеОписаниеУравнениеПримечания
'MSE'Средняя квадратичная невязка

fit=xxref2Ns

где Ns - количество выборок, а ‖ указывает на 2-норму вектора.

fit является скаляром.
'NRMSE'Нормированная корневая средняя квадратичная невязка

fit(i)=xref(:,i)x(:,i)xref(:,i)mean(xref(:,i))

где ‖ указывает на 2-норму вектора. fit - вектор-строка длины N и i = 1,..., N, где N - количество каналов.

fit является вектором-строкой. 'NRMSE' - функция затрат, используемая compare.

'NMSE'Нормированная средняя квадратичная невязка

fit(i)=xref(:,i)x(:,i)2xref(:,i)mean(xref(:,i))2

fit является вектором-строкой.

Выходные аргументы

свернуть все

Качество подгонки между тестовой и опорной парами данных, возвращаемое в виде скаляра, вектора-строки или массива ячеек.

  • Для пары одного теста и опорного набора данных, fit возвращается как скаляр или вектор-строка.

    • Если cost_fun является 'MSE', затем fit является скаляром.

    • Если cost_fun является 'NRMSE' или 'NMSE', затем fit - вектор-столбец длины N, где N - количество каналов.

  • Для нескольких тестов и набора данных и ссылочных пар, где x и xref являются массивами ячеек длины ND, fit возвращается как вектор или матрица.

    • Если cost_fun является 'MSE', затем fit является вектор-строка длины ND.

    • Если cost_fun является 'NRMSE' или 'NMSE', затем fit является матрицей размера N -by - Nd, где N - количество каналов (столбцов данных), а Nd представляет количество тестовых пар. Каждый элемент fit содержит значения качества подгонки для соответствующих тестовых данных и ссылки пары.

    Каждый элемент fit содержит значения качества подгонки для соответствующих тестовых данных и ссылки пары.

Возможные значения для отдельных элементов подгонки зависят от выбора cost_func.

  • Если cost_func является 'MSE', каждый fit значение является положительным скаляром, который растет с ошибкой между тестом и эталонными данными. A fit значение 0 указывает на идеальное соответствие между тестовыми и эталонными данными.

  • Если cost_func является 'NRMSE' или 'NMSE', fit значения варьируются между - Inf и 1.

    • 0 - Идеальная подгонка для ссылки на данные (нулевая ошибка)

    • - Inf - Плохая подгонка

    • 1x не лучше, чем прямая линия при совпадении xref

Вопросы совместимости

расширить все

Поведение изменено в R2020a

См. также

| | |

Введенный в R2012a