双样本T检验

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

两总体方差是否相等

两个总体值的方差是否相等,取值包括truefalse。

节点个数

节点个数,与参数单个节点内存大小配对使用,正整数。范围为[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检验的列,只能为DOUBLEINT类型。

yTableName

输入表名称y。

yTablePartitions

输入表y中参与检验的分区。系统支持以下格式:

  • Partition_name=value

  • name1=value1/name2=value2:多级分区

说明

指定多个分区时,分区之间使用英文逗号(,)分隔。

所有分区

yColName

输入表y中参与T检验的列,只能为DOUBLEINT类型。

paired

  • true:配对性T检验。

  • false:独立性T检验。

false

alternative

对立假设的类型,取值包括:two.sided、less、greater。

two.sided

mu

假设的均值,只能为DOUBLE类型。

0

varEqual

两个总体值的方差是否相等。可选truefalse。

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
    }