OUTLIERS 命令

识别数值域中的统计异常值。可以为整个域识别异常值,或者基于一个或多个字符、数值或日期时间键域中的相同值为单个组进行识别。

语法

OUTLIERS {AVERAGE|MEDIAN} {PKEY 键域 <...n>|NOKEY} ON 数值域 <OTHER  <...n>> NUMSTDEV 标准偏差数 <IF 测试> <TO {SCREEN|表名称}> <PRESORT> <WHILE 测试> <FIRST 范围|NEXT 范围> <OPEN>

说明

您不能在本地针对服务器表运行 OUTLIERS 命令。

您必须完整指定 OUTLIERS 命令名称。您不能缩略它。

参数

名称 描述
AVERAGE | MEDIAN

用于计算数值域(异常值域)中的值的中点的方法。

  • AVERAGE 计算这些值的平均值
  • MEDIAN 计算这些值的中值

为下列两者之一计算中点:

  • 整个数值域
  • 每个键域组的数值类型值

该中心点随后被用于计算该数值域或者每个组的标准偏差。

说明

如果您指定 MEDIAN,则数值域必须是排序的。如果数值域未经排序,请使用 PRESORT。

提示

如果您审查以寻找孤立点的数据被显著歪曲,则 MEDIAN 可能生成更能代表该数据块的结果。

PKEY 键域 <...n> | NOKEY

如果您指定 PKEY,则在组级别识别异常值。如果您指定 NOKEY,则在域级别识别异常值。

  • PKEY 键域 要用来对表中的数据进行分组的一个或多个域

    键域可以是字符、数值或者日期时间类型。多个域必须以空格分隔,并且可以具有不同的数据类型。

    如果您指定一个以上的域,则会创建嵌套组。嵌套遵循您指定域的顺序。

    对于每个键域组,都会为数值域中的组数值类型值计算一个标准偏差。组标准偏差被用作识别组孤立点的基础。

    说明

    键域必须是排序的。如果一个或多个域未经排序,请使用 PRESORT。

  • NOKEY 不对表中的数据进行排序

    为整个数值域计算一个标准偏差。域标准偏差被用作识别域孤立点的基础。

ON 数值域

要审查其是否存在孤立点的数值域。您一次只能审查一个域。

异常值是落在由标准偏差或者由域或组标准偏差的指定倍数设立的上边界和下边界外部的值。

OTHER <...n>

可选

要包括在输出中的一个或多个其他域。

说明

键域和异常值域被自动包括在输出表中,而不需要使用 OTHER 指定。

NUMSTDEV 标准偏差数

数值域中,从平均值或中值到上异常边界和下异常边界的标准偏差数。您可以指定任何正整数或小数 (0.5, 1, 1.5, 2 . . . )

用于创建异常值边界的公式是:

平均值/中值 ± (标准偏差数 * 标准偏差)

说明

标准偏差是对数据集的离差 — 即值的分散性的度量。异常值计算使用总体标准偏差。

异常值边界的示例

NUMSTDEV 2

为整个数值域或者为每个键域组设立:

  • 一个比平均值或中值大两个标准偏差的异常值上边界

    平均值/中值 + (2 * SD)

  • 一个比平均值或中值小两个标准偏差的异常值下边界

    平均值/中值 – (2 * SD)

任何大于上边界或者小于下边界的值都作为异常值被包括在输出结果中。

说明

对于相同数据集,随着您增加标准偏差数中的值,您可能减小返回的异常值的数量。

IF 测试

可选

一个条件表达式,它必须为真以便处理每个记录。仅对满足条件的那些记录执行该命令。

说明

在应用任何范围参数(WHILE、FIRST、NEXT)之后,仅针对表中的剩余记录评估 IF 条件。

TO SCREEN | 表名称

可选

要将命令结果发送到的位置:

  • SCREEN 在 Analytics 显示区域中显示结果
  • 表名将结果保存到一个 Analytics 表

    请将表名指定为具有 .FIL 文件扩展名的带引号的字符串。例如:TO "Output.FIL"

    默认情况下,表数据文件 (.FIL) 被保存到包含 Analytics 项目的文件夹。

    请使用绝对或相对文件路径将该数据文件保存到另外的现有文件夹:

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    说明

    表名称被限制为不超过 64 个字母数字字符(不包括 .FIL 扩展名)。该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。该名称不能以数字开头。

PRESORT

可选

在执行命令之前执行排序操作。

如果您指定 PRESORT 并且: 排序依据:
PKEY、AVERAGE
  • 一个或多个键域
  • 首先是一个或多个键域,然后是数值域(如果计算了计算域

    说明

    对计算数值域进行排序是 Analytics 的内部技术要求。

PKEY、MEDIAN

首先是一个或多个键域,然后是数值域

NOKEY、AVERAGE

不排序

NOKEY、MEDIAN 数值域

提示

如果输入表中的一个或多个相应域已经排序,则可以通过不指定 PRESORT 节省处理时间。

说明

在 GROUP 命令内部不可使用 PRESORT。

WHILE 测试

可选

一个条件表达式,它必须为真以便处理每个记录。该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。

说明

如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。

FIRST 范围 | NEXT 范围

可选

要处理的记录数:

  • FIRST 从第一个记录开始处理,直到达到指定的记录数为止
  • NEXT 从当前选定的记录开始处理,直到达到指定的记录数为止

请使用范围指定要处理的记录数。

如果您省略 FIRST 和 NEXT,则会默认处理所有记录。

OPEN

可选

在命令执行后打开该命令创建的表。仅当该命令创建输出表时有效。

示例

识别反常的交易金额

您想要识别 Sample Project.acl 中的整个 Ar 表中的反常交易金额。

您决定将异常值边界设置为 Amount 域的标准偏差的 3 倍。该测试返回包含 772 个记录的表中的 16 个异常值。

OPEN 应收账款
OUTLIERS AVERAGE NOKEY ON Amount NUMSTDEV 3 PRESORT TO "Outliers_AR.fil" OPEN

您重复执行该测试,但是将标准偏差倍数增加到 3.5。该测试现在只返回 6 个异常值,因为异常值边界远离 Amount 域中的值的中心点。

OPEN 应收账款
OUTLIERS AVERAGE NOKEY ON Amount NUMSTDEV 3.5 PRESORT TO "Outliers_AR.fil" OPEN

识别对每个客户而言反常的交易金额

对于 Sample Project.acl 中的 Ar 表中的每个客户,您想要识别任何反常的交易金额。

您决定将异常值边界设置为每个客户的交易组的标准偏差的 3 倍。

OPEN 应收账款
OUTLIERS AVERAGE PKEY No ON Amount NUMSTDEV 3 PRESORT TO "Outliers_Customer_AR.fil" OPEN

该测试返回 7 个异常值。为每个客户的交易组报告标准偏差和平均值:

  客户编号 (No) 交易金额 STDEV AVERAGE 组号
1 065003 4,954.64 1015.58 833.83 1
2 262001 3,567.34 772.44 438.81 2
3 262001 (2,044.82) 772.44 438.81 2
4 376005 (931.55) 411.18 484.57 3
5 501657 5,549.19 1332.80 441.14 4
6 811002 3,409.82 634.20 672.10 5
7 925007 3,393.87 736.48 906.16 6

如何为客户 262001 识别异常值

客户 262001 在 Ar 表中具有 101 个交易,其中有两个被报告为异常值,因为它们超过该客户的异常值边界::

孤立点 下边界 上边界 孤立点
(2,044.82) (1,878.51) 2,756.13 3,567.34

如何为客户 262001 计算异常值边界

异常值边界是客户 262001 的所有交易的平均值,加上或减去这些交易的标准偏差的指定倍数。

客户 262001 的所有交易的平均值 438.81
标准偏差的指定倍数 3
交易的标准偏差 772.44

438.81 ± (3 * 772.44)

= 438.81 ± 2,317.32

= (1,878.51)(下边界)

= 2,756.13(上边界)

使用 MEDIAN 识别超出每个客户正常值的交易金额

您使用 MEDIAN 而非 AVERAGE 执行与您在上面的示例中执行的测试相同的异常交易测试。

OPEN 应收账款
OUTLIERS MEDIAN PKEY No ON Amount NUMSTDEV 3 PRESORT TO "Outliers_Customer_AR_Median.fil" OPEN

该测试返回 10 个异常交易,而不是在之前测试中返回的 7 个交易。根据数据性质的不同,MEDIAN 和 AVERAGE 可能返回稍微不同的结果:

  客户编号 (No) 交易金额 STDEV MEDIAN 组号
1 065003 4,954.64 1015.58 663.68 1
2 262001 (2,044.82) 772.44 450.67 2
3 262001 3,567.34 772.44 450.67 2
4 376005 (931.55) 411.18 517.16 3
5 501657 4,426.14 1332.80 146.80 4
6 501657 5,549.19 1332.80 146.80 4
7 811002 3,409.82 634.20 624.53 5
8 925007 2,972.78 736.48 717.88 6
9 925007 3,030.71 736.48 717.88 6
10 925007 3,393.87 736.48 717.88 6

如何为每个客户计算异常值边界

孤立点边界是每个客户的交易的中值,加上或减去这些交易的标准偏差的指定倍数。

例如,对于客户 262001:450.67 ± (3 * 772.44)

备注

说明

有关此命令工作原理的详细信息,请参见 Analytics 帮助

将异常值边界域添加至结果表

Analytics 自动将 STDEVAVERAGEMEDIAN 计算域添加至异常值结果表。您可能会发现,在结果表中添加两个计算域以显示用来识别异常值的异常值边界是有用的。

  1. 打开异常值结果表。
  2. 将此表达式粘贴到 Analytics 命令行中,根据需要编辑它,然后按 Enter:
    DEFINE FIELD Lower_Boundary COMPUTED AVERAGE - (标准偏差数 * STDEV)
    • 对于标准偏差数,请替换为您使用的实际标准偏差倍数。
    • 如果您使用中值而不是平均值作为中心点,请用 MEDIAN 替换 AVERAGE。
  3. 将此表达式粘贴到 Analytics 命令行中,根据需要编辑它,然后按 Enter:
    DEFINE FIELD Upper_Boundary COMPUTED AVERAGE + (标准偏差数 * STDEV)
    • 对于标准偏差数,请替换为您使用的实际标准偏差倍数。
    • 如果您使用中值而不是平均值作为中心点,请用 MEDIAN 替换 AVERAGE。
  4. 右击视图,然后选择添加列
  5. 可用域列表中,双击 Lower_BoundaryUpper_Boundary 以将其添加到选定域列表中。
  6. 单击确定
  7. 可选。通过拖动列标题重新定位所添加的域。
ACL 脚本指南 14.1