主要内容

本页采用了机器翻译。点击此处可查看英文原文。

segment

对各细分市场进行数据划分并建立估计模型

语法

segm = segment(z,nn)
[segm,V,thm,R2e] = segment(z,nn,R2,q,R1,M,th0,P0,ll,mu)

说明

segment 构建 AR、ARX 或 ARMAX/ARMA 类型的模型,

A(q)y(t)=B(q)u(tnk)+C(q)e(t)

假设模型参数随时间呈分段常数变化。这导致该模型将数据记录划分为若干区间,在每个区间内,模型的输出值保持恒定。该函数对可能发生突变的信号和系统进行建模。

投入产出数据包含在 z 中,它要么是一个 iddata 对象,要么是一个矩阵 z = [y u],其中 yu 是列向量。如果系统有多个输入,则 u 的列数与之对应。

参量 nn 定义了模型阶。对于 ARMAX 模型

nn = [na nb nc nk];

其中 nanbnc 分别是相应多项式的次数。请参阅什么是多项式模型?。此外,nk 表示延迟。如果模型有多个输入,则 nbnk 是行向量,分别表示每个输入的阶数和延迟。

对于 ARX 模型 (nc = 0),请输入

nn = [na nb nk];

对于时间序列 ARMA 模型

z = y;
nn = [na nc];

对于 AR 模型

nn = na;

输出参量 segm 是一个矩阵,其中第 k 行包含与时间 k 对应的参量。这与 recursiveARXrecursiveARMAX 估计量返回的输出估计值类似。segment 的参量 thm 包含尚未进行分段处理的相应模型参数。thm 的每一行都包含相应时间点上的参数估计值。这些估计值是通过将 M(默认值:5)个不同时变模型的参数进行加权综合而得出的,且参与计算的模型在每个时间步长都会发生变化。当您不希望持续跟踪单个模型参数的变化,但需要检测系统动态特性中的突变时,可将 segment 作为在线估计命令的替代方案。

输出参量 V 包含分段模型的预测误差平方和。这可以作为衡量细分成效的一项指标。

参量 R2 是模型中残差 e(t) 的假设方差。R2R2 = [] 的默认值为其估计值。那么,输出参量 R2e 是一个向量,其第 k 个元素包含时间点 kR2 的估计值。

参量 q 表示模型在任意给定时刻发生突变的概率。默认值为 0.01

R1 是参数跳变发生时其协方差矩阵的假设值。默认值为单位矩阵,其维度等于估计参数的个数。

M 是该算法中使用的并行模型数量(见下文)。其默认值为 5

th0 是参数的初始值。其默认值为零。P0 是参数的初始协方差矩阵。默认值为单位矩阵的 10 倍。

ll 是每个模型的最短保留时间。也就是说,任何创建的候选模型在经过至少 ll 个时间步之后才会被废弃。默认值为 ll = 1Mu 是一个遗忘参数,用于估计 R2 的算法中。默认值为 0.97

对您而言,最关键的参数是 R2。通常来说,对 R2 进行合理的推测,比对其进行估计要更稳健。通常,您需要尝试不同的 R2 值,并评估结果。(请参阅下文示例。)sqrt(R2) 对应于 y(t) 的正常值变化,这并未表明系统或输入可能发生了变化。

示例

全部折叠

为仿真模型的输出生成一个正弦波。

y = sin([1:50]/3)';

将输入信号指定为恒定值 1

u = ones(size(y));

指定模型的估计噪声方差。

R2 = 0.1;

将信号划分为若干段,并对每段估计一个 ARX 模型。使用简单模型 y(t)=b1u(t-1),其中 b1 是描述估计产出 y(t) 的分段常数水平的模型参数。

segm = segment([y,u],[0 1 1],R2);

检查结果。

plot([segm,y])

Figure contains an axes object. The axes object contains 2 objects of type line.

通过改变 R2 的值来调整估计的噪声方差。减小 R2 会增加该模型生成的分段数量。

加载并绘制估计数据。

load iddemo6m.mat z
z = iddata(z(:,1),z(:,2));
plot(z)

MATLAB figure

该数据中存在从 21 的时间延迟变化,仅通过查看数据很难察觉。

指定模型阶数,以估计如下形式的 ARX 模型:

y(t)+ay(t-1)=b1u(t-1)+b2u(t-2)

nn = [1 2 1];

将数据进行分段,并针对每个分段估计 ARX 模型。指定估计噪声方差为 0.1

seg = segment(z,nn,0.1);

检查分割模型的参数。

plot(seg)
legend('a','b1','b2');

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent a, b1, b2.

如样本编号 19 附近模型参数的变化所示,数据已被划分为两个部分。b1 的增加以及 b2 的相应减少,反映了模型延迟的变化。

限制

segmentMATLAB® Coder™MATLAB Compiler™ 不兼容。

算法

该算法基于 M 并行模型,每个模型均由一种卡尔曼滤波器类型的算法进行递归估计。每个模型都会独立进行更新,并计算其后验概率。随时间变化的估计量 thm 是通过将 M 个不同模型按其后验概率作为权重进行加权综合而得到的。在每个时间步长,后验概率最低的模型(在至少存活了 ll 个样本的模型中)将被淘汰。启动一个新模型,假设系统参数已发生变化,并以概率 q 从所有模型中最可能的那个模型中随机跳转。参数变化的协方差矩阵设置为 R1

在对所有数据进行分析后,回溯后验概率最高的幸存模型,并标记其发生跳变的时间点。这定义了数据的各个部分。(如果算法中没有废除任何模型,这本应是跳变实例的最大似然估计。)随后,在假设跳变点估计正确的条件下,通过对参数估计值进行平滑处理,构建出分段模型 segm。换句话说,会选择该区间内的最后一个估计值来代表整个区间。

版本历史记录

在 R2006a 之前推出

另请参阅