compareЭтот пример показывает, как значения подгонки NRMSE, вычисленные образцовыми идентификационными функциями и функцией compare, могут отличаться из-за различий в начальных условиях и настройках горизонта прогноза.
Когда вы идентифицируете модель, образцовый идентификационный алгоритм возвращает значение для подходящего процента к данным об измерении, которые вы использовали. Если вы затем используете compare, чтобы построить результаты симуляции модели против результатов измерений, результаты подгонки не всегда идентичны. Это различие то, потому что:
Алгоритм образцовой идентификации и алгоритм compare используют различные методы, чтобы оценить начальные условия.
Алгоритм образцовой идентификации использует значение по умолчанию особого внимания prediction с одним шагом, но compare использует значение по умолчанию Inf — эквивалентный особому вниманию simulation. Смотрите Моделируют и Предсказывают Идентифицированный Образцовый Вывод.
Эти различия являются обычно небольшими, и они не должны влиять на ваш образцовый рабочий процесс выбора и валидации. Если вы действительно хотите воспроизвести результаты подгонки оценки точно, необходимо согласовать горизонт прогноза и начальные настройки условия, используемые в compare со значениями, используемыми во время образцовой оценки.
Загрузите данные и оцените модель в пространстве состояний с тремя состояниями.
load iddata1 z1; sys = ssest(z1,3);
Оцените модель в пространстве состояний от результатов измерений.
Позвольте ssest использовать свою установку 'Focus' по умолчанию 'prediction' и свою установку оценки 'InitialState' по умолчанию 'auto'. Установка 'auto' заставляет ssest выбирать:
'zero', если начальная ошибка прогноза не значительно выше, чем основанная на оценке ошибка, или если система является FRD
'estimate' для большинства наборов данных одно эксперимента, если 'zero' не приемлем
'backcast' для наборов данных мультиэксперимента, if '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)

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

Изменение в горизонте прогноза разрешило большую часть несоответствия между подходящими значениями. Теперь подгонка 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)
Результат подгонки теперь совпадает с результатом подгонки от исходной оценки.
Этот метод подтверждает, что алгоритм ssest и алгоритм compare приводят к тем же результатам с тем же начальным условием и настройками горизонта прогноза.
Этот пример имеет дело только с репродуцированием результатов когда это необходимо, чтобы подтвердить соглашение между алгоритмом оценки и сравнить алгоритмом значения подгонки NRMSE, когда они относятся к исходным данным об оценке. Однако, когда вы используете compare, чтобы подтвердить вашу модель против данных о валидации или сравнить совершенство нескольких моделей кандидата, используйте значения по умолчанию compare для 'InitialCondition' и горизонта прогноза как правило.