主要内容

动态系统响应预测导论

预测动态系统的响应是利用过去的输出测量对系统未来输出的预测。换句话说,已知的观察yt) = {y (1)、……y (N)},预测是对系统输出的预测y (N + 1)、……y (N + H)直到未来的时间范围H

当您在系统识别工具箱™软件中执行预测时,您首先要识别一个符合系统过去测量数据的模型。该模型可以是线性时间序列模型,如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拟合系数和et)是噪声项。

方法可以识别模型基于“增大化现实”技术命令。软件计算拟合系数和方差et)通过最小化观测值之间的1步预测误差{y (1)、……y (N)}和模型响应。

假设创新et)是一个零均白序列,你可以计算预测的输出 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)模型中,输出取决于当前和过去的创新(et),et1),et2),et3)……)。因此,预测MA模型的响应需要了解测量数据的初始条件。

假设时间序列数据yt)可以拟合到二阶移动平均模型:

y t e t + c 1 e t 1 + c 2 e t 2

假设y (1)而且y (2)是唯一可用的观测值,它们的值分别为5和10。你可以估计模型系数c1而且c2使用armax命令。假设估计的c1而且c2值分别为0.1和0.2。假设和之前一样et)为均值为零的随机变量,可以预测某时刻的输出值t使用以下公式:

y t c 1 e t 1 + c 2 e t 2

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

因此,预测产出的时间t= 3是:

y 3. 0.1 e 2 + 0.2 e 1

在那里,创新e (1)而且e (2)当时产出的观测值和预测值之间是否存在差异t等于1而且2分别为:

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模型数量级的预测值均为零。

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

    对于前面描述的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)而且be (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)= 50,e (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);

    创建一个MA模型,其中A和C的多项式系数分别为1和[1 0.1 0.2]。

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

    指定零初始条件,并预测未来五步的输出。

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

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

    选择= forecastOptions (“InitialCondition”“e”);yf_estimatedIC =预测(模型、PastData 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)为输出,et)为噪声项。一个C,K是固定系数状态空间矩阵。

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

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

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

  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存储时间序列数据(无输入)的对象。

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

observed_data = z9 (1:128);Ts = observed_data.Ts;t = observed_data.SamplingInstants;y = observed_data.y;

Ts为测量数据的采样时间,t是时间矢量,和y是测量数据的向量。

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

sys = ss (observed_data 4“t”、Ts);

预测状态空间模型在未来100步后的输出预测命令。

H = 100;yh1 =预测(sys, observed_data, H);

yh1预测输出是否使用预测命令。方法使用的算法现在重新生成输出预测命令。

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

一个= sys.A;K = sys.K;C = sys.C;

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

预测= idss ((a - K * C)、K、C、0,“t”、Ts);

估计初始状态,使观察到的输出之间的差异最小化y和识别模型的1步预测响应sys

x0 = findstates (sys observed_data 1);

将状态向量传播到观测数据的末端。为此,模拟使用的预测器y作为输入,并x0为初始状态。

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

xfinal状态向量在时间点的值是多少t(结束),有观测数据时的最后时刻。对未来100个时间步的预测从下一个时间步开始,t1 = t(结束)+ Ts

为实现预测算法,需要确定状态矢量的时刻值t1是必需的。应用状态更新方程计算状态向量预测模型xfinal

x0_for_forecasting =预测。* xfinal + Predictor.B * y(结束);

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

选择= 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”。

图中包含一个axes对象。标题为y1的axes对象包含两个类型为line的对象。这些对象表示yh1、sys。

图表显示结果是一致的。

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

当有外源性刺激影响系统时,不能认为系统是平稳的。然而,如果这些刺激是可测量的,那么您可以将它们视为系统的输入,并在预测系统的输出时说明它们的影响。具有外生输入的预测数据的工作流程与预测时间序列数据的工作流程相似。您首先确定一个模型来适合测量的输入输出数据。方法指定预测时间跨度的预期输入值,并预测已识别模型的输出预测命令。如果不指定预期的输入值,则假定它们为零。

这个例子展示了如何预测工具箱中带有外生输入的ARMAX模型:

负载的输入-输出数据。

负载iddata1z1

z1是一个iddata对象,该对象具有300个时间点的输入输出数据。

使用数据的前半部分作为模型识别的过去数据。

past_data = z1 (1:15);

确定一个ARMAX模型Ay(t) = Bu(t-1) + Ce(t),阶为[2,2,1]。

na = 2;%一个多项式阶nb = 2;% B多项式阶数控= 2;% C多项式阶nk = 1;%的输入延迟Sys = armax(pass_data,[na nb nc nk]);

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

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

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象表示过去的输出(y1),未来的输出。

非线性模型的预测响应

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

Hammerstein-Wiener和非线性灰盒模型都有一个平凡的噪声成分,即模型中的扰动用白噪声来描述。因此,预测使用预测命令与执行纯模拟相同。

非线性ARX模型的预测响应

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

y t f y t - 1 y t - 2 ... y t - N + e t

在哪里f是有输入的非线性函数吗Rt),模型回归量。回归量可以是时滞变量y (t - 1)y (2),……,y (sn)以及它们的非线性表达式,比如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 = [W1w2w3.w4w5是权重向量,和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是您指定的预测地平线。

对于线性回归模型,假设您已经测量了输出的100个样本y,你想预测未来的四步(H= 4).模型回归量中最大的滞后为N= 2。因此,软件取数据的最后两个样本y (99)而且y (100)作为初始条件,并预测输出为:

y 101 w 1 y One hundred. + w 2 y 99 + w 3. y One hundred. 2 + w 4 y 99 2 + w 5 y One hundred. y 99 y 102 w 1 y 101 + w 2 y One hundred. + w 3. y 101 2 + w 4 y One hundred. 2 + w 5 y 101 y One hundred. 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,利用输入输出数据,past_data.当你预测数据时,软件模拟识别的模型H时间踏向未来,用的是最后N测量输出样本作为初始条件。您还可以指定预测时间跨度的预期输入值,FutureInputs.预测具有外生输入的非线性模型响应的语法与预测线性模型的语法相同,预测(sys past_data H, FutureInputs)

另请参阅

||

相关的例子

更多关于

Baidu
map