双样本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 }