全部產品
Search
文件中心

Platform For AI:雙樣本T檢驗

更新時間:Jul 13, 2024

雙樣本T檢驗基於統計學原理用來檢驗兩個樣本的均值是否有顯著差異。本文為您介紹Designer提供的雙樣本T檢驗的參數配置和使用樣本。

組件配置

您可以使用以下任意一種方式,配置雙樣本T檢驗組件參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數

描述

欄位設定

樣本1所在列

進行檢驗的樣本1所在列。

樣本2所在列

進行檢驗的樣本2所在列。

參數設定

T檢驗類型

T檢驗的類型,取值如下:

  • 獨立性T檢驗:檢驗兩個獨立樣本的均值是否有顯著差異。檢驗的兩個樣本彼此相互獨立且必須總體服從常態分佈。

  • 配對性T檢驗:檢驗兩個配對樣本的均值是否有顯著差異。

對立假設類型

對立假設的類型,取值如下:

  • two.sided:雙側檢驗。

  • less:左側檢驗。

  • greater:右側檢驗。

信賴度

檢驗結果的信賴度,取值包括:0.8、0.9、0.95、0.99、0.995、0.999。

假設均值大小

假設均值的大小,預設值為0。

兩總體方差是否相等

兩個總體值的方差是否相等,取值包括true和false。

節點個數

節點個數,與參數單個節點記憶體大小配對使用,正整數。範圍為[1, 9999]

單個節點記憶體大小,單位MB

單個節點記憶體大小,單位MB,正整數。範圍為[1024, 64*1024]

方式二:PAI命令方式

使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

pai -name t_test 
    -project algo_public 
    -DxTableName=pai_t_test_all_type
    -DxColName=col1_double
    -DxTablePartitions=ds=2010/dt=1
    -DyTableName=pai_t_test_all_type
    -DyColName=col1_double
    -DyTablePartitions=ds=2010/dt=1 
    -DoutputTableName=pai_t_test_out
    -Dalternative=less
    -Dmu=47
    -DconfidenceLevel=0.95
    -Dpaired=false
    -DvarEqual=true

參數名稱

是否必選

描述

預設值

xTableName

輸入表名稱x。

xTablePartitions

輸入表x中參與T檢驗的分區。系統支援以下格式:

  • Partition_name=value

  • name1=value1/name2=value2:多級分區

說明

指定多個分區時,分區之間使用英文逗號(,)分隔。

所有分區

xColName

輸入表x中參與T檢驗的列,只能為DOUBLE或INT類型。

yTableName

輸入表名稱y。

yTablePartitions

輸入表y中參與檢驗的分區。系統支援以下格式:

  • Partition_name=value

  • name1=value1/name2=value2:多級分區

說明

指定多個分區時,分區之間使用英文逗號(,)分隔。

所有分區

yColName

輸入表y中參與T檢驗的列,只能為DOUBLE或INT類型。

paired

  • true:配對性T檢驗。

  • false:獨立性T檢驗。

false

alternative

對立假設的類型,取值包括:two.sided、less、greater。

two.sided

mu

假設的均值,只能為DOUBLE類型。

0

varEqual

兩個總體值的方差是否相等。可選true或false。

false

confidenceLevel

檢測結果的信賴度,取值包括:0.8、0.9、0.95、0.99、0.995、0.999。

0.95

coreNum

節點個數,與參數memSizePerCore配對使用,正整數。範圍為[1, 9999]

自動計算

memSizePerCore

單個節點記憶體大小,單位MB,正整數。範圍為[1024, 64*1024]

自動計算

lifecycle

指定輸出表的生命週期。

如果輸入表為普通表非分區表,不建議設定coreNummemSizePerCore,由演算法自動計算。在資源有限的情況下,您可以使用如下代碼計算:

def CalcCoreNumAndMem(row,centerCount,kOneCoreDataSize=1024):
    """計算節點個數和單個節點記憶體。           
       Args:
           row:輸入錶行數。
           centerCount:輸入表列數。
           kOneCoreDataSize:單個節點計算的資料量,單位M,正整數,預設1024。
       Return:
           coreNum,memSizePerCore                 
       Example:
           coreNum,memSizePerCore = CalcCoreNumAndMem(1000,99,100,kOneCoreDataSize=2048)

    """
    kMBytes = 1024.0 * 1024.0
    #按數量劃分,計算節點個數。
    coreNum = max(1, int(row * 2 * 8 / kMBytes / kOneCoreDataSize))
    #單個節點記憶體 = 資料量大小。
    memSizePerCore = max(1024,int(kOneCoreDataSize * 2))
    return coreNum,memSizePerCore

使用樣本

  • 測試資料

    create table pai_test_input as
    select * from
    (
      select 1 as f0,2 as f1
      union all
      select 1 as f0,3 as f1
      union all
      select 1 as f0,4 as f1
      union all
      select 0 as f0,3 as f1
      union all
      select 0 as f0,4 as f1
    )tmp;
  • PAI命令列

    pai -name t_test 
        -project algo_public 
        -DxTableName=pai_test_input
        -DxColName=f0
        -DyTableName=pai_test_input
        -DyColName=f1
        -DyTablePartitions=ds=2010/dt=1 
        -DoutputTableName=pai_t_test_out
        -Dalternative=less
        -Dmu=47
        -DconfidenceLevel=0.95
        -Dpaired=false
        -DvarEqual=true
  • 輸出說明

    輸出一個只有一行一列的JSON格式表。

    {
        "AlternativeHypthesis": "difference in means not equals to 0",
        "ConfidenceInterval": "(-2.5465, -0.4535)",
        "ConfidenceLevel": 0.95,
        "alpha": 0.05000000000000004,
        "df": 19,
        "mean of the differences": -1.5,
        "p": 0.008000000000000007,
        "t": -3
    }