正態(tài)檢驗(yàn)
正態(tài)性檢驗(yàn)通過(guò)觀測(cè)值判斷總體是否服從正態(tài)分布,是統(tǒng)計(jì)判決中重要的一種特殊的擬合優(yōu)度假設(shè)檢驗(yàn)。本文為您介紹Designer提供的正態(tài)檢驗(yàn)。
正態(tài)檢驗(yàn)組件由Anderson-Darling Test、Kolmogorov-Smirnov Test和QQ圖檢驗(yàn)方法組成,您可以選擇一種或多種檢驗(yàn)方法。
Anderson-Darling Test是將樣本數(shù)據(jù)的經(jīng)驗(yàn)累積分布函數(shù)與假設(shè)數(shù)據(jù)呈正態(tài)分布時(shí)期望的分布進(jìn)行比較。如果實(shí)測(cè)差異足夠大,該檢驗(yàn)將否定總體呈正態(tài)分布的假設(shè)。
Kolmogorov-Smirnov是比較兩個(gè)觀測(cè)值分布的檢驗(yàn)方法。
QQ圖通過(guò)把測(cè)試樣本數(shù)據(jù)的分位數(shù)與已知分布相比較,從而來(lái)檢驗(yàn)數(shù)據(jù)的分布情況。在樣本量>1000時(shí),系統(tǒng)會(huì)采樣進(jìn)行計(jì)算并輸出QQ圖,因此圖中的數(shù)據(jù)點(diǎn)不一定覆蓋所有樣本。
組件配置
您可以使用以下任意一種方式,配置正態(tài)檢驗(yàn)組件參數(shù)。
方式一:可視化方式
在Designer工作流頁(yè)面配置組件參數(shù)。
頁(yè)簽 | 參數(shù) | 描述 |
字段設(shè)置 | 選擇字段列 | 無(wú) |
參數(shù)設(shè)置 | Anderson-Darling檢驗(yàn) | 取值為:
默認(rèn)值為是。 |
Kolmogorov-Smirnov檢驗(yàn) | 取值為:
默認(rèn)值為是。 | |
使用QQ圖 | 取值為:
默認(rèn)值為是。 | |
執(zhí)行調(diào)優(yōu) | 計(jì)算的核心數(shù) | 計(jì)算的核心數(shù),取值為正整數(shù)。 |
每個(gè)核心的內(nèi)存(MB) | 每個(gè)核心的內(nèi)存。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數(shù)。您可以使用SQL腳本組件進(jìn)行PAI命令調(diào)用,詳情請(qǐng)參見SQL腳本。
PAI -name normality_test
-project algo_public
-DinputTableName=test
-DoutputTableName=test_out
-DselectedColNames=col1,col2
-Dlifecycle=1;
參數(shù)名稱 | 是否必選 | 描述 | 默認(rèn)值 |
inputTableName | 是 | 輸入表的名稱。 | 無(wú) |
outputTableName | 是 | 輸出表名稱列表。 | 無(wú) |
selectedColNames | 否 | 輸入表選擇列名類型。支持選擇多列,類型為DOUBLE或BIGINT。 | 無(wú) |
inputTablePartitions | 否 | 輸入表分區(qū)名稱。 | ”” |
enableQQplot | 否 | 使用QQ圖檢驗(yàn)。取值為true或false。 | true |
enableADtest | 否 | 使用Anderson-Darling檢驗(yàn)。取值為true或false。 | true |
enableKStest | 否 | 使用Kolmogorov-Smirnov檢驗(yàn)。取值為true或false。 | true |
lifecycle | 否 | 指定輸出表的生命周期。取值為整數(shù),且≥-1。當(dāng)為默認(rèn)值-1時(shí),表示不設(shè)置生命周期。 | -1 |
coreNum | 否 | 與參數(shù)memSizePerCore配對(duì)使用,取值為正整數(shù)。當(dāng)為默認(rèn)值-1時(shí),系統(tǒng)會(huì)根據(jù)輸入數(shù)據(jù)量計(jì)算所取instance的數(shù)量。 | -1 |
memSizePerCore | 否 | 單個(gè)節(jié)點(diǎn)內(nèi)存大小,單位MB。取值為正整數(shù),范圍為(100, 64*1024)。當(dāng)為默認(rèn)值-1時(shí),系統(tǒng)會(huì)根據(jù)輸入數(shù)據(jù)量計(jì)算所需內(nèi)存大小。 | -1 |
示例
數(shù)據(jù)生成
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;
輸入說(shuō)明
輸入格式:選擇需要計(jì)算的列,支持選擇多列。類型為DOUBLE或BIGINT。
輸出說(shuō)明
輸出格式:圖和結(jié)果表,結(jié)果表的字段如下。結(jié)果表有兩個(gè)分區(qū):
p=test
的分區(qū)是Anderson-Darling檢驗(yàn)或Kolmogorov-Smirnov檢驗(yàn)的結(jié)果。當(dāng)enableADtest
為true或enableKStest
為true時(shí)會(huì)輸出數(shù)據(jù)。p=plot
是QQ圖的數(shù)據(jù),當(dāng)enableQQplot
為true時(shí)會(huì)輸出數(shù)據(jù),并復(fù)用p=test
的列。即當(dāng)p=plot
時(shí),testvalue列記錄原觀測(cè)數(shù)據(jù)(QQ圖的x軸),pvalue列記錄如果服從正態(tài)分布的預(yù)期數(shù)據(jù)(QQ圖的y軸)。
列名
數(shù)據(jù)類型
含義
colName
STRING
列名
testname
STRING
檢驗(yàn)名
testvalue
DOUBLE
檢驗(yàn)值/QQ圖x軸
pvalue
DOUBLE
檢驗(yàn)的p值/QQ圖y軸
p
DOUBLE
分區(qū)名
輸出表如下。
+------------+------------+------------+------------+------------+ | 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 | +------------+------------+------------+------------+------------+