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

基于事件天数与结局数据集,用SAS绘制存活人数曲线的最简方法

如何用SAS绘制按天数统计的仍存活人数曲线?

嘿,要搞定这个需求,用SAS的PROC LIFETEST绝对是最简单的方案——它专门为生存分析设计,能自动处理删失数据,直接生成你要的“仍存活人数随天数变化”的曲线,完全不用手动去计算每个时间点的存活数。

先明确下前提:你的数据集里,我们把outcome='death'当作终点事件(也就是不再存活),其他结局(比如cholys、tx end这些)都算作删失——意思是到这个时间点,受试者还活着,只是因为其他原因停止随访了。如果你的“存活”定义不一样,后面调整下标记逻辑就行。

第一步:给数据加个终点事件标记

先生成一个指示变量,告诉SAS哪些是终点事件,哪些是删失:

data pretend_surv;
    set pretend;
    /* 把死亡标记为终点事件(1),其他情况都是删失(0) */
    event = (outcome = 'death');
run;

第二步:调用PROC LIFETEST生成曲线

一行核心代码就能搞定绘图,还能顺便拿到生存分析的统计量:

proc lifetest data=pretend_surv plots=survival(atrisk);
    time fup_time * event(0); /* 这里的(0)表示event=0是删失状态 */
    title "按天数统计的仍存活人数曲线";
run;
  • time语句:fup_time是我们的随访天数,* event(0)用来指定删失的编码——告诉SAS,当event=0时,这个时间点的受试者没有发生死亡(仍存活),只是随访结束了。
  • plots=survival(atrisk):这个参数太实用了!它不仅会画出平滑的生存曲线(纵轴是存活概率,横轴是天数),还会在曲线下方标注每个关键时间点的仍存活人数(风险人数),完全匹配你的需求。

小调整:如果存活定义不同怎么办?

比如你想把reop(再次手术)也当作终点,只要修改event变量的定义就行:

event = (outcome in ('death','reop'));

用这个方法的好处就是省事儿——不用自己写循环去统计每个时间点的存活数,SAS会自动帮你处理所有删失情况,输出的曲线质量也很高,不用再额外调图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:32:26