You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS中使用PROC TTEST执行双侧t检验的有效性及替代方案咨询

关于SAS中双侧检验的有效性及替代方案

首先明确:PROC TTEST中指定side=2是有效的,因为PROC TTEST默认的检验就是双侧,显式添加side=2只是明确指定,结果和默认一致。但你的数据是二项比例的汇总频数数据,直接用T检验并非最优选择——T检验针对连续变量的均值比较,而你的分析目标是比较同一Score下不同Segment的成功比例差异,更适合用针对二项分布的统计方法。

你的数据结构说明

每个行对应Score+Segment的组合:

  • Obs:该组合的总观测数
  • Class_obs:该组合中满足目标条件的观测数(即“成功”数)
    分析需求:按Score分组,检验Segment=0和Segment=1的成功比例是否存在双侧差异。

推荐的替代方案

方案1:PROC FREQ 卡方/Fisher精确检验

适合直接检验两个组的比例差异,支持分层(按Score),且能处理频数数据:
首先将数据整理为适合交叉表分析的格式:

/* 转换为成功/失败的长格式 */
data test_long;
  set test_data;
  /* 成功观测 */
  outcome = 1; count = Class_obs; output;
  /* 失败观测 */
  outcome = 0; count = Obs - Class_obs; output;
run;

/* 按Score分层,检验Segment与outcome的关联 */
proc freq data=test_long;
  by Score;
  tables Segment*outcome / chisq exact;
  weight count; /* 指定频数权重 */
run;

输出中:

  • Pearson卡方或似然比卡方的p值即为双侧检验结果(样本量较大时适用)
  • 若样本量较小或比例接近0/1,查看Fisher精确检验的p值

方案2:PROC GENMOD 二项广义线性模型

适合从建模角度检验Segment的效应,同时考虑二项分布的方差结构:

proc genmod data=test_data;
  by Score;
  /* 拟合二项模型,响应变量为成功数/总观测数 */
  model Class_obs/Obs = Segment / dist=binomial link=logit type3;
run;

输出的Type 3 Analysis of Effects表中,Segment对应的p值就是双侧检验结果,用于判断不同Segment的成功比例是否存在显著差异。

关于原始PROC TTEST的使用说明

如果硬要使用PROC TTEST,你需要先计算每个组的比例,再对每个Score下的两个Segment的比例做T检验:

/* 计算比例 */
data test_prop;
  set test_data;
  prop = Class_obs / Obs;
run;

/* 按Score分组做双侧T检验 */
proc ttest data=test_prop side=2;
  by Score;
  class Segment;
  var prop;
run;

但这种方法存在明显缺陷:

  • 未考虑比例的二项分布特性,仅在大样本下近似符合正态分布假设
  • 丢失了原始频数信息,忽略了样本量对结果的影响
    因此仅作为备选,不推荐优先使用。

内容的提问来源于stack exchange,提问作者LdM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:54:42