Skip to main content

变化点检测的工作原理

对于时空立方体中的每个位置, 变化点检测 工具会在时间序列的某些统计属性发生变化时识别时间步长。 该工具可以检测连续变量的平均值、标准偏差或斜率(线性趋势)的变化以及计数变量的平均值的变化。 每个位置的变化点数量可以由工具确定,或者可以提供用于所有位置的变化点定义数量。

变化点将每个时间序列划分为多个分段,其中每个分段中的值具有相似的均值、标准差或线性趋势(斜率和截距)。 变化点定义为从第二个分段开始的每个新分段中的第一个时间步长,因此变化点的数量总是比分段数少一个。

变化点类型

该工具可以检测四种类型的变化。 以下各图像中将时间序列显示为蓝色折线图,并且变化点处具有垂直橙色线。

  • 均值平移 - 检测分析变量平均值的平移。 假设数据值符合正态分布,所有时间步长都具有相同的标准差。 每个分段内的平均值为常数,并在每个变化点处更改为新值。

    均值平移变化类型

    • 潜在应用 - 当每日最高温度在短时间内升高时检测热浪。
  • 标准差 - 检测分析变量标准差的变化。 假设数据值符合正态分布,所有时间步长都具有相同的平均值。 每个分段内的标准差为常数,并在每个变化点处更改为一个新值。

    标准差变化类型

    • 潜在应用 - 检测可指示重大天气事件的风速变化的变化。
  • 斜率(线性趋势) - 检测分析变量线性趋势的变化。 假设数据值遵循正态分布,平均值由一条线定义,所有时间步长具有相同的标准偏差。 直线的斜率和截距在每个分段内是恒定的,并在每个变化点更改为新值。

    斜率(线性趋势)更改类型

    • 潜在应用 - 检测销售收入趋势的变化,以确定哪些营销活动最有效。
  • 计数 - 检测表示计数的分析变量的平均值的变化。 假设每个分段内的数据值符合泊松分布,其平均值在每个变化点更改为新值。

    计数变化类型

    • 潜在应用 - 检测每日流感病例计数的变化,以估计每年流感季节的开始和结束。

工具输出

该工具的主要输出是一个要素类,输入时空立方体的每个位置均具有一个要素。 根据在每个位置检测到的变化点数量,绘制具有五个类的图层。

输出要素符号系统

输出要素将包含以下字段:

  • 变化点数量 (NUM_CPTS) - 在该位置检测到的变化点数。

  • 第一个变化点的日期 (FIRST_CHPT) - 该位置的第一个变化点的日期。 如果未检测到变化点,则该值将为空。

  • 最后一个变化点的日期 (LAST_CHPT) - 该位置的最后一个变化点的日期。 如果未检测到变化点,则该值将为空。 如果检测到一个变化点,则该值将与第一个变化点的日期相同。

输出要素的 图层时间 基于第一个变化点的日期,因此可以使用 时间滑块 根据此日期过滤位置。 图层时间可以更改为图层属性中最后一个更改点的日期。 例如,其可用于 随时间变化以动画形式呈现 来可视化不同位置经历其第一个或最后一个变化点的时间,从而识别跨位置的时间模式。

时间序列弹出窗口图表

使用 浏览 导航工具单击地图上的任何要素将在 弹出窗口 窗格中显示一个折线图。 此图表将显示该位置时间序列的蓝色折线图,其变化点由较大的红点表示。

对于 均值平移计数 变化类型,将在每个分段的平均值处绘制水平红线。

平均值和计数弹出窗口图表

对于 斜率(线性趋势) 变化类型,绘制红线表示每个分段的线性趋势。

斜率(线性趋势)弹出表格

对于 标准差 变化类型,将在整个时间序列的全局平均值处绘制一条红色实线。 对于每个分段,在全局平均值上下两个标准差处绘制红色虚线,波段之间具有粉色阴影。 当标准差在变化点发生变化时,这些波段会变宽或变窄。 在全局平均值上下两个全局标准差处绘制灰色虚线。 这允许您确定一个分段的标准差是大于还是小于整个时间序列的标准差。

标准差弹出窗口图表

可以将鼠标悬停在图表中的任何元素上方以获取有关值的详细信息。

弹出窗口悬停菜单

注:

将输出要素另存为 shapefile (.shp) 时,将不会创建弹出图表。

地理处理消息

此工具将提供许多消息,其中包含有关工具执行的信息。 消息分为几个部分。

输入时空立方体详细信息 部分将显示输入时空立方体的属性以及有关时间步长间隔、时间步长数、位置数和时空图格数的信息。 在第一部分中显示的属性取决于创建立方体的方式,因此该信息因立方体的不同而有所不同。

重要日期 部分显示所有位置的第一个和最后一个变化点的日期以及变化点最多的日期。 这可用于识别导致多个位置发生变化的大规模变化发生的日期。 如果存在关联,则显示最早的日期。

每个时间步长变化点数汇总 部分显示每个时间步长变化点数的最小值、最大值、平均值、中值和标准差。 这允许您调查所有位置的时间序列中变化点的频率。 如果频率过高或过低,则可以调整 检测灵敏度 参数的值来增加或减少变化点的频率。

在 3D 模式下显示时空立方体

将使用分析结果更新输入时空立方体。 要查看结果,请使用 创建时空立方体图层 工具根据已更新的时空立方体创建时空立方体图层。 该图层将激活 时空立方体 功能区。 在功能区中,将 显示主题 参数设置为 变化点检测 主题。

在 3D 模式下显示的变化点。

包含有关时间步长的时间、位置和 ID 的信息字段以及有关检测到的变化点的以下字段:

  • 变化点指示器 (CHPT_IND) - 如果时间步长被检测为变化点,则该字段包含值 1,如果时间步长未被检测为变化点,则该字段包含值 0。

  • 当前均值 (MEAN_CUR) - 包含时间步长的分段平均值。 仅为均值平移变化类型创建此字段。

  • 前均值 (MEAN_BEF) - 包含前一时间步长的分段平均值。 如果时间步长不是变化点,则 当前均值前均值 将相等,如果时间步长是变化点,则值将不同(因为前一个值在不同的分段中)。 这允许您比较变化点前后各分段的平均值。 仅为均值平移变化类型创建此字段。

  • 当前标准差 (STDEV_CUR) - 包含时间步长的分段的标准差。 仅为标准差变化类型创建此字段。

  • 前标准差 (STDEV_BEF) - 包含前一时间步长的分段标准差。 如果时间步长不是变化点,则 当前标准差前标准差 的值将相等,如果时间步长是变化点,则值将不同。 仅为标准差变化类型创建此字段。

  • 当前计数均值 (MEAN_CUR) - 包含时间步长的分段的计数平均值。 仅为计数变化类型创建此字段。

  • 前计数均值 (MEAN_BEF) - 包含前一时间步长的分段的计数平均值。 如果时间步长不是变化点,则 当前计数均值前计数均值 的值将相等,如果时间步长是变化点,则值将不同。 仅为计数变化类型创建此字段。

  • 当前斜率 (SLOPE_CUR) - 包含时间步长的线段的斜率。 该字段仅为斜率(线性趋势)变化类型创建。

  • 前一斜率 (SLOPE_BEF) - 包含前一个时间步长的线段的斜率。 该字段仅为斜率(线性趋势)变化类型创建。

  • 当前截距 (INTRCP_CUR) - 包含时间步长的线段的截距。 该字段仅为斜率(线性趋势)变化类型创建。

  • 前一截距 (INTRCP_BEF) - 包含前一个时间步长的线段的截距。 该字段仅为斜率(线性趋势)变化类型创建。

注:

在 2D 模式下可视化时空立方体 工具的 时间序列变化点 显示主题将重新创建变化点检测的输出要素类。

变化点的检测方式

变化点检测旨在查找数据的均值、标准差或斜率从一个值变为另一个值时的时间步长。 这个问题等同于时间序列分割问题,其中一个时间序列被分成多个分段,每个分段值均具有相似的均值、标准差或斜率。 要确定(一组变化点)最适合时间序列的分段,必须能够衡量和比较不同可能分割的有效性。 可以通过计算各分割的分割成本来进行比较,成本最低的即为最优分割。

分割成本是通过将分割中各分段的单个成本相加来计算的,其中每个分段的成本基于由变化类型确定的似然函数(请参阅 变化点类型 以了解每种变化类型的分布假设)。 直观地说,分段越接近假设的变化类型分布,分割似然性越高,其成本就越低。

分段成本公式

例如,下图显示了一个具有 150 个时间步长的时间序列,其中所有值都是从标准差等于 1 的正态分布生成的。 前 50 个时间步长的平均值为 0,中间 50 个时间步长的均值增加到 10,而最后 50 个时间步长的均值减少回 0。 变化点被定义为每个新分段中的第一个时间步长,因此对于这个时间序列,时间步长 51 和 101 是均值变化时的真实变化点。 各分段的直方图表明,每个分段似乎都遵循标准差近似相等但平均值不同的正态分布,因此该分割似乎与均值平移变化类型的假设一致。 这表明此分割的似然性很高,由此产生的分割成本很低。 对于此正确分割,检测均值平移时的分割成本为 401.39。 该值本身很难解释,但可以与其他可能的分割成本进行比较。

最优分割

下图显示了一个不正确的分割,其中时间步长 31 和 121 被检测为变化点。 中间分段看起来不是正态分布的,并且比第一分段和最后一分段具有非常高的标准差。 这表明分段的数据值显示为均值平移变化类型的分布假设的可能性很低,因此分割成本应较高。 事实上,此分割成本为 2596.24,比正确分割的成本高得多。 这证实了这些变化点对于这个时间序列不是最佳的。

非最优分割

现在,假设除了两个真正变化点之外,还添加了一个不必要的变化点。 在下图中,时间步长 51、101 和 131 被识别为变化点。 虽然最后一个变化点是不必要的,但分段直方图确实以近似相等的标准差呈现正态分布,这表明了高似然性和低分割成本。 此分割成本为 401.27,比真正分割成本 (401.39) 略低。 具有不必要变化点的分割比真正的分割具有更低的分割成本,因为似然性永远不会因为包含新参数(在此情况中为新变化点)而减少。 包含额外变化点只会减少少量的成本,因为与不包含额外变化点相比,它对模型与数据的拟合几乎没有改进。

具有不必要变化点的分割

如果没有对变化点的数量的限制,则通过添加更多变化点,可以持续降低分割成本。 为防止所有时间步长被检测为变化点,必须使用 方法 参数应用两种约束类型之一。

变化点定义数量 (SegNeigh) 选项允许使用 变化点数量 参数指定要检测的变化点数。 此选项使用“分段邻域” (SegNeigh, Auger 1989) 算法在具有指定变化点数的所有可能分段中找到成本最低的分段。

自动检测变化点数 (PELT) 选项使用“修剪精确线性时间” (PELT, Killick 2012) 算法来估计变化点的数量和位置。 该算法对包含的每个额外变化点进行惩罚,将惩罚值添加到各分段成本,并找到所有可能分割中惩罚成本(分割成本加惩罚值)最低的分割。 PELT 背后的理念是,对于要检测为变化点的时间步长,其分割成本降低的值必须多于添加的惩罚值。 如果成本减少小于增加的惩罚值,则惩罚成本会增加,时间步长不会被检测为变化点。

惩罚值的选择对 PELT 的结果至关重要。 惩罚值过低可能会检测到大量错误的变化点,而惩罚值过高可能导致无法检测到真正的变化点。 PELT 中使用的惩罚值由 检测灵敏度 参数值决定。 灵敏度以 0 到 1 之间的数字形式提供,其中较高的灵敏度将通过使用较低惩罚值来检测更多的变化点。 时空立方体的每个位置在检测变化点时都会使用相同的惩罚值。

对于均值、标准差和计数的变化,惩罚值由使用以下公式的敏感度确定,其中 n 是时间序列中的时间步数:

检测灵敏度公式

最高灵敏度值 1 对应于最小化贝叶斯信息准则 (BIC)。

对于斜率的变化(线性趋势),使用更保守的惩罚公式:

斜率检测灵敏度公式

默认灵敏度值 0.5 对应于最小化 Akaike 信息准则 (AIC)。 斜率变化(线性趋势)使用更保守的惩罚公式,因为其他变化类型难以区分趋势和变化点,因此需要更大的惩罚值以避免检测到太多变化点。 但是,斜率变化(线性趋势)是为具有趋势的数据设计的,不需要那么大的惩罚值。

PELT 和 SegNeigh 都是精确递归算法,这意味着当给定固定的惩罚值或固定数量的变化点时,它们将始终返回具有全局最小分割成本的分割。 这些算法在输入时空立方体的所有位置上独立执行。

PELT 和 SegNeigh 之间的对应关系在于,如果两种方法检测到相同数量的变化点,它们将检测到与变化点相同的时间步长。 例如,如果您执行 PELT 并使用在一个位置检测六个变化点的惩罚值,然后执行 SegNeigh 并指定要检测的六个变化点,则两种方法都会检测到与变化点相同的时间步长。

最小分段长度

您可以使用 最小分段长度 参数来指定每个段内的最小时间步数。 例如,如果您有每日销售收入并指定最小分段长度为 7,则每个更改点之间至少有一周的时间。 最小分段长度的默认值是计算分段成本所需的最小值。 对于均值、标准差和计数的变化,默认值为 1,这意味着每个时间步长都可以是一个变化点。 对于斜率变化(线性趋势),默认值为 2,因为至少需要两个时间步才能将一条线拟合到分段的值。

除了使用 方法 参数应用的约束之外,最小段长度是另一个约束。 PELT 或 SegNeigh 将在所有可能的分段中找到具有最低分段成本的变化点集,这些分段中的每个分段都至少具有最小长度。

最佳做法和限制

在选择工具的参数和选项时,应该考虑几个因素。

  • 变化点检测方法分为在线或离线,本工具进行离线检测。 离线方法假设现有的时间序列有开始和结束,目标是回顾时间以确定发生变化的时间。 而在线方法将在因新值变为可用而更新的数据上持续运行。 在线检测方法的目标是在变化发生后在尽可能短的时间内实时检测新的变化。 在线和离线方法在算法、用例和对数据的假设方面存在显著差异。

  • 检测均值、标准差或计数的变化对于没有趋势且其变化发生在单个时间步长的数据最有效。 对于具有趋势的时间序列,由于平均值不断变化,许多时间步长可能会被检测为变化点。 类似地,如果变化更加平缓并且在值完全变化之前需要几个时间步长,则过渡期间的所有时间步长都可能被检测为变化点。 对于这些情况,建议您使用较低的 检测灵敏度 参数值或检测斜率变化(线性趋势)。

  • 变化点检测类似于 时间序列异常值检测 ,但在重要方面有所不同。 当一个模型更改为新模型(例如平均值变化)时,变化点检测会识别时间步长,而异常值检测会识别与单个模型显著偏离的时间步长。 前者表示持续变化,而后者表示短期异常。

  • 对于表示计数的分析变量, 更改类型 参数的 计数 选项通常最适合检测计数平均值的变化 但是, 均值平移 选项可能会为计数数据提供等效或更好的结果。 这是因为在计数变化类型的模型中,假设每个分段的值遵循泊松分布,其中分段的方差等于分段的平均值。 在均值平移变化类型中,假设每个分段的值是正态分布的,因此平均值可以大于或小于值的方差。

    在泊松分布中,大多数计数都在平均值的大约两个平方根内。 例如,对于平均值等于 100 的泊松分布,大约 95% 的计数将在 80 到 120 之间 (2 * sqrt(100) = 20)。 对于均值等于 100 万的泊松分布,大多数计数将在 998,000 到 1,002,000 之间(100 万的平方根为 1,000)。 对于较大的平均值 100 万,计数范围相对更窄,其中大多数计数在平均值的 0.2% 以内。 然而,在较小的平均值 100 中,计数与平均值的差异高达 20%。 与其平均值相比,如果计数值变化超出泊松分布的预期,许多时间步长可能会被检测为变化点。 这在计数较大时最常见。 在这种情况下,建议您检测均值平移。

  • 对于所有变化类型,第一个时间步长永远不会被检测为变化点。 这是因为变化点标志着第二分段起每个新分段的开始。 因为第一个时间步长总是在第一分段,所以它永远不可能是变化点。 此外,对于斜率的变化(线性趋势),前两个时间步永远不会被检测为变化点,因为第一段中必须至少有两个时间步。

  • 对于 方法 参数的 变化点定义数量 (SegNeigh) 选项,最佳分割并不总是唯一的。 如果多个分段具有相同的分割成本,则将返回最新的可能最佳变化点。 例如,如果时间序列的所有值在一个位置都相等,则所有分段具有相同的似然性和成本。 在这种情况下,如果请求三个变化点,则最后三个时间步长将被检测为该位置的变化点。

  • 检测均值平移需要估算均值周围数据的方差,而无需了解均值平移的时间步长(变化点)。 传统方差公式在均值变化未知的情况下存在偏差,因此需使用以下稳健方差公式:

    方差公式

    检测斜率的变化还需要估计变化趋势线周围的未知方差,并使用以下稳健的方差公式:

    斜率变化公式

    如果任一公式的计算结果为零,则在假设平均值没有变化或趋势的情况下估计方差。

其他资源

有关变化点检测的详细信息,请参阅以下参考: