全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2019-3-5 15:35:41
了解一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-10 20:31:03
同sas programmer!!遇到同行很开心
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-26 10:35:32
SAS高级编程公开课之一SQL
附件列表
海报.png

原图尺寸 360.94 KB

海报.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-11-4 16:55:35
厉害了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-12-27 11:11:34
免费领取R语言与SAS 软件系列纯英文书籍 链接: https://mp.weixin.qq.com/s/CX0A7ihdKEF57Og4qYCUVw
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-12-27 11:14:02
第一期临床试验数据管理与统计分析交流会将于明日开始,欢迎关注
网页链接: http://www.huodongxing.com/event/6521825912800?td=4332862351192&from=groupmessage&isappinstalled=0
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-12-31 21:33:45
您好~想要请问一下做程序员需要用到统计知识吗?用到的地方多吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-8-18 13:03:26
楼主好,我现在刚入职一家申办方公司做sas programmer,想问一下,一般这个岗位,领导会给code吗?还是一般都是自己写的?我现在做SDTM都是自己写的code,感觉这没有参比的代码,真的不知道自己写的对不对啊~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-12-22 11:11:50
Adrian2Hope 发表于 2016-11-29 14:06
如题。

我想如果有时间了,我会不定时地记录下我本人在这个行业的一些工作情况。或许有的时候就像一篇日 ...
大佬,在微信公众号法迈医讯上看到了你的文章
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-6-22 12:59:47
andangshide 发表于 2019-12-31 21:33
您好~想要请问一下做程序员需要用到统计知识吗?用到的地方多吗?
当然要用到,任何知识都是相通的,要把知识、经验窜起来,又通,又精,方得始终。不能只局限于当一个程序员的思乡。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-6-22 13:02:03
17301155 发表于 2020-8-18 13:03
楼主好,我现在刚入职一家申办方公司做sas programmer,想问一下,一般这个岗位,领导会给code吗?还是一般 ...
这个不需要别人的代码,自已写会形成自已的风格和思路,从而让这段代码永远为你所用。另外,要注意写代码的best practice,不只是写完了,写对了就了事了。同时多查阅相关指导原则,并结合试验方案,仔细理解试验和药品。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-10-13 20:10:43
统计程序员培训
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-10-13 20:12:38
我们的培训内容分为以下几块,版本号为V1.0, 2021-10-11:

SDTM部分:

1. SDTMIG_v3.3_FINAL,由CDISC Submission Data Standards Team 发布于2018-11-20,解读视频包括SDTM基本理论,试验设计和特殊domain模块等内容。

图片

2. SDTM Metadata Submission Guidelines v2.0,由CDISC SDS MSG Team发布于2021-03-30,这一版较1.2版变化较大,尤其是关于aCRF的制作方面。视频包括对SDTM-MSG_v2.0通读,样本数据和aCRF举例。

图片

3. SDTMIG 3.2超详细解读及基本问题分享电子版(部分文章是公开资源分享,不计费)。

图片

图片

图片



ADaM部分:

1. ADaM文件夹包括ADaM v1.2 package资料包,由CDISC Analysis Data Model Team发布于2019-10-03,它包括以下内容:adam_examples_final.pdf(视频), ADaM_OCCDS_v1.0.pdf(视频),ADaMIG v1.2-Final.pdf(视频),analysis_data_model_v2.1.pdf(视频),ADaM_Conformance_Rules_v2.xlsx,Important Things to Consider When Using ADaM v2.1.pdf,CDISC ADaM Conformance Rules v2.0_Final.pdf,adam_tte_final_v1.pdf,ARM-for-Define-XML文件包。


图片



Define-XML部分:

1. 利用Pinnacle 21 Community软件创建SDTM/ADaM Define.xml的全面详细地指导过程,包括数据验证及解释,Review Guide撰写,一般考虑和实际操作方法等。

图片

2. Pinnacle 21 Webinar,官方出品的网络研讨会,共22个(公开资源分享,不计费)。

图片



SAS编程部分(不含统计)

1. SAS Base视频(公开资源分享,不计费,提供程序、课件、数据等)。

图片

图片

图片

2. SAS Advanced(SQL+Macro),Chapter 22 Utilizing Best Practices.mp4

图片

图片

统计程序项目经验分享电子版(公开资源分享电子版,不计费)。

图片



有关本次培训的更多细节安排,烦请感兴趣的网友单独联系我们的助教“团团”同学,微信号为:adrian2hope,我们将一一为您详细解答。另外,我们也同样热忱欢迎其他同道中人和我们一起交流技术与知识,或者是职业与发展,又或者是诗与远方!

最后,谢谢大家!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-10-13 20:22:48

关于临床试验相关知识的分享与培训_v1.0

我们的培训内容分为以下几块,版本号V1.0, 2021-10-11

SDTM部分:

1. SDTMIG_v3.3_FINAL,由CDISC Submission Data Standards Team 发布于2018-11-20,解读视频包括SDTM基本理论,试验设计和特殊domain模块等内容。

2. SDTM Metadata Submission Guidelines v2.0,由CDISC SDS MSG Team发布于2021-03-30,这一版较1.2版变化较大,尤其是关于aCRF的制作方面。视频包括对SDTM-MSG_v2.0通读,样本数据和aCRF举例。

3. SDTMIG 3.2超详细解读及基本问题分享电子版(部分文章是公开资源分享,不计费)。


ADaM部分:

1. ADaM文件夹包括ADaM v1.2 package资料包,由CDISC Analysis Data Model Team发布于2019-10-03,它包括以下内容:adam_examples_final.pdf(视频), ADaM_OCCDS_v1.0.pdf(视频),ADaMIG v1.2-Final.pdf(视频),analysis_data_model_v2.1.pdf(视频),ADaM_Conformance_Rules_v2.xlsx,Important Things to Consider When Using ADaM v2.1.pdf,CDISC ADaM Conformance Rules v2.0_Final.pdf,adam_tte_final_v1.pdf,ARM-for-Define-XML文件包。


Define-XML部分:

1. 利用Pinnacle 21 Community软件创建SDTM/ADaM Define.xml的全面详细地指导过程,包括数据验证及解释,Review Guide撰写,一般考虑和实际操作方法等。

2. Pinnacle 21 Webinar,官方出品的网络研讨会,共22个(公开资源分享,不计费)。


SAS编程部分(不含统计)

1. SAS Base视频(公开资源分享,不计费,提供程序、课件、数据等)。

2. SAS Advanced(SQL+Macro),Chapter 22 Utilizing Best Practices.mp4

统计程序项目经验分享电子版(公开资源分享电子版,不计费)。


有关本次培训的更多细节安排,烦请感兴趣的网友单独联系我们的助教“团团”同学,微信号为:adrian2hope,我们将一一为您详细解答。另外,我们也同样热忱欢迎其他同道中人和我们一起交流技术与知识,或者是职业与发展,又或者是诗与远方!

最后,谢谢大家!!!

来源:微信公众号“先秦的士


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-10-17 12:57:42
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-10-17 13:04:18
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-11-14 01:45:15
Adrian2Hope 发表于 2016-11-29 14:06
如题。

我想如果有时间了,我会不定时地记录下我本人在这个行业的一些工作情况。或许有的时候就像一篇日 ...
楼主5年了。还在这里更新,太喜欢你的态度了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-11-18 20:14:25
Wlinkai 发表于 2021-11-14 01:45
楼主5年了。还在这里更新,太喜欢你的态度了
感谢支持!分享是持续而漫长的,且行且珍惜。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-11-18 20:19:53
关于临床试验相关知识的培训_v1.1
微信图片_20211118201657.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-4-29 16:04:52
8年多了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-5-8 21:12:43
jg.sas 发表于 2025-4-29 16:04
8年多了
是的,老兄。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-8-19 10:04:30
听着呢,友友的回复很受用
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-9-4 15:53:35
SAP中的日期派生策略:统计师如何构建清晰、稳健的规则体系
导语:在统计分析计划(SAP)的撰写中,对不完整日期的处理策略是一个至关重要的、但常常被低估的章节。一份定义模糊或逻辑不严谨的日期派生规则,会给后续的数据处理和分析带来巨大的混乱和风险。作为研究的“总设计师”,统计师有责任构建一个清晰、稳健且具有前瞻性的日期派生规则体系。

本文将以统计师的视角,深入探讨在SAP中设计日期派生规则的核心思维,并结合不良事件(AE)、合并用药(CM)以及肿瘤试验中无进展生存期(PFS)等关键场景,提供可直接应用的撰写范例和操作建议。

01. 核心思维:从“分析终点”倒推派生规则
在SAP中设计日期派生规则,其出发点不应是“如何填补日期”,而应是“这个日期将如何影响我的分析结论?”。所有的规则,都必须服务于一个核心目标:在信息不完整的情况下,做出最保守、最能保护主要分析结论有效性的统计学决策。

这种“倒推”思维包含以下几个层面:

保守性原则 (Principle of Conservatism):这是最高原则。派生不应人为地“创造”对试验药有利的证据。

分析类型驱动 (Analysis-Driven):安全性分析(如TEAE判断)和有效性分析(如PFS计算)对日期的敏感性和要求不同,其派生规则也应有所区别。

一致性与可操作性 (Consistency and Operability):规则必须在整个SAP中保持一致,并且对于程序员来说,是清晰、无歧义、可直接翻译为代码的。

02. 安全性分析中的日期派生:以AE和CM为例
在安全性分析中,我们最关心的是准确地评估药物暴露与不良事件之间的关系。

2.1. 不良事件(AE)开始/结束日期的派生
统计学考量:

开始日期 (AESTDTC):核心是准确界定治疗期出现的不良事件(TEAE)。我们必须最小化将一个真实的TEAE错误地归类为“治疗前事件”的风险,因为这会低估药物的安全性风险。

结束日期 (AEENDTC):核心是避免低估AE的持续时间。一个持续时间更长的AE,可能意味着更严重的临床影响。

SAP撰写范例:

Section X.X: Handling of Incomplete Dates for Adverse Events

For the purpose of analysis, incomplete start and end dates of adverse events, as recorded in the SDTM AE domain (AESTDTC, AEENDTC), will be imputed in the ADaM dataset (ADAE) to create numeric analysis dates (ASTDT, AENDT). The imputation will follow a conservative approach:

Incomplete Start Dates (AESTDTC): The start date will be imputed to the last possible day of the known period.

If only year and month are known (e.g., '2023-06'), the date will be imputed to the last day of that month (e.g., 30-JUN-2023).(备注:此处采用‘补至最后日期’的策略,确保不会遗漏潜在的TEAE;但需注意,不同公司和研究可能采用‘补至最早日期’的相反策略,因此在SAP中必须明确写明。)

If only year is known (e.g., '2023'), the date will be imputed to the last day of that year (31-DEC-2023).

This rule is applied to minimize the risk of misclassifying a potential Treatment-Emergent Adverse Event (TEAE) as pre-treatment.

Incomplete End Dates (AEENDTC): The end date will be imputed to the first possible day of the known period.

If only year and month are known (e.g., '2023-06'), the date will be imputed to the first day of that month (e.g., 01-JUN-2023).

If only year is known (e.g., '2023'), the date will be imputed to the first day of that year (01-JAN-2023).

Logical Constraints: If, after imputation, the analysis start date (ASTDT) is later than the analysis end date (AENDT), AENDT will be set equal to ASTDT. This logic will be documented in the Analysis Data Reviewer's Guide (ADRG).

此处采用“补至最后日期”的策略(确保不会遗漏潜在的TEAE);但需注意,不同公司和研究可能采用“补至最早日期”的相反策略(以避免把Pre-treatment AE错判成TEAE),因此在SAP中必须明确写明。

2.2. 合并用药(CM)开始/结束日期的派生
统计学考量:核心是准确评估药物暴露的重叠期,以分析潜在的药物-药物相互作用(DDI)。

开始日期 (CMSTDTC):我们希望最大化合并用药与试验药物的重叠暴露期,以捕获所有潜在的DDI风险。因此,CM的开始日期应派生至最早可能的一天。

结束日期 (CMENDTC):同样,为了最大化重叠期,CM的结束日期应派生至最晚可能的一天。

注意:这与AE的派生规则恰好相反,因为它服务于不同的分析目的。

2.3. 标记变量(DTF/TMF)
程序员要知道,派生逻辑不仅要输出日期,还要输出标记变量,并写入 SAP/ADRG。
ASTDTF、AENDF 用于标记 日期派生。
ASTTMF、AENTMF 用于标记 时间派生。
日期派生标记(--DTF)
D = 日缺失(Day imputed)
M = 月和日缺失(Month and Day imputed)
Y = 年、月和日缺失(Year, Month and Day imputed)
时间派生标记(--TMF)
H = 小时缺失(补小时及以下)
M = 分钟缺失(补分钟及秒)
S = 秒缺失(补秒)
03. 有效性分析中的日期派生:以肿瘤PFS为例
在有效性分析中,日期派生的保守性原则,体现在避免高估试验药物的疗效。无进展生存期(Progression-Free Survival, PFS)是一个极佳的例子。

PFS的定义:时间从随机化日期,到首次记录到疾病进展(PD)或任何原因死亡的日期,以先发生者为准。

统计学考量:

疾病进展日期 (TRDTC in ADTR):这是PFS事件的关键日期。如果这个日期不完整,我们必须做出一个不利于试验组的决策。即,我们应假设疾病进展尽可能早地发生,以避免人为地延长PFS时间,从而高估疗效。

随机化日期 (RANDDT):通常是完整的,作为时间起点。

死亡日期 (DTHDT):如不完整,同样应派生至最早可能的一天。

有些团队会同时保留原始不完整日期(字符型 DTHDTC)与派生日期(DTHDT),用于 traceability 和审计:“建议在 ADaM 中保留原始字符型日期(如 DTHDTC)并新增派生数值型日期(DTHDT),确保派生过程透明可追溯。”
SAP撰写范例:

Section Y.Y: Derivation of Progression-Free Survival (PFS) Endpoint

PFS is defined as the time from the date of randomization to the date of the first documented disease progression (PD) or death from any cause, whichever occurs first.

Start Date for PFS: The date of randomization (RANDDT from ADSL) will be used as the start date for the PFS time-to-event analysis.

Event Date for PFS: The event date is the earlier of the date of PD or the date of death.

Handling of Incomplete PD Dates: If the tumor assessment date associated with the first PD is incomplete, it will be imputed to the first possible day of the known period to avoid artificially prolonging PFS. For example, if the assessment date is recorded as '2023-06', the date of PD will be imputed to 01-JUN-2023.(备注:在部分研究中,若进展日期严重缺失(如仅知年份),研究团队可能会直接判为NE而不派生;此点需在SAP中明确。)

Date of Disease Progression (PDDT): The date of PD will be derived from the earliest tumor assessment date (ADTR.ADT) at which an overall response of 'PD' was first determined.

Date of Death (DTHDT): If the date of death (ADSL.DTHDT) is incomplete, it will be imputed to the first possible day of the known period.

Censoring: Subjects who are not known to have had an event (PD or death) by the data cut-off date will be censored at the date of their last valid tumor assessment.

04. 引入“标杆日期”:增加规则的稳健性
在某些复杂情况下,仅仅使用“就早/就晚”原则可能不够,我们还需要引入研究中的关键“标杆日期”作为参照,来处理逻辑上不一致的情况。

常见标杆日期:知情同意日期(RFICDT)、首次给药日期(TR01SDT in ADSL)。

应用场景:一个AE的开始日期不完整,派生后(如2023-06-30)仍然早于首次给药日期(如2023-07-15)。在这种情况下,即使派生了,它依然是一个明确的治疗前事件。

如果派生后日期 ≤ 首次给药日,事件默认判定为治疗前(Pre-treatment AE),除非 SAP 另有明确 TEAE 容错定义(如起始日等于给药日仍视为 TEAE)。

SAP撰写建议:在规则中加入此类校准逻辑,如。

SAP撰写范例 (补充):

"If an AE start date is incomplete and the imputed date (ASTDT) occurs on or before the date of first treatment (TR01SDT), but it cannot be definitively determined whether the event started before or after the first treatment, the event will be conservatively considered a TEAE."

解读:这条规则进一步加强了保守性。它规定,对于那些“跨越”首次给药日的、不完整的开始日期,我们宁愿将其“误判”为TEAE(保守性原则下,将事件分类为 TEAE),也绝不放过任何一个潜在的安全性信号。

05. 结论:给统计师的实践建议
以终为始:在下笔撰写日期派生规则前,先问自己:“我的分析目的是什么?哪种派生方式对我的结论最保守?”

分类定义:不要试图用一条规则处理所有日期。将安全性(AE, CM)、有效性(PFS)、人口统计学(DTHDT)等不同目的的日期分开定义,确保逻辑的清晰性。

明确无歧义:使用具体的例子(如“2023-06 is imputed to 30-JUN-2023”)来阐述规则,确保程序员可以无误地将其翻译为代码。

考虑边界:主动思考并定义“开始晚于结束”等逻辑矛盾的处理方式。

文档化:确保所有规则都在SAP中清晰记录,并在ADRG中对最终的派生逻辑进行详细说明。这是确保透明度和可审查性的关键。

一份高质量的SAP,其日期派生章节应当如同一份精密的法律文件,为后续所有的数据处理工作,提供一个不容置疑的、坚实的逻辑基础。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-9-4 17:19:39
SAP的“字里行间”:从统计师视角解读一份“无懈可击”的统计分析计划

[color=rgba(0, 0, 0, 0.9)]导语:统计分析计划(Statistical Analysis Plan, SAP)是临床试验数据分析的最高层级指导文件之一和‘施工蓝图’。然而,对于许多统计程序员来说,SAP常常像是一份充满了统计学术语的晦涩难懂的文件。他们习惯于在其中寻找明确的指令,但当遇到描述模糊或看似矛盾的段落时,便会感到困惑,导致后续编程的偏差或不必要的返工。

[color=rgba(0, 0, 0, 0.9)]这种困惑的根源,在于未能从“统计师的视角”去理解SAP的“字里行间”。一份高质量的SAP,其每一个章节、每一句话,背后都蕴含着深思熟虑的统计学考量和对研究结论稳健性的追求。本文旨在邀请一位虚拟的资深统计师,带领我们逐段解读一份高质量SAP的核心章节,解释其背后的“为什么”,教会程序员如何“读懂”SAP,并从中识别出潜在的逻辑问题,从而实现与统计师的无缝协作。

[color=rgba(0, 0, 0, 0.9)]

01. 分析集定义(Analysis Sets):一切分析的“人口”基础

[color=rgba(0, 0, 0, 0.9)]这是SAP的开篇,也是决定所有分析分母(Denominator)的关键。

  • 程序员看到的:“Full Analysis Set (FAS) includes all randomized subjects who have received at least one dose of study medication.”

  • 统计师背后的思考(字里行间)



    • “all randomized subjects”:这是意向治疗(Intention-to-Treat, ITT)原则的体现。我们分析的是“被随机分配”这个行为本身的效果,无论受试者后续是否完美遵循方案。这是监管机构评估疗效的金标准,因为它最大限度地避免了因剔除受试者而引入的偏倚。

    • “who have received at least one dose”:这是一个从纯粹ITT原则向“改良ITT(modified ITT)”的微小、但非常务实的妥协,具体纳入/排除标准需结合本试验SAP定义确认。它排除了那些虽然被随机化,但因各种原因从未接受过任何研究治疗的受试者。对于这类受试者,我们没有任何治疗后的数据,将其纳入疗效分析没有实际意义。

    • 程序员应关注的“警报”


    • FAS的定义是否包含了基线和至少一次治疗后评估的要求?这在某些研究中是必要的。

    • Per-Protocol Set (PPS)的定义是否客观、清晰、无歧义?例如,“重要方案违背(Major Protocol Deviation)”的具体标准(如用药依从性<80%,使用了关键禁用药等)是否被明确列出?模糊的PPS定义是后续争议的主要来源。


02. 终点指标的派生(Derivation of Endpoints):从原始数据到分析变量

[color=rgba(0, 0, 0, 0.9)]这一章节是将CRF数据转化为可分析变量(如AVAL)的“说明书”。

  • 程序员看到的:“Change from Baseline in HbA1c at Week 24 is defined as the HbA1c value at Week 24 minus the Baseline value.”

  • 统计师背后的思考(字里行间)



    • 时间窗口:基线是“随机化访视”的值,还是“首次给药前的最后一次非缺失观测值”?

    • 多重记录处理:如果在基线时间点有多次测量,是取平均值,还是取最后一次?

    • 非计划访视:发生在基线窗口内的非计划访视,是否可被用作基线?明确优先级,例如计划访视记录优先于非计划访视记录。

    • “Baseline value”的定义:这绝不是简单的一句话。一份无懈可击的SAP,必须对“基线”有滴水不漏的定义。


  • “at Week 24”的定义:这同样暗藏玄机,必须明确定义第24周的访视分析时间窗。



    • 访视窗口:必须明确定义“第24周”所对应的研究日(ADY)范围(如Day 162 to Day 175)。

    • 窗口内多重记录:如果窗口内有多次测量,应使用哪一次进行分析?


程序员应关注的“警报”

  • SAP是否对所有可能的边界情况都给出了明确的处理规则?如果程序员在编程时,发现了一个SAP未覆盖的场景(如基线窗口内全是缺失值),这不是一个可以自行决定的问题,而是一个必须立即与统计师澄清的逻辑漏洞


03. 缺失数据的处理(Handling of Missing Data):结论稳健性的“试金石”

[color=rgba(0, 0, 0, 0.9)]这是SAP中最能体现统计学功力的章节,也是程序员最需要仔细研读的部分。

  • 程序员看到的:“The primary analysis will be performed using a Mixed Model for Repeated Measures (MMRM). This model is valid under the Missing At Random (MAR) assumption.”

  • 统计师背后的思考(字里行间)


    • 选择MMRM的深意:我们选择MMRM,不仅仅因为它是一个复杂的模型,而是因为它对缺失数据的处理机制(基于MAR假设)被认为是远优于传统的单次插补方法(如LOCF)的。它能更充分地利用所有受试者的部分信息,提供更无偏的估计。这背后是对ICH E9 (R1)中Estimand框架的遵循。

    • MAR假设的含义:我们假设一个值的缺失,可以由该受试者其他已观测到的数据(如之前的疗效、基线特征等)来预测。这是我们选择MMRM的理论基石。

    • 敏感性分析的必要性:MAR假设是无法被证明的。因此,一份高质量的SAP,必须包含一系列的敏感性分析,来评估当缺失数据机制不满足MAR时,主要分析结论是否依然稳健。

    • 程序员应关注的“警报”


      • SAP是否清晰地定义了用于敏感性分析的不同缺失数据处理方法?(如多重插补、Tipping Point分析等)。

      • 对于每一种敏感性分析,其所用的分析集、模型和参数是否都已明确?程序员的任务,就是将这些复杂的场景,逐一、准确地实现。


04. 统计模型(Statistical Models):假设检验的“引擎”

[color=rgba(0, 0, 0, 0.9)]这一章节定义了用于假设检验的具体数学工具。

  • 程序员看到的:“The MMRM will include fixed effects for treatment, visit, treatment-by-visit interaction, and baseline value as a covariate.”

  • 统计师背后的思考(字里行间)


  • 模型项的意义



    • treatment: 评估各治疗组的平均差异。

    • visit: 描述随时间变化的总体趋势(如安慰剂效应)。

    • treatment-by-visit interaction: 这是核心中的核心。它检验的是,不同治疗组的疗效变化“轨迹”是否不同。我们通常从这个交互项中,提取特定访视点(如Week 24)的组间差异(LSMEANS Difference)。

    • baseline value: 将基线作为协变量,可以极大地降低数据的变异性,从而提高统计功效(Power),让我们更容易检测到真实的治疗效果。


  • 协方差结构的选择:SAP必须指定如何对受试者内的重复测量相关性进行建模(如非结构化UN、自回归AR(1)等)。“非结构化(Unstructured, UN)”通常是首选,因为它最灵活,对数据的假设最少,但对样本量的要求也最高。

  • 程序员应关注的“警报”



    • 模型中所有的CLASS变量和连续变量是否已明确?

    • 用于计算自由度的Kenward-Roger(DDFM=KR)等选项是否已指定?这些细节直接影响P值和置信区间的计算。


05. 结论:从“代码翻译者”到“逻辑审阅者”的升维

[color=rgba(0, 0, 0, 0.9)]一份“无懈可击”的SAP,是统计智慧的结晶。对于统计程序员而言,解读SAP的过程,不应仅仅是寻找编程指令的“翻译”过程。

  • 带着问题去读:理解每个章节背后的统计学“为什么”,能让你在编程时更有大局观。

  • 成为“逻辑审阅者”:当你能从统计师的视角,发现SAP中潜在的模糊地带、逻辑漏洞或未定义的边界情况时,你就从一个被动的“代码实现者”,升维为了一个主动的、能够保障整个分析流程质量的“合作伙伴”。

  • 沟通是桥梁:永远不要自行假设。任何在SAP“字里行间”读出的不确定性,都是与统计师进行一次高质量沟通的绝佳契机。


[color=rgba(0, 0, 0, 0.9)]通过这种深度的、批判性的阅读,程序员不仅能写出更准确、更稳健的代码,更能赢得统计师的信任与尊重,成为数据分析团队中不可或的或缺的关键一环。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-9-4 17:21:08
肿瘤疗效评估的“规则引擎”:RECIST 1.1在ADTR与ADRS中的编程实现指南导语:在实体瘤的临床试验中,RECIST(Response Evaluation Criteria in Solid Tumors)标准是评估肿瘤客观缓解情况的“金标准”。将CRF中记录的、散在各个访视的肿瘤测量数据,转化为符合RECIST 1.1规则的、可用于分析的ADaM数据集——ADTR(肿瘤反应)和ADRS(缓解情况),是肿瘤项目中最具挑战性、也最能体现程序员功力的编程任务。

[color=rgba(0, 0, 0, 0.9)]这项工作远非简单的数值比较,它是一个包含了基线病灶选择、靶病灶(Target Lesion)与非靶病灶(Non-Target Lesion)分别评估、新病灶(New Lesion)出现、以及最终总体缓解(Overall Response)综合判定的、逻辑极其严密的“规则引擎”。本文旨在将RECIST 1.1的复杂规则,系统性地“翻译”成清晰的编程步骤和伪代码逻辑,为统计程序员构建ADTR和ADRS提供一份详尽的、可操作的实现指南。

[color=rgba(0, 0, 0, 0.9)]

01. 数据基础:从SDTM到ADaM的“原材料”

[color=rgba(0, 0, 0, 0.9)]在开始构建“规则引擎”前,我们必须先备好“原材料”。ADTR和ADRS的创建,主要依赖于以下SDTM域:

  • TU (Tumor/Lesion Identification):定义了每个病灶的ID、位置、是否为靶病灶等身份信息。

  • TR (Tumor/Lesion Results):记录了在每个访视点,对每个靶病灶的具体测量值(如最长径(Longest Diameter,长径)。

  • RS (Response/Disease Assessment):记录了在每个访视点,研究者对非靶病灶、新病灶以及总体缓解情况的评估结果。

  • ADSL (Subject-Level Analysis Dataset):提供受试者级别的基本信息,如治疗开始日期等。


02. ADTR构建:追踪每个病灶的“生命轨迹”

[color=rgba(0, 0, 0, 0.9)]ADTR(Analysis Data for Tumor Response)是后续所有缓解评估的基础。它的核心任务是,在每个评估访视点,为每个受试者计算出关键的、派生于靶病灶测量的参数。

[color=rgba(0, 0, 0, 0.9)]ADTR的关键派生步骤:

第一步:确定基线(Baseline)信息
  • 识别基线靶病灶:在TU域中,筛选研究者(TUEVAL='INVESTIGATOR')评估的、且被选为靶病灶的记录(通常由TUTESTCD和TR的TRLNKID对应标识),具体变量需结合SDTM实现情况确认。

  • 计算基线靶病灶长径和(Sum of Diameters, SOD)


    • 筛选出TR域中,访视与基线访视匹配(基线通常定义为首剂给药前最近一次影像学评估,一般要求在给药日之前,不含给药当天,除非SAP特别规定允许包含给药当天的评估)的、属于基线靶病灶的测量记录。

    • 对于每个靶病灶,取其长径(TRSTRESN where TRTESTCD = 'LDIAM')。

    • 将所有基线靶病灶的长径相加,得到该受试者的基线长径和(BASE)。这个值是后续所有缓解评估的参照标准。

    • 注意:RECIST 1.1 规定:在基线评估时,每位受试者最多可选 5 个靶病灶,且同一器官内(双侧器官视为一个器官)不得超过 2 个靶病灶。


第二步:计算每个治疗后访视的参数

[color=rgba(0, 0, 0, 0.9)]对于每一个治疗后的评估访视,我们需要循环计算以下参数:

  • 计算当前访视的靶病灶长径和(AVAL)


    • 筛选出当前访视的所有靶病灶测量记录。

    • 将它们的长径相加,得到当前访视的长径和AVAL。

    • 缺失值处理:如果某个基线时存在的靶病灶,在当前访视没有测量值,根据RECIST 1.1规则,通常需要进行复杂的处理(如结转上一次的测量值,或在某些情况下判定为无法评估)。这一逻辑必须在SAP和ADRG中明确。


  • 计算较基线的变化百分比(PCHG)


    • PCHG = (AVAL - BASE) / BASE * 100。


  • 计算最低点(Nadir)长径和及变化百分比


    • Nadir是指从基线到当前访视(包含当前)所观察到的最小长径和

    • 在每个访视点,都需要与之前的Nadir进行比较,更新Nadir值(NADIR)和对应的较基线变化百分比(PCHGNAD)。


  • 派生基于靶病灶的缓解情况(PARAMCD = 'TRGRESP')


    • CR (Complete Response):所有靶病灶消失。

    • PR (Partial Response):PCHG ≤ -30% 且不是CR。

    • PD (Progressive Disease):所有靶病灶可测量;若部分无法评估应判 NE,相较于从基线以来的最小长径和(Nadir),长径和增加 ≥20%,并且绝对增加至少 5 mm。

    • SD (Stable Disease):既不满足PR,也不满足PD。


    • 根据RECIST 1.1对靶病灶的定义,基于PCHG和PCHGNAD派生缓解情况:


03. ADRS构建:综合所有证据,做出最终裁决

[color=rgba(0, 0, 0, 0.9)]ADRS(Analysis Data for Response Summary)是最终的、用于有效性分析的数据集。它的每一行,代表了一个受试者在某个访视点的总体缓解(Overall Response)情况。ADRS的构建,是在ADTR的基础上,进一步整合非靶病灶和新病灶的信息。

[color=rgba(0, 0, 0, 0.9)]ADRS的关键派生步骤:

第一步:整合各方证据

[color=rgba(0, 0, 0, 0.9)]在每个访视点,我们需要从不同来源整合评估信息:

  • 靶病灶缓解(TRGRESP):来自我们刚刚创建的ADTR。

  • 非靶病灶缓解(NTRGRESP):通常直接来自RS域(RS.RSSTRESN where RSTESTCD = 'NTRGRESP')。其可能值为CR, Non-CR/Non-PD, PD。

  • 新病灶出现(NEWLRESP):通常也来自RS域(RSTESTCD = 'NEWLRESP'),值为YES或NO。


第二步:应用RECIST 1.1的总体缓解“裁决”规则

[color=rgba(0, 0, 0, 0.9)]这是“规则引擎”的最终输出。我们需要根据一个层次化的、严格的逻辑来确定总体缓解(PARAMCD = 'OVRLRESP')。

[color=rgba(0, 0, 0, 0.9)]总体缓解(OVRLRESP)派生逻辑(简化版):

靶病灶缓解 (TRGRESP)非靶病灶缓解 (NTRGRESP)新病灶 (NEWLRESP)总体缓解 (OVRLRESP)
任何情况任何情况YESPD
PD任何情况NOPD
任何情况PDNOPD
CRCRNOCR
CRNon-CR/Non-PDNOPR
PRCR 或 Non-CR/Non-PDNOPR
SDCR 或 Non-CR/Non-PDNOSD
  • 编程实现:这个逻辑表非常适合用一系列的IF/THEN/ELSE或CASE语句来实现。关键在于优先级的判断:新病灶的出现是最高优先级的PD指征,其次是靶病灶或非靶病灶的PD。只有在完全没有PD迹象的情况下,才去判断CR、PR或SD。

  • 在总体缓解的裁决逻辑中,优先级为:新病灶出现 > 靶病灶PD > 非靶病灶PD > 其余情况。表格仅为简化展示,实际编程时需严格按照优先级实现。


第三步:确定最佳总体缓解(Best Overall Response, BOR)
  • 定义:BOR是指一个受试者在整个研究过程中所获得的最好的缓解。

  • 派生


    • 首先,需要确定缓解的“等级”(通常是 CR > PR > SD > PD)。

    • 对于每个受试者,扫描其在所有访视点的OVRLRESP记录。

    • 找出等级最高的那个缓解情况,作为该受试者的BOR(PARAMCD = 'BOR')。

    • 确认规则:根据RECIST 1.1,PR或CR通常需要在后续的访视中得到确认(Confirmatory Assessment),确认评估需 ≥28 天(至少4周),且无 PD/新病灶,稳定病情(SD)的判定通常要求在治疗开始至少6–8周后才能成立;程序应检索符合时间窗的随访访视。因此,在派生BOR时,必须考虑缓解是否“已确认”。这需要在程序中加入对后续访视缓解情况的判断逻辑,使得BOR的派生更为复杂。


04. 结论:从“规则”到“代码”的系统性思维

[color=rgba(0, 0, 0, 0.9)]将RECIST 1.1的规则转化为稳健、可验证的SAS代码,是对统计程序员综合能力的终极考验。成功的关键在于:

  • 分层构建:严格遵循“先ADTR,后ADRS”的构建顺序。ADTR是基础,其准确性直接决定了ADRS的质量。

  • 逻辑模块化:将复杂的RECIST规则,拆解为独立的、可测试的逻辑模块(如基线SOD计算、靶病灶缓解判断、总体缓解裁决、BOR确认等)。这便于编程、调试和QC。

  • 精读SAP与RECIST文档:本文提供的仅为通用框架。每个研究的SAP可能在细节上(如缺失值处理、确认访视窗口等)有其特殊规定。程序员必须将SAP与RECIST 1.1官方文档结合起来,作为编程的唯一依据。

  • 清晰文档化:在ADRG中,必须用伪代码或流程图的形式,清晰地、一步步地记录下所有关键的派生逻辑。这是确保透明度、可审查性和知识传承的关键。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-9-4 17:31:28
肿瘤临床试验数据处理难点解析:BOR判断与缺失值填补策略

[color=rgba(0, 0, 0, 0.9)]大家好!在肿瘤临床试验的数据分析中,我们经常会遇到一些棘手的“拦路虎”。今天,我们就来聊聊两个常见的难点:如何准确判断最佳总体疗效(BOR),以及如何合理处理评分数据的缺失值填补,特别是当它涉及到后续的变量转换和特定的缺失模式时。这些问题看似细节,却直接关系到研究结果的准确性和可靠性。

一、 最佳总体疗效(BOR):看似简单,实则暗藏玄机

[color=rgba(0, 0, 0, 0.9)]一位学员曾提出关于BOR判断的思路:“每个受试者有多个访视,所有访视点的评估结果(CR PR SD PD NE)都需要确认(得出临时BOR),通过后续访视点根据判断规则确认,可能需要多个点,直至符合标准。最后从各访视的临时BOR中选择最好的疗效结果(CR>PR>SD>PD>NE)。”

[color=rgba(0, 0, 0, 0.9)]这个理解的大方向是正确的,但有几个关键点需要厘清:

[color=rgba(0, 0, 0, 0.9)]1. “临时BOR”与确认机制:
我们通常称各访视点的评估结果为“时间点评估”(Timepoint Assessment)。关键在于,CR(完全缓解)和PR(部分缓解)通常需要后续访视的确认,以确保疗效的持久性,而非一过性现象或测量误差。这个确认通常是在首次观察到CR/PR后,间隔一个预定最短时间(如RECIST标准常要求的至少4周)的下一次评估中完成。

  • SD(疾病稳定) 也需要维持一定时间(如从首次评估为SD起至少6-8周,具体看方案)才能被认为是“符合条件的SD”。

  • PD(疾病进展) 一旦明确发生,通常不需要额外确认。


[color=rgba(0, 0, 0, 0.9)]2. “最早符合标准”的理解:
并非“一直确认直到符合标准”,而是针对某一次CR或PR的观察,只需要后续一个符合时间间隔要求的访视点来确认。 一旦确认,这个CR或PR就成为了一个“已确认的疗效”。后续评估仍会继续,如果出现更好的疗效(如从已确认的PR变为CR),新的CR也需要确认。

[color=rgba(0, 0, 0, 0.9)]3. 一个常见的误区:先选最优再确认?
有学员可能会想:“我先把每个受试者所有访视中看起来最好的那个评估(比如一次CR)挑出来,然后对它进行确认,不就行了吗?”
这种思路是不准确的!
BOR一定是基于“已确认的疗效”。如果一个CR在当时没有得到后续访视的确认(比如CR后紧接着就PD了),那么它就不能算作BOR的候选。确认是针对特定时间点观察到的疗效而言的。

正确的BOR判断流程应该是:
  • 步骤1: 评估每个访视点的疗效。

  • 步骤2: 对每个观察到的CR或PR,根据方案规定的时间窗,看其是否在后续访视中得到确认。得到“已确认的CR/PR”。

  • 步骤3: 对于SD,判断其是否持续了方案规定的最短时间,得到“符合条件的SD”。

  • 步骤4: 记录所有PD和NE。

  • 步骤5: 在该受试者整个研究期间所有“已确认的CR”、“已确认的PR”、“符合条件的SD”、PD和NE中,按照 CR > PR > SD > PD > NE 的优先顺序,选择最好的一个作为最终的BOR。


[color=rgba(0, 0, 0, 0.9)]简单说:先逐个确认潜在的好疗效,再从所有已确认的疗效(及其他结果)中选最优。

[color=rgba(0, 0, 0, 0.9)]虽然从SAS等软件编程实现角度看,这个逻辑会复杂一些,需要仔细处理访视顺序、时间窗和确认标志,但这是确保BOR准确性的基石。

[color=rgba(0, 0, 0, 0.9)]

二、 缺失值填补:连续转二分类,先转还是先补?单调缺失怎么办?

[color=rgba(0, 0, 0, 0.9)]接下来,我们看另一个学员提出的多重填补问题。场景是这样的:有一个连续变量评分(如咳嗽评分),其中“0分”代表咳嗽消失,“非0分”代表未消失。这个评分数据存在缺失。我们最终需要的是一个二分类变量(消失/未消失)。

[color=rgba(0, 0, 0, 0.9)]问题1:填补顺序——先补连续值再转,还是先转二分类再补?

  • 思路一: 先填补原始的连续型评分数据,然后再根据“是否为0”将其转换为二分类变量。

  • 思路二: 先将原始评分转换为二分类变量(0=消失,1=未消失),然后再对这个新的二分类变量进行多重填补。


[color=rgba(0, 0, 0, 0.9)]推荐思路一(先填补连续数据,后转换)。
理由如下:

  • 保留更多信息: 连续评分(如1分和5分)虽然都属于“未消失”,但其程度不同。利用这些原始连续信息进行填补,能让模型更准确地估计缺失值,因为它能更好地捕捉变量间的关系和数据真实分布。

  • 避免过早信息损失: 一旦将连续变量简化为分类变量,部分信息就丢失了,后续填补无法恢复。


[color=rgba(0, 0, 0, 0.9)]当然,使用思路一时要注意“0”值的特殊性。预测均值匹配(PMM)等方法在处理这类含有特殊值或非正态分布的数据时通常表现较好。

[color=rgba(0, 0, 0, 0.9)]问题2:只有基线和一次基线后访视,这是单调缺失吗?FCS方法适用吗?

[color=rgba(0, 0, 0, 0.9)]学员的项目只有基线和基线后两个访视点,缺失主要发生在基线后访视。

  • 这是典型的单调缺失(Monotone Missingness)模式。 即如果某个受试者的基线后访视数据缺失,那么在这之后(虽然本例中没有更后的了)也没有数据了。

  • FCS (Fully Conditional Specification) / MICE (Multivariate Imputation by Chained Equations) 完全适用于单调缺失数据。 FCS本身就是为处理任意缺失模式设计的,单调缺失是其一种更简单的特例。


[color=rgba(0, 0, 0, 0.9)]问题3:为什么MCMC方法在加入“中心”协变量后,若某些中心无缺失值会报错,而FCS不会?

[color=rgba(0, 0, 0, 0.9)]这是一个非常实际的问题!

  • MCMC方法(常基于联合模型): 当使用如SAS PROC MI中的METHOD=MCMC时,它通常假设所有变量服从一个联合分布(如多元正态)。当加入“中心”这样的分类协变量,且某个中心在待填补变量上完全没有缺失值时,模型在为该中心估计与“缺失性”或“填补过程”相关的参数时可能遇到困难(如参数不可识别或数值不稳定),导致报错。

  • FCS (MICE) 方法: FCS不依赖一个整体的联合模型,而是为每个含缺失值的变量单独拟合一个填补模型(以其他所有变量为预测变量)。



    • 如果某个中心在待填补变量Y上没有缺失,那么这些数据会作为观测数据帮助拟合Y的填补模型(用于其他有缺失的中心)。

    • FCS根本不需要为这个“无缺失中心”的Y值进行填补操作。

    • 这种逐个变量击破的方式使得FCS对联合分布的复杂性和特定子群体的行为不那么敏感,因此更加稳健。


[color=rgba(0, 0, 0, 0.9)]因此,当遇到MCMC因特定协变量和数据结构报错时,转向使用FCS (MICE) 是一个非常明智且有效的解决方案。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-10-23 16:52:14
哇老大,俺在这个帖里蹲下学习了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群