Решение подгонки различий между идентификацией модели и compare Команда

В этом примере показано, как NRMSE подгоняет значения, вычисленные функциями идентификации модели и compare функция может отличаться из-за различий в начальных условиях и настройках горизонта предсказания.

Когда вы идентифицируете модель, алгоритм идентификации модели возвращает значение для процента подгонки к данным измерений, которые вы использовали. Если вы тогда используете compare чтобы построить график результатов симуляции модели относительно измеренных данных, результаты подгонки не всегда идентичны. Это различие обусловлено:

  • Алгоритм идентификации модели и compare алгоритм использует различные методы для оценки начальных условий.

  • Алгоритм идентификации модели использует по умолчанию одношаговый prediction особое внимание, но compare использует значение по умолчанию Inf - эквивалентно simulation особое внимание. См. Моделирование и предсказание идентифицированных выходов модели.

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

Загрузите данные и оцените модель пространства состояний трех состояний.

load iddata1 z1;
sys = ssest(z1,3);

Оцените модель пространства состояний из измеренных данных.

Разрешить ssest использовать его 'Focus' по умолчанию установка 'prediction', и его значения по умолчанию 'InitialState' установка оценки ' auto '. The 'auto' установка причины ssest чтобы выбрать:

  • 'zero' если начальная ошибка предсказания не значительно выше, чем основанная на оценке ошибка, или если система FRD

  • 'estimate' для большинства наборов данных с одним экспериментом, если 'zero' не является приемлемым

  • 'backcast' для мультиэкспериментальных наборов данных, если 'zero' не является приемлемым

Для получения дополнительной информации смотрите ssestOptions.

Можно получить автоматически выбранную опцию начального состояния, вектор начального состояния и процент подгонки NRMSE из отчета об оценке для sys.

sys_is = sys.Report.InitialState
sys_is = 
'zero'
sys_x0 = sys.Report.Parameters.X0
sys_x0 = 3×1

     0
     0
     0

sys_fit = sys.Report.Fit.FitPercent
sys_fit = 76.4001

ssest выбранные 'zero'вместо оценки начальных состояний, что указывает на то, что вклад начальных состояний в ошибку предсказания мал.

Использование compare чтобы симулировать модель и построить график результатов относительно измеренных данных. В данном случае разрешите compare использовать собственный метод оценки начальных условий и его дефолта Inf для горизонта предсказания.

figure
compare(z1,sys)

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

Процент подгонки NRMSE вычисляется compare ниже, чем подгонка, которая ssest вычислено. Это более низкое значение в основном из-за несоответствия между горизонтами предсказания для ssest (по умолчанию 1) и сравнить (по умолчанию Inf).

Повторный запуск compare использование аргумента 1 для горизонта предсказания.

figure
compare(z1,sys,1)

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

Изменение горизонта предсказания устранило большую часть расхождения между значениями аппроксимации. Теперь compare подгонка превышает ssest подгонка. Это более высокое значение связано с ssest установите начальные состояния в 0, в то время как compare предполагаемые начальные состояния. Можно выяснить, насколько далеко расположены векторы начального состояния, перезапустив compare с выходными аргументами.

[y1,fit1,x0c] = compare(z1,sys,1);
x0c
x0c = 3×1

   -0.0063
   -0.0012
    0.0180

x0c невелик, но не равен нулю sys_x0. Чтобы воспроизвести ssest начальные условия в compare, непосредственно установите 'InitialCondition' опция для sys_x0. Затем запустите compare использование обновленного набора опций.

compareOpt = compareOptions('InitialCondition',sys_x0);
figure
compare(z1,sys,1,compareOpt)

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

Результат подгонки теперь соответствует результату подгонки из исходной оценки.

Этот метод подтверждает, что ssest алгоритм и compare алгоритм приводит к тем же результатам с теми же начальным условием и настройками горизонта предсказания.

Этот пример касается только воспроизведения результатов, когда вы хотите подтвердить согласие между алгоритмом оценки и значениями подгонки алгоритма сравнения NRMSE, поскольку они относятся к исходным данным оценки. Однако, когда вы используете compare чтобы подтвердить свою модель по данным валидации или сравнить качество нескольких моделей кандидата, используйте compare по умолчанию для 'InitialCondition' и горизонт предсказания как общее правило.

См. также

Похожие темы