Понимание команды сравнения в Matlab
Я очень озадачен следующим наблюдением Матлаба.
В моей проблеме я пытаюсь оценить модель ARX/ARMAX из дискретных дискретных данных ввода-вывода. Я следую руководству Matlab для определения линейных моделей в командной строке(используя набор инструментов System Identification)
- Мой набор данных - это 980 пар ввода-вывода (эксперименты) со временем выборки
Ts = 10
секунд (с 2 входами, 1 выходом). Я разделил данныеmy_data
на две подгруппы из 490 экспериментов:experimental
а такжеvalidation
, - Бег
delayest(my_data)
показывает, что нет задержки в любом из входов. Следовательноnk1=0
а такжеnk2=0
, - Идентификация заказа с
selstruc
а такжеarxstruc
дает мне выбор для заказовna
,nb1
а такжеnb2
, - Я поставил
opt=armaxOptions('InitialCondition','z')
иметь нулевое начальное условие для системы (я не считаю, что Matlab это переменная оценки).
Учитывая все вышесказанное, я запускаю
my_model = arx(experimental,[6,[2,5],[0,0]],opt)
который дает следующую модель в командной строке ( ссылка на pastebin).
По ссылке выше, если прокрутить вниз, мы можем увидеть, что подходитexperimental
данные довольно хорошо.
И тут возникает мой вопрос:
Если я теперь хочу проверить данные сvalidation
подмножество, проводя сравнение сcompare
команда:
% the model had zero initial condition as well
opt=compareOptions('InitialCondition','z');
[~,fit_vector,~]=compare(validation,my_model,opt);
disp(num2str(cell2mat(fit_vector)))
и это то, что интригует, теперь отображаемое число -109.626 %
поместиться.
Кто-нибудь знает точное поведение этой команды и почему существует такое несоответствие между подгонкой при генерации модели с
arx
(в приведенной выше ссылке) и использованиеcompare
команда?Я нахожу это очень странным, потому что даже с разными наборами данных
experimental
а такжеvalidation
оба они поступают из одного и того же семейства входов (импульсы различной длительности и амплитуды для входа 1; вход 2 является экзогенным входом).