变化点检测 (时空模式挖掘)

摘要

在时空立方体的每个位置的时间序列的统计属性发生变化时检测时间步长。

该工具可以检测连续变量的平均值、标准偏差或线性趋势的变化以及计数变量的平均值的变化。 每个位置的变化点数量可以由工具确定,或者可以提供用于所有位置的变化点定义数量。 变化点将每个时间序列划分为多个分段,其中每个分段中的值具有相似的均值、标准差或线性趋势。 变化点定义为每个新分段的第一个时间步长,因此变化点的数量总是比段的数量少一个。

了解有关“变化点检测”工作原理的详细信息

插图

“变化点检测”工具图示

使用情况

  • 当将方法参数设置为自动检测变化点数量时,将使用检测灵敏度参数来控制检测的灵敏度。 灵敏度越高,每个位置的变化点就越多。 灵敏度的选择对分析结果至关重要,建议尝试多个值并比较结果。

    了解有关检测灵敏度的详细信息

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

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

  • 此工具接受由时空模式挖掘工具箱中的各种工具创建的 netCDF 文件。

    了解有关创建时空立方体的详细信息

  • 输出要素参数值将添加到内容窗格,并根据在每个位置检测到的变化点数量以及第一个和最后一个变化点的日期字段进行渲染。 要素的弹出窗口包括一个折线图,显示时间序列值、变化点以及每个变化点之间分段的均值或标准差的估算值。

  • 输出要素参数值的图层时间基于第一个更改点的日期。 您可以使用时间滑块根据第一个更改点的日期过滤位置。 图层时间可以更改为图层属性中最后一个更改点的日期。

  • 输入时空立方体将使用分析结果进行更新,并且可以在 3D 模式下显示时空立方体工具中使用显示主题参数的时间序列变化点选项以在 3D 模式下显示结果。 输出将包含时空立方体的每个时间步长一个要素,其中包含指示时间步长是否为变化点的字段,以及该分段的均值或标准差的估算值。 使用在 2D 模式下显示时空立方体工具中的时空立方体将重新创建变化点检测的输出要素类。

  • 该工具支持并行处理以分析不同处理内核的不同位置,默认情况下使用 50% 的可用处理器。 处理器数目可以通过使用并行处理因子环境增加或减少。

参数

标注说明数据类型
输入时空立方体

包含要分析的变量的时空立方体。 时空立方体具有 .nc 文件扩展名,是使用时空模式挖掘工具箱中的各种工具创建的。

File
分析变量

包含每个位置的时间序列值的时空立方体的数值变量。

String
输出要素

将包含变化点检测结果的输出要素类。 图层显示在每个位置检测到的变化点数量,并包含显示时间序列值、变化点和每个分段平均值或标准差的估算值的弹出图表。

Feature Class
变化类型
(可选)

为检测到的变化指定类型。 各选项用于指定时间序列的统计属性,假设在每个分段中都是常数。 该值将在时间序列中的每个变化点更改为一个新的常数值。

  • 均值漂移将检测平均值的平移。 这是默认设置。
  • 标准差将检测标准差的变化。
  • 坡度(线性趋势)将检测坡度的变化(线性趋势)。
  • 计数将检测计数数据平均值的变化。
String
方法
(可选)

指定是自动检测变化点的数量还是由用于所有位置的变化点定义数量指定。

  • 自动检测变化点数 (PELT)将自动检测变化点数量。 检测灵敏度将由检测灵敏度参数定义。 这是默认设置。
  • 变化点定义数量 (SegNeigh)变化点数量将由变化点数量参数定义。
String
变化点数量
(可选)

将检测各位置的变化点数量。 默认值为 1。

Long
检测灵敏度
(可选)

介于 0 和 1 之间的数值,用于定义检测的灵敏度。 值越大,在每个位置检测到的变化点越多。 默认值为 0.5。

Double
最小分段长度
(可选)

每分段内的最小时间步长数。 变化点会将每个时间序列划分为多个分段,其中每个分段应至少具有此数量的时间步长。 对于均值、标准差和计数的变化,默认值为 1,这意味着每个时间步长都可以是一个变化点。 对于坡度变化(线性趋势),默认值为 2,因为至少需要两个值才可以拟合线。 该值必须小于时间序列中时间步长数的一半。

Long

arcpy.stpm.ChangePointDetection(in_cube, analysis_variable, output_features, {change_type}, {method}, {num_change_points}, {sensitivity}, {min_seg_len})
名称说明数据类型
in_cube

包含要分析的变量的时空立方体。 时空立方体具有 .nc 文件扩展名,是使用时空模式挖掘工具箱中的各种工具创建的。

File
analysis_variable

包含每个位置的时间序列值的时空立方体的数值变量。

String
output_features

将包含变化点检测结果的输出要素类。 图层显示在每个位置检测到的变化点数量,并包含显示时间序列值、变化点和每个分段平均值或标准差的估算值的弹出图表。

Feature Class
change_type
(可选)

为检测到的变化指定类型。 各选项用于指定时间序列的统计属性,假设在每个分段中都是常数。 该值将在时间序列中的每个变化点更改为一个新的常数值。

  • MEAN将检测平均值的平移。 这是默认设置。
  • STANDARD_DEVIATION将检测标准差的变化。
  • SLOPE将检测坡度的变化(线性趋势)。
  • COUNT将检测计数数据平均值的变化。
String
method
(可选)

指定是自动检测变化点的数量还是由用于所有位置的变化点定义数量指定。

  • AUTO_DETECT将自动检测变化点数量。 检测灵敏度将由 sensitivity 参数定义。 这是默认设置。
  • DEFINED_NUMBER变化点数量将由 num_change_points 参数定义。
String
num_change_points
(可选)

将检测各位置的变化点数量。 默认值为 1。

Long
sensitivity
(可选)

介于 0 和 1 之间的数值,用于定义检测的灵敏度。 值越大,在每个位置检测到的变化点越多。 默认值为 0.5。

Double
min_seg_len
(可选)

每分段内的最小时间步长数。 变化点会将每个时间序列划分为多个分段,其中每个分段应至少具有此数量的时间步长。 对于均值、标准差和计数的变化,默认值为 1,这意味着每个时间步长都可以是一个变化点。 对于坡度变化(线性趋势),默认值为 2,因为至少需要两个值才可以拟合线。 该值必须小于时间序列中时间步长数的一半。

Long

代码示例

ChangePointDetection 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 ChangePointDetection 函数。

import arcpy
arcpy.env.workspace = "C:/Analysis"

# Automatically detect changes in population counts
arcpy.stpm.ChangePointDetection("Population.nc", "Pop_NONE_ZEROS", 
                            "Analysis.gdb/Population_Change_Points", 
                            "COUNT", "AUTO_DETECT", "", 0.5, 1)
ChangePointDetection 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 ChangePointDetection 函数。

# Detect changes in air temperature.

# Import system modules.
import arcpy

# Set property to overwrite existing output.
arcpy.env.overwriteOutput = True

# Set workspace.
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace

# Detect the largest mean shift of temperature measurements.
arcpy.stpm.ChangePointDetection("Air_Temp.nc", "MAX_DEGREES_F", 
                            "Analysis.gdb/Temperature_Change_Points", 
                            "MEAN", "DEFINED_NUMBER", 1, "", 3)

# Create a feature class visualizing the change point results in a 3D scene view.
arcpy.stpm.VisualizeSpaceTimeCube3D("Air_Temp.nc", "Pop_NONE_ZEROS", 
                                    "VALUE", "Analysis.gdb/ForecastsFC")