Этот пример показывает некоторые методы для выбора и конфигурирования образцовой структуры. Оценка модели с помощью данных об измерении требует выбора образцовой структуры (такой как пространство состояний или передаточная функция) и ее порядок (например, количество полюсов и нулей) заранее. Этот выбор под влиянием предварительных знаний о смоделированной системе, но может также быть мотивирован анализом самих данных. Этот пример описывает некоторые опции для определения порядков модели и входной задержки.
Выбор образцовой структуры обычно является первым шагом к своей оценке. Существуют различные возможности для структуры - пространство состояний, передаточные функции и полиномиальные формы, такие как ARX, ARMAX, OE, BJ и т.д. Если у вас нет подробных предварительных знаний вашей системы, такой как ее шумовые характеристики и индикация относительно обратной связи, выбор разумной структуры не может быть очевидным. Также для данного выбора структуры, порядок модели должен быть задан, прежде чем соответствующие параметры оцениваются. System Identification Toolbox™ предлагает некоторые инструменты, чтобы помочь в задаче образцового выбора порядка.
Выбор порядка модели также под влиянием суммы задержки. Хорошая идея входной задержки упрощает задачу выяснения порядков других коэффициентов модели. Обсужденный ниже некоторые опции для входного определения задержки и образцовой структуры и заказывают выбор.
Этот пример использует данные о фене, также используемые iddemo1 ("Оценка, что Простые Модели из Действительной Лаборатории Обрабатывают Данные"). Процесс состоит из воздуха, вентилируемого через трубу. Воздух нагревается во входном отверстии трубы, и вход является напряжением, применился к нагревателю. Вывод является температурой при выходе трубы.
Давайте начнем путем загрузки данных об измерении и выполнения некоторой основной предварительной обработки:
load dry2
Сформируйте набор данных для оценки первой половины и множество элементарных исходов в целях валидации второй половины:
ze = dry2(1:500); zr = dry2(501:1000);
Детрендируйте каждый из наборов:
ze = detrend(ze); zr = detrend(zr);
Давайте посмотрим на фрагмент данных об оценке:
plot(ze(200:350))
Существуют различные варианты, доступные для определения задержки от входа, чтобы вывести. Это:
Используя утилиту DELAYEST
.
Используя непараметрическую оценку импульсного ответа, с помощью IMPULSEEST
.
Используя средство оценки модели в пространстве состояний N4SID
со многими различными порядками и нахождением задержки 'лучшей'.
Используя delayest
:
Давайте обсудим вышеупомянутые опции подробно. Функциональный delayest
возвращает оценку задержки данного выбора порядков полиномов знаменателя и числителя. Эта функция оценивает структуру ARX:
y(t) + a1*y(t-1) + ... + ana*y(t-na) = b1*u(t-nk) + ...+bnb*u(t-nb-nk+1)
с различными задержками и выбирает значение задержки, которое, кажется, возвращает лучшую подгонку. В этом процессе используются выбранные значения na
и nb
.
delay = delayest(ze) % na = nb = 2 is used, by default
delay = 3
Значение 3 возвращено по умолчанию. Но это значение может измениться немного, если принятые порядки числителя и полиномов знаменателя (2 здесь) изменяются. Например:
delay = delayest(ze,5,4)
delay = 2
возвращает значение 2. Чтобы получить сведения, как delayest
работает, давайте оценим функцию потерь для различного выбора задержек явным образом. Мы выбираем модель второго порядка (na=nb=2
), который является значением по умолчанию для delayest
, и испытайте каждую задержку между 1 и 10. Функция потерь для различных моделей вычисляется с помощью набора данных валидации:
V = arxstruc(ze,zr,struc(2,2,1:10));
Мы теперь выбираем ту задержку, которая дает лучшее пригодное для данных о валидации:
[nn,Vm] = selstruc(V,0); % nn is given as [na nb nk]
Выбранная структура была:
nn
nn = 2 2 3
которые показывают, что лучшая модель имеет задержку nn (3) = 3.
Мы можем также проверять, как подгонка зависит от задержки. Эта информация возвращена во втором выводе Vm
. Логарифмы квадратичной функции потерь даны как первая строка, в то время как индексы na
, nb
и nk
даны как столбец ниже соответствующей функции потерь.
Vm
Vm = Columns 1 through 7 -0.1480 -1.3275 -1.8747 -0.2403 -0.0056 0.0736 0.1763 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 Columns 8 through 10 0.1906 0.1573 0.1474 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 8.0000 9.0000 10.0000
The choice of 3 delays is thus rather clear, since the corresponding loss is minimum.
Используя impulse
Чтобы получить лучшее понимание динамики, давайте вычислим импульсный ответ системы. Мы будем использовать функциональный impulseest
, чтобы вычислить непараметрическую импульсную модель ответа. Мы строим этот ответ с доверительным интервалом, представленным 3 стандартными отклонениями.
FIRModel = impulseest(ze); clf h = impulseplot(FIRModel); showConfidence(h,3)
Заполненная голубая область показывает доверительный интервал для незначительного ответа по этой оценке. Существует ясная индикация, которую импульсный ответ "снимает" (покидает область неуверенности) после 3 выборок. Это указывает на задержку трех интервалов.
Используя основанную на n4sid
оценку пространства состояний
Мы можем также оценить, что семейство параметрических моделей находит задержку, соответствующую "лучшей" модели. В случае моделей в пространстве состояний область значений порядков может быть оценена одновременно и лучший порядок, выбранный из графика Сингулярного значения Ганкеля. Выполните следующую команду, чтобы вызвать n4sid
в интерактивном режиме:
% m = n4sid(ze,1:15);
Все порядки между 1 и 15.
График показывает порядок 3 как оптимальное значение. Для этого выбора давайте вычислим импульсный ответ модели m
:
m = n4sid(ze, 3); showConfidence(impulseplot(m),3)
Как с непараметрическим импульсным ответом, существует ясная индикация, что задержка от входа, чтобы вывести имеет три выборки.
В отсутствии любых предварительных знаний желательно испытать различный доступный выбор и использовать тот, который, кажется, работает лучшее. Модели в пространстве состояний могут быть хорошей отправной точкой с тех пор, только количество состояний должно быть задано в порядке оценить модель. Кроме того, область значений порядков может быть оценена быстро, с помощью n4sid
, для определения лучшего порядка, как описано в следующем разделе. Для полиномиальных моделей подобное преимущество осознано с помощью средства оценки arx
. Модели ошибки на выходе (OE) могут также быть хорошим выбором для стартовой полиномиальной модели из-за их простоты.
Если вы решили образцовую структуру использовать, следующая задача состоит в том, чтобы определить порядок (порядки). В целом цель должна быть, чтобы не использовать порядок модели выше, чем необходимый. Это может быть определено путем анализа улучшения %fit как функция порядка модели. При выполнении этого желательно использовать отдельный, независимый набор данных для валидации. Выбор независимого набора данных валидации (zr
в нашем примере) улучшил бы обнаружение сверхподбора кривой.
В дополнение к прогрессивному анализу порядков многоуровневой модели явное определение оптимальных порядков может быть выполнено для некоторых образцовых структур. Функции arxstruc
и selstruc
могут использоваться для выбора лучшего порядка для моделей ARX. Для нашего примера давайте проверять пригодное для всех 100 комбинаций до 10 b
- параметров и до 10 a
- параметры, все со значением задержки 3:
V = arxstruc(ze,zr,struc(1:10,1:10,3));
Лучшее пригодное для набора данных валидации получено для:
nn = selstruc(V,0)
nn = 10 4 3
Давайте проверять, насколько подгонка улучшена для моделей высшего порядка. Для этого мы используем функциональный selstruc
только с одним входом. В этом случае график, показывающий подгонку функцией количества используемых параметров, сгенерирован. Пользователю также предлагают ввести номер параметров. Стандартная программа затем выбирает структуру с этими многими параметрами, которая дает лучшую подгонку. Обратите внимание на то, что несколько различных образцовых структур используют то же количество параметров. Выполните следующую команду, чтобы выбрать порядок модели в интерактивном режиме:
nns = selstruc(V)
%invoke selstruc в интерактивном режиме
Лучшая подгонка таким образом получена для nn = [4 4 3], в то время как мы видим, что улучшенная подгонка по сравнению с nn = [2 2 3] является довольно крайней.
Мы можем также приблизиться к этой проблеме от направления сокращения модели высшего порядка. Если порядок выше, чем необходимый, то дополнительные параметры в основном используются, чтобы "смоделировать" шум измерения. Эти "дополнительные" полюса оцениваются с более низким уровнем точности (большой доверительный интервал). Если их отменяются нулем, расположенным поблизости, то это - индикация, что эта нулевая полюсом пара не может потребоваться, чтобы получать существенную динамику системы.
Для нашего примера давайте вычислим 4-ю модель порядка:
th4 = arx(ze,[4 4 3]);
Давайте проверять нулевую полюсом настройку на эту модель. Мы можем также включать области уверенности для полюсов и нулей, соответствующих 3 стандартным отклонениям в порядке определить, как точно они оцениваются и также как близко полюса и нули друг другу.
h = iopzplot(th4); showConfidence(h,3)
Доверительные интервалы для двух комплексно-сопряженных перекрытий полюсов и нулей, указывая они, вероятно, отменят друг друга. Следовательно, второй порядок сила модели соответствовать. На основе этого доказательства давайте вычислим 2-й порядок модель ARX:
th2 = arx(ze,[2 2 3]);
Мы можем протестировать, как хорошо эта модель (th2
) способна к репродуцированию набора данных валидации. Чтобы сравнить моделируемый вывод из этих двух моделей с фактическим выводом (строящий середину 200 точек данных), мы используем утилиту compare
:
compare(zr(150:350),th2,th4)
График показывает, что не было никакой значительной потери точности в сокращении порядка от 4 до 2. Мы можем также проверять невязки ("остатки") этой модели, т.е. что оставляет необъясненным модель.
e = resid(ze,th2);
plot(e(:,1,[])), title('The residuals')
Мы видим, что невязки являются довольно маленькими по сравнению с уровнем сигнала вывода, что они обоснованно хорошо (несмотря на то, что не отлично) некоррелированые с входом и между собой. Мы можем таким образом быть (временно) удовлетворены моделью th2
.
Давайте теперь проверять, можем ли мы определить порядок модели для структуры пространства состояний. Как прежде, мы знаем, что задержка является 3 выборками. Мы можем попробовать все порядки от 1 до 15 с общей задержкой 3 выборок в n4sid
. Выполните следующую команду, чтобы попробовать различные порядки и выбрать тот в интерактивном режиме.
Оценка ms = n4sid(ze,[1:15],'InputDelay',2);
%n4sid с переменными порядками
"InputDelay" был установлен в 2, потому что n4sid
по умолчанию оценивает модель без сквозного соединения (который составляет одну демонстрационную задержку между вводом и выводом). Порядок по умолчанию, обозначенный в фигуре выше, равняется 3, который находится в хорошем соглашении с нашими более ранними результатами. Наконец, мы выдерживаем сравнение, как модель в пространстве состояний ms
и модель ARX th2
выдерживает сравнение в репродуцировании измеренного вывода данных о валидации:
ms = n4sid(ze,3,'InputDelay',2);
compare(zr,ms,th2)
График сравнения показывает, что эти две модели практически идентичны.
Этот пример описал некоторые опции для выбора разумного порядка модели. Определение задержки заранее может упростить задачу выбора порядков. С ARX и структурами пространства состояний, у нас есть некоторые специальные инструменты (arx
и средства оценки n4sid
) для того, чтобы автоматически оценить полный набор порядков модели и выбрать лучший среди них. Информация, показанная этим осуществлением (использующий утилиты, такие как arxstruc
, selstruc
, n4sid
и delayest
), могла использоваться в качестве отправной точки при оценке моделей других структур, таких как BJ и ARMAX.