正态性检验通过观测值判断总体是否服从正态分布,是统计判决中重要的一种特殊的拟合优度假设检验。本文为您介绍Designer提供的正态检验。
正态检验组件由Anderson-Darling Test、Kolmogorov-Smirnov Test和QQ图检验方法组成,您可以选择一种或多种检验方法。
Anderson-Darling Test是将样本数据的经验累积分布函数与假设数据呈正态分布时期望的分布进行比较。如果实测差异足够大,该检验将否定总体呈正态分布的假设。
Kolmogorov-Smirnov是比较两个观测值分布的检验方法。
QQ图通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况。在样本量>1000时,系统会采样进行计算并输出QQ图,因此图中的数据点不一定覆盖所有样本。
组件配置
您可以使用以下任意一种方式,配置正态检验组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
页签 | 参数 | 描述 |
字段设置 | 选择字段列 | 无 |
参数设置 | Anderson-Darling检验 | 取值为:
默认值为是。 |
Kolmogorov-Smirnov检验 | 取值为:
默认值为是。 | |
使用QQ图 | 取值为:
默认值为是。 | |
执行调优 | 计算的核心数 | 计算的核心数,取值为正整数。 |
每个核心的内存(MB) | 每个核心的内存。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
PAI -name normality_test
-project algo_public
-DinputTableName=test
-DoutputTableName=test_out
-DselectedColNames=col1,col2
-Dlifecycle=1;
参数名称 | 是否必选 | 描述 | 默认值 |
inputTableName | 是 | 输入表的名称。 | 无 |
outputTableName | 是 | 输出表名称列表。 | 无 |
selectedColNames | 否 | 输入表选择列名类型。支持选择多列,类型为DOUBLE或BIGINT。 | 无 |
inputTablePartitions | 否 | 输入表分区名称。 | ”” |
enableQQplot | 否 | 使用QQ图检验。取值为true或false。 | true |
enableADtest | 否 | 使用Anderson-Darling检验。取值为true或false。 | true |
enableKStest | 否 | 使用Kolmogorov-Smirnov检验。取值为true或false。 | true |
lifecycle | 否 | 指定输出表的生命周期。取值为整数,且≥-1。当为默认值-1时,表示不设置生命周期。 | -1 |
coreNum | 否 | 与参数memSizePerCore配对使用,取值为正整数。当为默认值-1时,系统会根据输入数据量计算所取instance的数量。 | -1 |
memSizePerCore | 否 | 单个节点内存大小,单位MB。取值为正整数,范围为(100, 64*1024)。当为默认值-1时,系统会根据输入数据量计算所需内存大小。 | -1 |
示例
数据生成
drop table if exists normality_test_input; create table normality_test_input as select * from ( select 1 as x union all select 2 as x union all select 3 as x union all select 4 as x union all select 5 as x union all select 6 as x union all select 7 as x union all select 8 as x union all select 9 as x union all select 10 as x ) tmp;
PAI命令
PAI -name normality_test -project algo_public -DinputTableName=normality_test_input -DoutputTableName=normality_test_output -DselectedColNames=x -Dlifecycle=1;
输入说明
输入格式:选择需要计算的列,支持选择多列。类型为DOUBLE或BIGINT。
输出说明
输出格式:图和结果表,结果表的字段如下。结果表有两个分区:
p=test
的分区是Anderson-Darling检验或Kolmogorov-Smirnov检验的结果。当enableADtest
为true或enableKStest
为true时会输出数据。p=plot
是QQ图的数据,当enableQQplot
为true时会输出数据,并复用p=test
的列。即当p=plot
时,testvalue列记录原观测数据(QQ图的x轴),pvalue列记录如果服从正态分布的预期数据(QQ图的y轴)。
列名
数据类型
含义
colName
STRING
列名
testname
STRING
检验名
testvalue
DOUBLE
检验值/QQ图x轴
pvalue
DOUBLE
检验的p值/QQ图y轴
p
DOUBLE
分区名
输出表如下。
+------------+------------+------------+------------+------------+ | colname | testname | testvalue | pvalue | p | +------------+------------+------------+------------+------------+ | x | NULL | 1.0 | 0.8173291742279805 | plot | | x | NULL | 2.0 | 2.470864450785345 | plot | | x | NULL | 3.0 | 3.5156067948020056 | plot | | x | NULL | 4.0 | 4.3632330349313095 | plot | | x | NULL | 5.0 | 5.128868067945126 | plot | | x | NULL | 6.0 | 5.871131932054874 | plot | | x | NULL | 7.0 | 6.6367669650686905 | plot | | x | NULL | 8.0 | 7.4843932051979944 | plot | | x | NULL | 9.0 | 8.529135549214654 | plot | | x | NULL | 10.0 | 10.182670825772018 | plot | | x | Anderson_Darling_Test | 0.1411092332197832 | 0.9566579606430077 | test | | x | Kolmogorov_Smirnov_Test | 0.09551932503797644 | 0.9999888659426232 | test | +------------+------------+------------+------------+------------+