雙樣本T檢驗基于統計學原理用來檢驗兩個樣本的均值是否有顯著差異。本文為您介紹Designer提供的雙樣本T檢驗的參數配置和使用示例。
組件配置
您可以使用以下任意一種方式,配置雙樣本T檢驗組件參數。
方式一:可視化方式
在Designer工作流頁面配置組件參數。
頁簽 | 參數 | 描述 |
字段設置 | 樣本1所在列 | 進行檢驗的樣本1所在列。 |
樣本2所在列 | 進行檢驗的樣本2所在列。 | |
參數設置 | T檢驗類型 | T檢驗的類型,取值如下:
|
對立假設類型 | 對立假設的類型,取值如下:
| |
置信度 | 檢驗結果的置信度,取值包括: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檢驗的分區。系統支持以下格式:
說明 指定多個分區時,分區之間使用英文逗號(,)分隔。 | 所有分區 |
xColName | 是 | 輸入表x中參與T檢驗的列,只能為DOUBLE或INT類型。 | 無 |
yTableName | 是 | 輸入表名稱y。 | 無 |
yTablePartitions | 否 | 輸入表y中參與檢驗的分區。系統支持以下格式:
說明 指定多個分區時,分區之間使用英文逗號(,)分隔。 | 所有分區 |
yColName | 是 | 輸入表y中參與T檢驗的列,只能為DOUBLE或INT類型。 | 無 |
paired | 否 |
| 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 | 否 | 指定輸出表的生命周期。 | 無 |
如果輸入表為普通表非分區表,不建議設置coreNum和memSizePerCore,由算法自動計算。在資源有限的情況下,您可以使用如下代碼計算:
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 }