主要内容

动态系统响应预测导论

预测一个动态系统的响应是使用过去的输出测量来预测系统未来的输出。换句话说,给定的观察结果yT.)= {y (1)、……y(n)系统的输出,预测是输出的预测y(n + 1)、……Y(n + h)直到未来的时间H

当您在System Identification Toolbox™软件中执行预测时,您首先确定一个适合系统中过去测量数据的模型。该模型可以是线性时间序列模型,如AR、ARMA和状态空间模型,也可以是非线性ARX模型。如果外部输入影响系统的输出,您可以使用ARX和ARMAX等输入-输出模型进行预测。在确定模型之后,您就可以使用预报命令来计算y(n + 1)、……Y(n + h).该命令通过以下方式计算预测值:

  • 使用已识别的模型生成预测模型。

  • 使用过去测量数据计算预测器的最终状态。

  • 模拟已识别的模型直到所需的预测范围,H,使用最终状态作为初始条件。

本主题说明了线性和非线性模型的这些预测步骤。预测没有外部输入的系统的响应(时间序列数据),然后预测具有外源输入的系统。有关如何在工具箱中执行预测的信息,请参阅预测动态系统的输出

使用线性模型预测时间序列

该工具箱可以使用诸如AR,ARMA和状态空间模型等线性模型来预测时间序列(仅输出)数据。以下是预测自回归模型的响应的图示,然后是预测步骤,以获得更复杂的模型,例如移动平均和状态空间模型。

自回归模型

假设您已经收集了时间序列数据yT.)= {y (1)、……y(n)}的一个平稳随机过程。假设数据是一个二阶自回归(AR)过程,可以用下面的AR模型来描述动态:

y T. + 一种 1 y T. - 1 + 一种 2 y T. - 2 = E. T.

在哪里一种1一种2是拟合系数和E.T.)为噪声项。

您可以使用AR.命令。该软件计算拟合系数和方差E.T.)通过最小化观察之间的1步预测误差{y (1)、……y(n)}和模型响应。

假设这些创新E.T.)是零平均白序列,可以计算预测的输出 y ^ T. 使用公式:

y ^ T. = - 一种 1 y T. - 1 - 一种 2 y T. - 2

在哪里y (t - 1)y (2)是测量数据(如果可用)或先前的预测值。例如,预测输出未来的五个步骤是:

y ^ N + 1 = - 一种 1 y N - 一种 2 y N - 1 y ^ N + 2 = - 一种 1 y ^ N + 1 - 一种 2 y N y ^ N + 3. = - 一种 1 y ^ N + 2 - 一种 2 y ^ N + 1 y ^ N + 4. = - 一种 1 y ^ N + 3. - 一种 2 y ^ N + 2 y ^ N + 5. = - 一种 1 y ^ N + 4. - 一种 2 y ^ N + 3.

请注意计算的计算 y ^ N + 2 使用先前的预测值 y ^ N + 1 因为测量数据无法超时N.因此,测量数据的直接贡献随着进一步预测到未来而减少。

对于包含移动平均项的时间序列过程,预测公式更为复杂。

移动平均模型

在移动平均(MA)模型中,产出取决于当前和过去的创新(E.T.),E.T.1),E.T.2),E.T.-3)......)。因此,预测MA模型的响应需要了解测量数据的初始条件。

假设时间序列数据yT.)来自您的系统可以适合二阶移动平均模型:

y T. = E. T. + C 1 E. T. - 1 + C 2 E. T. - 2

假设y (1)y (2)是唯一可用的观测值,它们的值分别为5和10。你可以估计模型系数C1C2使用armax.命令。假设估计C1C2值分别为0.1和0.2。然后假设和之前一样E.T.)是一个均值为零的随机变量,您可以预测时刻的输出值T.使用以下公式:

y ^ T. = C 1 E. T. - 1 + C 2 E. T. - 2

在哪里E(T-1)e (2)有时测量的和预测的反应是否有差异t - 12, 分别。如果在这些时间不存在测量数据,则使用零值,因为创新过程E.T.)为零均值高斯白噪声。

因此,预测当时的产量T.= 3是:

y ^ 3. = 0.1 E. 2 + 0.2 E. 1

在那里,创新e (1)E(2)在某一时刻产出的观测值和预测值之间是否有差异T.等于12, 分别:

E. 2 = y 2 - y ^ 2 = y 2 - [ 0.1 E. 1 + 0.2 E. 0. ] E. 1 = y 1 - y ^ 1 = y 1 - [ 0.1 E. 0. + 0.2 E. - 1 ]

因为数据是从时间开始测量的T.等于1的价值e (0)E(-1)是未知的。因此,为了计算预测输出,这些初始条件的值e (0)E(-1)是必需的。你可以假设零初始条件,或者估计它们。

  • 零初始条件:如果指定的话e (0)E(-1)= 0,则误差值和预测输出为:

    E. 1 = 5. - 0.1 * 0. + 0.2 * 0. = 5. E. 2 = 10. - 0.1 * 5. + 0.2 * 0. = 9.5 y ^ 3. = 0.1 * 9.5 + 0.2 * 5. = 1.95

    有时预测的值T.= 4和5是:

    y ^ 4. = 0.1 E. 3. + 0.2 E. 2 y ^ 5. = 0.1 E. 4. + 0.2 E. 3.

    这里E(3)e(4)假设没有超过时间的测量值T.= 2。这种假设收益率, y ^ 4. = 0.2 * E. 2 = 0.2 * 9.5 = 1.9 , y ^ 5. = 0.

    因此,对于这个二阶MA模型,预测输出超出最后测量数据点(T.= 2)全部为零。通常,当假设零初始条件时,除了没有自回归术语的纯MA模型的顺序之外的预测值均为零。

  • 估计初始条件:你可以通过最小化所有测量数据的一步预测误差的平方和来估计初始条件。

    对于前面描述的MA模型,初始条件的估计e (0)E(-1)需要最小化以下最小二乘成本函数:

    V. = E. 1 2 + E. 2 2 = (y(1) - [0 1 . e(0) + 0 .2 e(-1)]) 2 + (y(2) - [0 .1 e(1)+ 0 .2 e(0)]) 2

    替代一种=e (0)B.=E(-1),成本函数是:

    V. 一种 B. = 5. - [ 0.1 一种 + 0.2 B. ] 2 + 10. - [ 0.1 5. - [ 0.1 一种 + 0.2 B. ] + 0.2 一种 ] 2

    最小化V.产量e (0)= 50E(-1)= 0,得到:

    E. 1 = 5. - 0.1 * 50. + 0.2 * 0. = 0. E. 2 = 10. - 0.1 * 0. + 0.2 * 50. = 0. y ^ 3. = 0. y ^ (4)= 0

    因此,对于该系统,如果通过可用的两个样本最小化预测误差,则所有将来的预测等于零,这是该过程的平均值。如果有两种以上的观察结果,则会估计E(-1)e (0)使用最小二乘方法以最小化所有可用数据的1步预测误差。

    这个示例展示了如何使用预报命令。

    加载测量数据。

    Pastdata = [5; 10];

    建立A和C多项式系数分别为1和[1 0.1 0.2]的MA模型。

    模型= IDPOLY(1,[],[1 0.1 0.2]);

    指定零初始条件,并预测输出五个步骤进入未来。

    选择= forecastOptions (“InitialCondition”“z”);yf_zeroIC =预测(模型、PastData 5,选择)
    yf_zeroic =.5×11.9500 1.9000 0 0 0

    指定软件估计初始条件,并预测输出。

    选择= forecastOptions (“InitialCondition”'e');YF_ESTIMatedic =预测(模型,vigeddata,5,选择)
    yf_estimatedIC =5×110.-15×-0.3553 -0.3553 0 0 0

对于任意结构模型,如自回归模型移动平均项,可以涉及到预测过程,因此最好用状态空间形式描述。

状态空间模型

时间序列数据的离散时间状态空间模型具有:

X T. + 1 = 一种 X T. + K. E. T. y T. = C X T. + E. T.

在哪里,XT.)是国家矢量,yT.)为输出,E.T.)是噪音。一种C,K.是固定系数状态空间矩阵。

您可以代表状态空间形式的任何任意结构线性模型。例如,可以示出之前描述的ARMA模型以使用状态空间形式表示A = [0 0;1 0](K = 0.5; 0]c = [0.2 0.4].您可以使用以下命令从观察到的数据估计状态空间模型党卫军n4sid.可以将现有的多项式模型(如AR、MA、ARMA、ARX和ARMAX)转换为状态空间形式IDS.命令。

状态空间形式的优点是任何具有多个时间滞后术语的自回归或移动平均模型(t - 12条t - 3,…)只有一个时间延迟(t - 1)在状态变量中,当模型转换为状态空间形式时。因此,预测所需的初始条件转化为初始状态向量的单个值X (0).的预报命令将所有线性模型转换为状态空间形式,然后进行预测。

预测状态空间模型的响应:

  1. 为已识别的模型生成一个1步前方预测模型。预测器模型具有以下形式:

    X ^ T. + 1 = 一种 - K. * C X ^ T. + K. y T. y ^ T. = C * X ^ T.

    在哪里yT.)为测量输出和 y ^ T. 是预测的价值。测量的输出可用直到时间步骤N并用作预测器模型中的输入。初始状态向量是 X ^ 0. = X 0.

  2. 给初始状态向量赋值X0.

    初始状态指定为零,或者通过最小化测量的数据时间跨度通过最小化预测误差来估计。

    如果系统在收集观察之前,系统处于余处状态,请指定零初始条件。如果预测器模型足够稳定,则可以指定零初始条件,因为稳定性意味着初始条件的效果随着观察结果而迅速减小。如果特征值,预测器模型是稳定的a - k * C在单位圈内。

  3. 计算 X ^ N + 1 ,时刻的国家的价值t = N + 1,最后可用数据样本后的时间即时。

    为此,使用测量的观测值作为输入来模拟预测器模型:

    X ^ 1 = 一种 - K. * C X 0. + K. y 0. X ^ 2 = 一种 - K. * C X ^ 1 + K. y 1 X ^ N + 1 = 一种 - K. * C X ^ N + K. y N

  4. 模拟所识别模型的响应H使用步骤 X ^ N + 1 作为初始条件,在哪里H是预测视界。这个响应是模型的预测响应。

再现预报命令

此示例显示了如何手动再现使用的预测结果预报命令。你首先使用了预报命令将时间序列数据预测到未来。然后,您将预测结果与预测算法的手动实现进行比较。

加载时间序列数据。

加载iddata9Z9.

Z9.是一个iddata对象,该对象存储时间序列数据(无输入)。

指定用于模型估计的数据。

观察到_data = z9(1:128);ts =观察到_data.ts;t =观察到的_data.samplinginstants;y =观察到_data.y;

TS.是测量数据的采样时间,T.是时间向量吗y是测量数据的矢量。

估计一个四阶离散时间状态空间模型。

sys = ss (observed_data 4“t”,TS);

预测状态空间模型的输出100步骤使用预报命令。

H = 100;YH1 =预测(SYS,观察到_DATA,H);

yh1.是使用的预测输出预报命令。控件使用的算法现在通过手动实现重新生成输出预报命令。

检索估计的状态空间矩阵以创建预测器模型。

a = sys.a;k = sys.k;c = sys.c;

生成一个提前一步的预测器一种矩阵的预测模特是a - k * CB.矩阵是K.

预测器= IDS((a-k * c),k,c,0,“t”,TS);

估计初始状态,使观测输出之间的差异最小化y以及识别模型的一步预测响应SYS.

x0 = findstates(sys,devalided_data,1);

将状态向量传播到观测数据的末尾。要做到这一点,使用y作为输入和X0.作为初始状态。

输入= iddata ([], y, Ts);opt = simoptions(“InitialCondition”, x0);(~ ~ x) = sim(预测、输入、选择);xfinal = x(最终:)”;

xfinal状态矢量值是时候趋向),在观察到数据可用时最后一次即时。在下次步骤中预测未来的100次步骤,t1 = t(结束)+ Ts

实现预测算法,时的状态矢量值T1.是必需的。通过应用状态更新方程来计算状态向量预测模型xfinal

x0_for_forecasting = predictor.a * xfinal + predictor.b * y(结束);

模拟所识别的模型H使用步骤x0_for_forecasting作为初始条件。

opt = simoptions(“InitialCondition”,x0_for_forecasting);

因为SYS.是一个时间序列模型,指定模拟的输入作为模拟H由0信号,H是希望的仿真输出样本数。

输入= iddata ([], 0 (H, 0), Ts,'tstart',t(结束)+ ts);YH2 = SIM(SYS,输入,选择);

比较结果预报命令yh1.使用手动计算结果yh2.

绘图(YH1,YH2,'r。'

图中包含一个坐标轴。具有标题Y1的轴包含2个类型的2个对象。这些对象代表YH1,YH2。

图表显示结果是匹配的。

预测具有外生输入的线性模型的响应

当有外源性刺激影响系统时,系统不能被认为是静止的。然而,如果这些刺激是可测量的,那么你可以将它们作为系统的输入,并在预测系统的输出时考虑它们的影响。预测外生输入数据的工作流程与预测时间序列数据的工作流程类似。首先确定一个模型来适应测量的输入-输出数据。然后为预测时间跨度指定预期的输入值,并使用预报命令。如果您没有指定预期的输入值,则假定它们为零。

此示例显示如何在工具箱中预测具有外部输入的ARMAX模型:

加载输入输出数据。

加载iddata1Z1

Z1是一个iddata在300个时间点的输入输出数据的对象。

使用前一半的数据作为过去的数据进行模型识别。

past_data = z1 (1:15);

识别ARMAX型号AY(T)= BU(T-1)+ CE(T),单位[2 2 2 1]。

na = 2;%多项式顺序nb = 2;% B多项式阶数控= 2;%C多项式顺序nk = 1;%输入延迟sys = ARMAX(VART_DATA,[NA NB NC NK]);

预测100个时间步后的响应,超过最后的观测数据样本vert_data..在未来的100个时间点指定预期的输入。

H = 100;FutureInputs = z1.u (151:250);预测(sys past_data H, FutureInputs)传说('过去的产出'“未来的输出”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象表示过去输出(y1),未来输出。

预测非线性模型的响应

工具箱还允许您使用非线性ARX、Hammerstein-Wiener和非线性灰箱模型预测数据。

Hammerstein-Wiener和非线性灰箱模型都有一个琐碎的噪声分量,即模型中的扰动是用白噪声来描述的。因此,使用预报命令与执行纯模拟相同。

非线性ARX模型的响应预测

时间序列非线性ARX模型的结构如下:

y T. = F y T. - 1 y T. - 2 ...... y T. - N + E. T.

在哪里F是有输入的非线性函数吗R.T.),模型回归器。回归器可以是时间滞后变量y (t - 1)y (2),……那y(t-n)和他们的非线性表达式,如y (t - 1)2y y (t - 1) (2)ABS(Y(T-1)).当您从测量数据中估计非线性ARX模型时,可以指定模型回归器。您还可以指定结构F使用不同的结构,如小波网络和树划分。有关的更多信息,请参阅参考页nlarx估计命令。

假设您的系统的时间序列数据可以拟合到二阶呈线性回归模型具有以下多项式回归量:

R. T. = [ y T. - 1 y T. - 2 y T. - 1 2 y T. - 2 2 y T. - 1 y T. - 2 ] T.

然后f(r)= w'* r + c,在那里W = [W1W.2W.3.W.4.W.5.]是一个权重向量吗C为输出偏移量。

非线性ARX模型具有以下形式:

y T. = W. 1 y T. - 1 + W. 2 y T. - 2 + W. 3. y T. - 1 2 + W. 4. y T. - 2 2 + W. 5. y T. - 1 y T. - 2 + C + E. T.

当你用nlarx命令,软件估计模型参数W.C

当你使用的时候预报命令后,软件通过对模型的仿真,计算出预测的模型输出H时间踏进未来,用过去N测量输出样本作为初始条件。在哪里N最大的滞后是在回归量,和H是您指定的预测地平线。

对于Linear-In-in-regrarsor模型,假设您已测量输出的100个样本y,并希望预测未来的四个步骤(H= 4).模型回归量的最大滞后是N= 2。因此,该软件采用了数据的最后两个样本y (99)y (100)为初始条件,预测输出为:

y ^ 101. = W. 1 y 100. + W. 2 y 99 + W. 3. y 100. 2 + W. 4. y 99 2 + W. 5. y 100. y 99 y ^ 102. = W. 1 y ^ 101. + W. 2 y 100. + W. 3. y ^ 101. 2 + W. 4. y 100. 2 + W. 5. y ^ 101. y 100. y ^ 103. = W. 1 y ^ 102. + W. 2 y ^ 101. + W. 3. y ^ 102. 2 + W. 4. y ^ 101. 2 + W. 5. y ^ 102. y ^ 101. y ^ 104. = W. 1 y ^ 103. + W. 2 y ^ 102. + W. 3. y ^ 103. 2 + W. 4. y ^ 102. 2 + W. 5. y ^ 103. y ^ 102.

如果你的系统有外生输入,非线性ARX模型还包括依赖于输入变量的回归量。预测过程与时间序列数据的预测过程相似。首先确定模型,SYS.,使用输入输出数据,vert_data..预测数据时,软件模拟了所识别的模型H时间踏进未来,用过去N测量输出样本作为初始条件。您还可以为预测时间跨度指定预期的输入值,FutureNputs..预测具有外生输入的非线性模型的响应的语法与线性模型相同,预测(SYS,PAST_DATA,H,FutureNPUTS)

也可以看看

||

相关例子

更多关于