全部產品
Search
文件中心

Platform For AI:正態檢驗

更新時間:Jul 13, 2024

正態性檢驗通過觀測值判斷總體是否服從常態分佈,是統計判決中重要的一種特殊的擬合優度假設檢驗。本文為您介紹Designer提供的正態檢驗。

正態檢驗組件由Anderson-Darling TestKolmogorov-Smirnov TestQQ圖檢驗方法組成,您可以選擇一種或多種檢驗方法。

  • 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

輸入表選擇列名類型。支援選擇多列,類型為DOUBLEBIGINT

inputTablePartitions

輸入表分區名稱。

””

enableQQplot

使用QQ圖檢驗。取值為truefalse

true

enableADtest

使用Anderson-Darling檢驗。取值為truefalse

true

enableKStest

使用Kolmogorov-Smirnov檢驗。取值為truefalse

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;
  • 輸入說明

    輸入格式:選擇需要計算的列,支援選擇多列。類型為DOUBLEBIGINT

  • 輸出說明

    輸出格式:圖和結果表,結果表的欄位如下。結果表有兩個分區:

    • p=test的分區是Anderson-Darling檢驗或Kolmogorov-Smirnov檢驗的結果。當enableADtesttrueenableKStesttrue時會輸出資料。

    • p=plot是QQ圖的資料,當enableQQplottrue時會輸出資料,並複用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       |
    +------------+------------+------------+------------+------------+