主要内容

介绍动态系统响应的预测

预测一个动态系统的响应是预测系统未来的输出使用过去的输出测量。换句话说,给定的观测y(t)= {y (1)、…y (N)}的输出系统,预测的预测输出y (N + 1)、…y (N + H)直到一个未来的时间范围H

当您执行预测系统辨识工具箱™软件,首先确定一个模型从系统符合过去的测量数据。模型可以是一个线性时间序列模型,如基于“增大化现实”技术的ARMA,和状态空间模型,或非线性ARX模型。如果外源输入影响输出的系统,您可以执行使用投入产出模型预测ARX和ARMAX等。后识别模型,然后使用预测命令来计算y (N + 1)、…y (N + H)。命令计算预测的值:

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

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

  • 模拟识别模型,直至达到理想的预测地平线,H,使用最终状态作为初始条件。

这一主题说明了这些预测步骤为线性和非线性模型。预测系统的响应没有外部输入(时间序列数据)说明,其次是预测与一个外源输入系统。关于如何执行信息预测的工具箱,明白了预测输出的动态系统

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

工具箱可以预测时间序列使用线性模型(输出)数据如AR、ARMA和状态空间模型。这里是一个说明预测的反应一个自回归模型,其次是对于更复杂的模型预测的步骤,如移动平均和状态方程模型。

自回归模型

假设您收集了时间序列数据y(t)= {y (1)、…y (N)}的平稳随机过程。假设数据是一个二阶自回归(AR)的过程,可以通过下面的基于“增大化现实”技术的描述动力学模型:

y ( t ) + 一个 1 y ( t 1 ) + 一个 2 y ( t 2 ) = e ( t )

在哪里一个1一个2适合系数和吗e(t)是噪声项。

您可以识别模型使用基于“增大化现实”技术命令。软件配合系数和方差的计算e(t)通过最小化之间的互译预测错误观察{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(t1),e(t2),e(t3)....)。因此,预测马模型的响应需要知识的初始条件的测量数据。

假设时间序列数据y(t)从你的系统可以满足二阶移动平均模型:

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

    因此,对于这个马二阶模型,超过两个时间步的预测输出超出过去的测量数据点(t= 2)都是零。一般来说,当零初始条件假设,预期值超出纯MA模型的顺序没有自回归条件都是零。

  • 估计初始条件:你可以估计初始条件通过最小化的平方之和互译预测错误的测量数据。

    MA模型描述之前,估计的初始条件e (0)e (1)需要最小化代价函数的最小二乘:

    V = e ( 1 ) 2 + e ( 2 ) 2 = (y (1) - [0 (0)+ 0。1 e 2 e (1))) 2 + (y (2) - [0 (1)+ 0。1 e 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)= 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)使用最小二乘方法最小化互译预测错误在所有可用的数据。

    这个例子展示了如何复制这些预测结果使用预测命令。

    加载测量数据。

    PastData = (5; 10);

    创建一个MA模型A和C多项式系数等于1和0.1 - 0.2[1],分别。

    模型= 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 =预测(模型、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 )

在那里,x(t)状态向量,y(t)的输出,e(t)是noise-term。一个,C,K是固定系数状态矩阵。

你可以代表任意结构线性模型状态方程形式。例如,它可以表明,ARMA模型前面描述的是使用状态方程表达形式(0 0;1 0)=,(K = 0.5; 0]C = (0.2 - 0.4)。你可以从观测数据状态空间模型估计使用命令等党卫军n4sid。您还可以将一个现有的多项式模型,如基于“增大化现实”技术,妈,ARMA, ARX, ARMAX成状态方程的形式使用中的难点命令。

状态方程形式的优点是任何自回归和移动平均模型与多个时滞术语(t - 1,2,条t - 3,…)只有一个时滞(t - 1)在状态变量模型转化为状态空间形式。结果,预测所需的初始条件转化为单一值的初始状态向量X (0)。的预测命令将所有线性模型转换为状态空间形式,然后进行预测。

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

  1. 生成一个互译提前预测模型确定模型。预测模型的形式:

    x ^ ( t + 1 ) = ( 一个 - - - - - - K * C ) x ^ ( t ) + K y ( t ) y ^ ( t ) = C * x ^ ( t )

    在哪里y(t)是衡量产出和 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是测量的矢量数据。

估计4阶的离散状态空间模型。

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和的互译预测响应识别模型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”。)

图包含一个坐标轴对象。坐标轴对象与标题y1包含2线类型的对象。这些对象代表yh1,系统。

情节显示匹配的结果。

预测响应外源输入的线性模型

当有外源性刺激影响系统,系统不能被认为是静止的。然而,如果这些刺激是可衡量的,你可以把它们作为输入到系统,占当预测的输出系统的影响。工作流与外源输入类似于预测数据,预测时间序列数据。首先确定一个模型以适应测量输入输出数据。然后指定预期的输入值的预测时间跨度和预测输出识别模型的使用预测命令。如果你不指定预期的输入值,它们假定为零。

这个例子展示了如何预测ARMAX模型与外源输入工具箱:

负载的输入-输出数据。

负载iddata1z1

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

使用上半年数据作为模型识别过去的数据。

past_data = z1 (1:15);

确定一个ARMAX模型Ay布鲁里溃疡(t) = (t - 1) + Ce (t) [2 2 2 1]。

na = 2;%一个多项式阶nb = 2;% B多项式阶数控= 2;% C多项式阶nk = 1;%的输入延迟sys = armax (past_data (na nb数控nk));

预测未来响应100年时间的步骤,除了最后的样本观测数据past_data。指定预期的输入在100年未来的时间点。

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

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表过去输出(日元),未来输出。

响应的非线性预测模型

工具箱还允许您使用非线性预测数据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 (sn)和他们的非线性表达式,如y (t - 1)2,y y (t - 1) (2),abs (y (t - 1))。当你估计的非线性ARX模型测量数据,指定模型的解释变量。您还可以指定的结构f使用不同的结构,如小波网络和树分区。有关更多信息,请参见页面的引用nlarx估计命令。

假定时间序列数据从您的系统可以满足二阶linear-in-regressor模型与多项式以下解释:

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 = [W1w2w3w4w5]是一个加权向量,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命令,软件估计模型参数Wc

当你使用预测命令,软件计算输出的预测模型模拟模型H未来的时间步骤,使用最后一个N测量输出样本作为初始条件。在哪里N是最大的滞后的解释变量,H是你指定预测地平线。

linear-in-regressor模型,假设你有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)

另请参阅

||

相关的例子

更多关于