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 类型的模型,
假设模型参数随时间呈分段常数变化。这导致该模型将数据记录划分为若干区间,在每个区间内,模型的输出值保持恒定。该函数对可能发生突变的信号和系统进行建模。
投入产出数据包含在 z 中,它要么是一个 iddata 对象,要么是一个矩阵 z = [y u],其中 y 和 u 是列向量。如果系统有多个输入,则 u 的列数与之对应。
参量 nn 定义了模型阶。对于 ARMAX 模型
nn = [na nb nc nk];
其中 na、nb 和 nc 分别是相应多项式的次数。请参阅什么是多项式模型?。此外,nk 表示延迟。如果模型有多个输入,则 nb 和 nk 是行向量,分别表示每个输入的阶数和延迟。
对于 ARX 模型 (nc = 0),请输入
nn = [na nb nk];
对于时间序列 ARMA 模型
z = y; nn = [na nc];
对于 AR 模型
nn = na;
输出参量 segm 是一个矩阵,其中第 k 行包含与时间 k 对应的参量。这与 recursiveARX 和 recursiveARMAX 估计量返回的输出估计值类似。segment 的参量 thm 包含尚未进行分段处理的相应模型参数。thm 的每一行都包含相应时间点上的参数估计值。这些估计值是通过将 M(默认值:5)个不同时变模型的参数进行加权综合而得出的,且参与计算的模型在每个时间步长都会发生变化。当您不希望持续跟踪单个模型参数的变化,但需要检测系统动态特性中的突变时,可将 segment 作为在线估计命令的替代方案。
输出参量 V 包含分段模型的预测误差平方和。这可以作为衡量细分成效的一项指标。
参量 R2 是模型中残差 e(t) 的假设方差。R2、R2 = [] 的默认值为其估计值。那么,输出参量 R2e 是一个向量,其第 k 个元素包含时间点 k 处 R2 的估计值。
参量 q 表示模型在任意给定时刻发生突变的概率。默认值为 0.01。
R1 是参数跳变发生时其协方差矩阵的假设值。默认值为单位矩阵,其维度等于估计参数的个数。
M 是该算法中使用的并行模型数量(见下文)。其默认值为 5。
th0 是参数的初始值。其默认值为零。P0 是参数的初始协方差矩阵。默认值为单位矩阵的 10 倍。
ll 是每个模型的最短保留时间。也就是说,任何创建的候选模型在经过至少 ll 个时间步之后才会被废弃。默认值为 ll = 1。Mu 是一个遗忘参数,用于估计 R2 的算法中。默认值为 0.97。
对您而言,最关键的参数是 R2。通常来说,对 R2 进行合理的推测,比对其进行估计要更稳健。通常,您需要尝试不同的 R2 值,并评估结果。(请参阅下文示例。)sqrt(R2) 对应于 y(t) 的正常值变化,这并未表明系统或输入可能发生了变化。
示例
限制
segment 与 MATLAB® Coder™ 或 MATLAB Compiler™ 不兼容。
算法
该算法基于 M 并行模型,每个模型均由一种卡尔曼滤波器类型的算法进行递归估计。每个模型都会独立进行更新,并计算其后验概率。随时间变化的估计量 thm 是通过将 M 个不同模型按其后验概率作为权重进行加权综合而得到的。在每个时间步长,后验概率最低的模型(在至少存活了 ll 个样本的模型中)将被淘汰。启动一个新模型,假设系统参数已发生变化,并以概率 q 从所有模型中最可能的那个模型中随机跳转。参数变化的协方差矩阵设置为 R1。
在对所有数据进行分析后,回溯后验概率最高的幸存模型,并标记其发生跳变的时间点。这定义了数据的各个部分。(如果算法中没有废除任何模型,这本应是跳变实例的最大似然估计。)随后,在假设跳变点估计正确的条件下,通过对参数估计值进行平滑处理,构建出分段模型 segm。换句话说,会选择该区间内的最后一个估计值来代表整个区间。
版本历史记录
在 R2006a 之前推出


