正態性檢驗通過觀測值判斷總體是否服從常態分佈,是統計判決中重要的一種特殊的擬合優度假設檢驗。本文為您介紹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 | +------------+------------+------------+------------+------------+