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

如何在SAS中计算测试组与对照组的Uplift及Uplift_1?

SAS复现Uplift计算方案

针对按risk_level分组,计算测试组/对照组Uplift及Uplift_1的需求,以下是两种可靠的实现方法(假设数据集名为app_data,包含变量:risk_level、group(取值'test'/'control')、loans、approved_apps):

方法一:Proc SQL实现

通过子查询分别计算两组的Uplift,再关联计算Uplift_1,逻辑清晰且易调试:

proc sql;
    create table uplift_calc as
    select 
        a.risk_level,
        a.uplift as test_uplift,
        b.uplift as control_uplift,
        -- 处理对照组Uplift为0的情况,避免除以0错误
        case when b.uplift = 0 then . 
             else (a.uplift / b.uplift) - 1 end as uplift_1
    from 
        -- 计算测试组各risk_level的Uplift
        (select 
             risk_level,
             sum(loans)/sum(approved_apps) as uplift
         from app_data
         where group = 'test'
         group by risk_level) as a
    inner join
        -- 计算对照组各risk_level的Uplift
        (select 
             risk_level,
             sum(loans)/sum(approved_apps) as uplift
         from app_data
         where group = 'control'
         group by risk_level) as b
    on a.risk_level = b.risk_level;
quit;

方法二:Proc Summary + Data步实现

先通过聚合工具生成分组统计值,再用Data步合并计算,适合后续需要对聚合数据做更多扩展处理的场景:

步骤1:生成分组聚合数据

proc summary data=app_data nway;
    class risk_level group;
    var loans approved_apps;
    output out=group_agg sum(loans)=total_loans sum(approved_apps)=total_approved;
run;

步骤2:合并并计算Uplift指标

data uplift_calc;
    merge group_agg(where=(group='test') 
                   rename=(total_loans=test_loans total_approved=test_approved))
          group_agg(where=(group='control') 
                   rename=(total_loans=control_loans total_approved=control_approved));
    by risk_level;
    
    test_uplift = test_loans / test_approved;
    control_uplift = control_loans / control_approved;
    
    if control_uplift ne 0 then uplift_1 = (test_uplift / control_uplift) - 1;
    else uplift_1 = .; -- 对照组无有效数据时标记为缺失
    
    keep risk_level test_uplift control_uplift uplift_1;
run;

关键说明

  • Uplift的计算逻辑为组内总放款数/组内总批准数,符合应用级数据的聚合要求
  • 两种方法均处理了approved_apps总和为0或对照组Uplift为0的异常情况,避免运行错误
  • 若你的loans或approved_apps是比例而非计数变量,只需将sum()改为mean()即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:48:15