- SAS数据统计分析与编程实践
- 马文豪 李翔宇编著
- 2412字
- 2021-09-30 19:32:50
3.5 实战案例:多种方法计算药物副作用持续时间
陆游诗云:“纸上谈来终究觉浅,绝知此事要躬行。”学习SAS编程,我们需要将知识点死磕记忆,也离不开现实案例的推演和分析。本书包含5个实战案例和一个大型案例,助你尽早建立身临其境的工作体验。
工作体验是我们在日常工作中经常忽略却又重要无比的状态。2020年伊始,新型冠状病毒疫情突然爆发,因为病毒通过飞沫传播,我国出台政策,要求各单位在疫情缓解之前尽量在网上办公,一时间从来没有居家办公经验的职场人士纷纷在家打开电脑,开始工作。虽然有大量网络办公的程序辅助,很多人仍然感觉在家工作效率不高,容易疲惫。说到底,其实就是缺乏“身临其境”四个字,用心理学名词来说就是“心流”。“心流”的意思是全神贯注地投入工作,经常忘记时间以及对周围环境的感知。例如我们在办公室工作时,很容易忘记时间、疲惫等负面因素,让自己更容易地关注当前手头的事情。
想要进入“心流”的状态,第一个要求就是我们在熟悉的环境中工作,这样熟悉的环境不会在大脑中产生刺激,你就可以更多地分配大脑的专注力到工作之中。譬如有些学生去图书馆自习,经常只坐在自己熟悉的座位上,这就是建立熟悉环境的过程。又譬如你换过工作,就会发现新的工作即使本身很简单,相关的工具和流程你也早已熟悉,仍然需要两周左右的适应期,这就是在建立熟悉工作环境的体验。如果一个你不认识的人走过,你的大脑就会在后台思考:这是谁?和我的工作有没有关系?它的穿衣品味说明他是一个怎样的人?这些思考在后台发生,我们并不会意识到,但它占用了一部分大脑的专注力。
因此,本书虽然着眼于SAS技术,但更希望为读者建立起身临其境的工作体验,让读者在日后的工作中、在具体的情境下有一种“似曾相识”的感觉。技术永远只是工具,而非达成目的的手段,技术的改变很慢而目的的种类千变万化,只有明确技术是为目的和用途服务这个概念,我们的数据分析之路才能更上一层楼。
3.5.1 案例背景
上述内容提到了新型冠状病毒,相关的疫苗研制涉及药物研究领域,而药物研究需要经过漫长的、复杂的临床试验才能完成,实验的数据需要整理分析,上报给食品药品监督管理局才能经过审核,整个过程甚至要持续数年。当然,疫苗,尤其是爆发性传染病的疫苗的审批流程要快速很多,只要保证了药物安全性和部分效果,就会以快速批准的方式允许上市。
一般的药物则不会这么快。一款药品研发出来,要经历动物试验、药代动力学研究、三期人体临床试验后才能推向市场,其间还要通过食品药品监督管理局等诸多审查,这对药厂和急需某款特效药的病人而言是漫长又痛苦的,但这也是政府监管部门对人民群众生命安全和财产安全负责的重要体现。人体临床试验的过程漫长而且收集的数据多样,其中很大一部分就是药物安全性数据。我们都听说过一个道理——是药三分毒,人体是一个极其复杂的系统,药物很难只针对病症进行治疗,很可能引发一些副作用,药物安全性分析就是需要统计和计算药物副作用的程度和影响。当一位临床试验患者进行试验时,一旦自我感觉有任何不适症状,必须向医疗部门报告,医疗部门需要详细记录患者的症状名、开始和结束时间、严重程度、采取措施等,并如实上报给监管部门,这份记录的数据也是本案例的数据来源。
3.5.2 案例分析
读者可以找到数据名为pj01_ae的数据集(见表3-19)并打开。
表3-19
续表
这是一个简化后,只包含部分信息的副作用数据集,其变量的意义如表3-20所示。
表3-20
我们的任务是创建数值型变量duration,其值等于aestdat与aeendat相距的天数+1。
看看我们有什么实现手段吧,首先可以直接用日期相减的方式,需要注意的是两点:
(1)aestdat和aeendat为字符型变量,先要将它们转化为数值型再计算。
(2)aeendat有缺失值,需要分情况处理。
代码如下:
生成的新数据集如图3-39所示。
图3-39
新变量duration在数据集末尾生成,其值即为两日期差+1。
有些读者也可能想到,SAS提供了专门的函数来处理日期和时间变量,其中intck是给定两个日期,计算日期之间的差,因此我们可以用函数来完成相关操作。
在if语句里,使用了cmiss函数,cmiss函数获得给定字符型变量中缺失值的数量,与之对应的还有nmiss,获得给定数值型变量中缺失值的数量。对于没有缺失值的情况,使用intck函数计算相距天数,因为aestdat和aeendat均为字符型变量,我们需要先用input将其转化为数值型,然后再作为intck的参数参与计算。
这样操作获取的结果与图3-39相同。
那么知道了副作用持续的天数,对药物分析有什么帮助呢?这就要根据药物分析的统计分析计划来确定所需图表了。我们可以创建副作用列表,将每名患者的每个副作用详细信息汇总上报,我们也可以考察副作用时间与药物服用时间的关系,看看是药物引发的副作用还是其他原因导致的副作用。另外,我们也可以研究持续天数与严重程度的关系,将数据按照持续天数排序,如图3-40所示。
以大约25天为分界线,上部分为持续时间较短的副作用,下部分为持续时间较长的副作用。关于统计分析的具体方法,我们会在第7章详细探讨,这里通过观察,可以发现大部分Mild轻微症状的持续时间都较短,而大部分Severe严重症状则持续时间较长,这可以给临床试验的管理人员一些信息,让它们更好地帮助患者康复。
图3-40
以上就是在临床试验过程中对副作用记录数据集的一个操作,据笔者统计,至少还有两种方法计算副作用持续时间,读者可以根据本书之前提到的内容自己思考并且操作。笔者仍然要强调,SAS是工具而非目的,只要能够成功完成数据分析的目的,无论什么样的程序都可以算是合格的,在初学期间没有必要纠结于所谓的“运行效率”和“程序长度”,非要找到最好的程序结构才开始编程。毕竟只有出发,才是到达终点的必要条件。
到此,相信读者对于data步已经有了基础的了解,包括它的基本语法、数据集和变量的操作、函数和格式。如果说SAS入门是一条总长度为100%的进度条,目前我们已经完成了50%的进度,剩下的则是proc大显身手的地方了。关于proc的种种功能和它的用法,我们会在下一章详细展开。所谓“山重水复疑无路,柳暗花明又一村”,当你发现某些问题在data步解决不了的时候,就准备好使用proc吧!