北京数据管理与生物统计论坛(BBF)第三次聚会见闻录

9月4号下午,周六,去北大医学部参加了北京数据管理与生物统计论坛(Beijing Biometrics Forum, BBF)的第三次聚会,这次活动由SAS China北京大学临床研究所赞助。这里写些会议见闻和一些零散的感想,不算是会议的正式“纪要”。东西贴这,大致想给“统计之都”(COS)的朋友交流下北京SAS技术社区的氛围、工作市场情况以及一些相关技术评论等等。

1. 话题

西安杨森的薛富波博士做的开幕致辞,他也是BBF的召集人。SAS China的市场部总监罗威先生代表SAS公司做了欢迎致辞。下面是六位主题发言人的演讲简介以及我的一些杂感。

1.1 SAS程序编写规范(Good SAS Programming Development Practices)

演讲者是赛诺菲-安万特的李友先生,也是本次活动的主持人。除了行业监管规范(如21 CFR Part 11),李还提到SAS的代码规范,如花盒子注释(程序头)、代码结构、缩进、命名规则、可重用性和效率等等议题。这些问题,各个公司各个程序员可能都有不同的风格不同的偏好,但李给的这个较为全面的梳理,还是非常有启发意义的。

对传统程序员(C/C++、Java、Perl、……)来说,代码风格、质量以及重构都是很好理解的事情,但这些却是大量SAS程序员需要补的课。SAS程序员背景多样,主要以统计、数学、生物、医学为主,大多缺少这方面的训练,认为写出的代码能够完成工作就万事大吉。这里除了对SAS运行机制的理解层次不一样,还有一个代码品味的问题。如果把整页整页的代码看成一篇散文,从观感上,相信每个人都能判断出,哪些代码至少“看上去”像是非常好代码。

李提到他幻灯片里介绍SAS软件的部分,参考了“统计之都”的博文——原来也有同行在看这里的文字。国内SAS程序员散布四处,有些在COS潜水,有些在mysas.net灌水,有些喜欢类似BBF的线下交流,浮出水面,可能大伙看着都脸熟。

关于代码规范。还有一个比较少见但却是非常有意思的可能,那就是,“非不能也,实不为也。”怎么说?咱不是水平不行,也不是品味极差,但为了保住饭碗,俺就是要把代码写得极怪,以使后人无法接手维护,从而保证了自己的不可替代性。这种人被称作Job Security Specialist。有点可笑了,呆伯特有一句说得好,笑笑:

Don’t be irreplaceable, if you can’t be replaced, you can’t be promoted.

1.2 PROC SQL在临床试验中的应用(PROC SQL Applied in Biometrics)

演讲者是RPS的吴崇胜先生,介绍的是PROC SQL在临床数据分析中的应用,包括数据校验、数据汇总等,强调了PROC SQL跟data steps(数据步)相比对列进行处理的优势。

一个SAS程序员的工具箱分为两类,一是传统SAS的data steps,二就是SQL。——说到这里,我要先提一下“SAS程序员”和“SAS使用者”的区别:

  • SAS程序员在文本编辑器里写代码,里面主要是data steps和SQL,穿插以Macro(宏)和其他procs(程序步)等等,总之,一个“SAS程序员”几乎就是一个“SAS/BASE程序员”。
  • 而“SAS使用者”,他们或者单纯使用SAS的客户端工具,如Enterprise Guider、Analyst、SAS Add-In for Microsoft Office,或者也写主要以procs为主的代码(显然,有的SAS使用者会成长为SAS程序员,有的SAS程序员也会转化成SAS使用者)。

SAS的PROC SQL是标准SQL(SQL-92)的一个实现,你可以把在其他任何场合学到的大部分SQL知识不加修改地移植到PROC SQL里面来。这也能提供一部分的解释,为什么以前是统计系学生专场的SAS程序员群体,有越来越多的IT背景的人员加入。

data steps跟SQL是左青龙右白虎,混合使用,扬长避短,才能相得益彰。SAS data steps脱胎于PL/1,是一门过程式的语言,而SQL呢?它的全称是Structured Query Language(结构式查询语言),但其实,SQL既不是结构式的,也不仅仅是用来查询的,最后,从图灵完全的角度,它也不能算作一门“语言”(比如,标准SQL就做不了循环)。

1.3 PROC FCMP介绍

演讲者是我的前同事,SAS R&D的覃龙先生。有了PROC FCMP,你就可以像其他语言一样,定义自己的函数了,而不是只用SAS Macro定义一个“类似函数的”宏。覃的报告分为两部分,一是用PROC FCMP的数据功能(array),实现类似SAS/IML的矩阵运算,二就是用PROC FCMP自定义函数了。

PROC FCMP是SAS 9.2版本的一个亮点,其实在9.1.3也有它一个实验版本,可以拿来练练手。又,覃提到SAS Macro不能做递归,其实它是可以的,也不是很麻烦(当然不如在PROC FCMP里写着顺畅)。

1.4 让SAS作图变得更容易:%GraphLineplt (%GraphLineplt: Made Graph Easy)

演讲者是赛诺菲-安万特的李华丹先生。%GraphLineplt是李开发的一套多功能的作图程序,整个发言就是讲解这套宏的构架与使用。我对作图没有特别的研究,对着文档照葫芦画瓢而已。主要印象,一是作图元素的分解,二是用data steps辅助(annotate功能)。听这个演讲,至少知道,以后有问题,可以直接找谁请教了。

1.5 一些SAS小技巧(Tricks Make Life Easy)

演讲者是诺和诺德的于文博先生,去年在CDISC Interchange 2009的培训会场见过。于介绍了SAS的两个实用小技巧,一是Add Abbreviation,二是Record Keyboard Macros。当然,他发言的精华不在这里。展示完这些小技巧后,于说道:

all tricks are in the dust. 所有技巧都是过眼云烟。

接着于就展示了质量控制专家戴明著名的“戴明环”(Deming Cycle),一个计划、执行、检查、处理的闭环。虽然衔接得有些无厘头,于还是有效地把会场的气氛大大提升了一把。戴明环对项目管理很有启发意义。

1.6 医药行业SAS程序员职业发展探讨(Career path of SAS programmer in pharmaceutical industry)

演讲者是Covance的邓亚中先生。邓这次演讲带了很多干货:

  • SAS程序员在医药行业的分工
  • SAS程序员的职业转向(技术专家、咨询顾问、管理、培训等等)
  • 国内药厂和CRO统计师和SAS程序员的数量和分布(有图有真相,整整两页胶片,大伙看着都是非常感兴趣)

关于SAS程序员,现在国际上的大药厂以及CRO纷纷在中国设点,邓说,就今年国内还有100个缺口(邓在发言中也顺便给他们公司招聘做做话题广告):这100个人,往哪里找啊?国内高校,SAS教育的状况不容乐观。李友后来插一句,就仰仗各位帮扶带了。

2. 人物

2.1 薛富波(Bruce Xue)

第一感觉就是,比我印象中年轻多了(Bruce,在我印象中,你也不“老”,只是……)。我06年开始学习SAS(版本9.13),跟那时很多初学者一样,手头也都摆了Bruce的《SAS宏语言基础》以及他与上海张文彤等人合著的《SAS 8.2统计应用教程 》(2004)。当时他还在西安,第四军医大。怎么说?印象中Bruce有我老师般的年龄,见面却是我经理的年龄,——俗语一句,闻名不如见面,见面更胜闻名呀。

提到国内SAS教育的先行者,北大统计系的高惠璇老师已经退休,上面提到的张文彤,也离开了复旦,最近在淘宝网的数据门户看到一则消息,说他已经转入上海一家市场研究公司。在北京,如果嫌自学SAS不好玩,可以去高校找找现在还活跃的老师:

  • 军事医学科学院的胡良平教授,这个秋季学期在中科院研究生院开SAS课;
  • 按照朱世武教授的一贯安排,这个秋季学期他也会在清华大学经管学院开两三门SAS与金融计算的课程,本科高年级和研究生两种水平类别;
  • 北大统计系李东风教授这个秋季学期会开一门“临床试验SAS高级编程”(SAS Programming in Clinical Trials)的选修课,针对大四毕业生。同时,这个秋季学期,北大统计系还开有一门“临床试验设计与分析”(Clinical trial design and analysis)。个人感觉,这是北大统计系对最近几年国内生物统计市场蓬勃发展的一个反应。真很可贵的尝试。

另外,按照人大统计系的某些实用主义传统,这个秋季学期或者明年春季学期,也会开设相应的SAS的课程。大学乃社会公器,认为未注册的人来蹭课会“扰乱教学秩序”只是大学的“教务部观点”,而非大学的“教授观点”。讲讲北大的氛围,假设,80人的教室刚好容纳80位注册学生,然后一共有100人来听课,你就不知道坐在位子上的80位、后排站着的10位、还有前排地板坐着的10位谁是注册生谁是旁听生。老师继续上课,相安无事。然后,教室再挤来20位蹭课的。课堂终于混乱了,教授说:“我们再换一个大点的教室吧。”上次回学校,图书馆迎新生,拉了一个条幅,上书“得天下英才而教之,遍读经典以传承”,居然感动地一塌糊涂。

2.2 tangyh

tangyh是“统计之都”(COS)SAS版的版主,现在中科院读研,数据挖掘方向,刚在赛诺菲巴斯德生物统计部结束暑期实习,是解决问题能力很强的SAS好手,会上也有猎头过来问候。想,等两三年后,如果tangyh对工业界感兴趣,我要第一个给他打电话。

2.3 hopewell

hopewell是国内最火的SAS中文论坛mysas.net的版主,最近几年在mysas.net上写代码是写得风生水起。之前我们简单沟通过,正好趁着这个聚会混个脸熟。

讲个小插曲。hopewell下午来的时候,手机刚好停电,我就在会场冲着感觉像他的面孔招手。后来hopewell同学通过组织会议的一位朋友找到我,自我介绍说是hopewell,我那朋友看着没反应,我差点叫出来,hopewell这个ID都不认识。唉,不是所有的SAS程序员都上mysas.net的。虽然SAS公司的laosunny在mysas.net发了本次活动的预告,但感觉BBF跟mysas.net沟通不多。这次BBF大体上是一个通过工作邮箱召集的活动。

回到hopewell同学,一起海聊了。瞅个话档,我又厚颜无耻地问他对我公司感不感兴趣。碰到高手,我的第一个反应就是能不能邀请过来做同事,噫。

北京数据管理与生物统计论坛(BBF)第三次聚会见闻录》有17个想法

  1. 会上,好像是罗威先生提到自己学习SAS的时候说是遇到问题了找不到可以问的人。
    我想学长开始学习sas的时候应该也有这样的感受,就是遇到问题了很难找到解决的方法,要摸索很长时间。所以我一直在想要不要建立一个sas的问题集。
    我的想法是建立一个网站,每一个已经解决的问题都是一个独立的页面,上面问题,下面解决方案。然后允许其他人对解决方案进行评价和提供更好的解决方案。然后为了防止无意义的”谢谢“之类的回复,可以把下面的解决方案部分分成两列,左边一列是有意义的其他的解决方案,右边一列是“谢谢”之类的。
    然后可以按问题分类,比如data step一个独立的子域名,sql一个独立子域名。

    当然光靠自己做材料提供者做不大,所以需要有更多的人加入到材料提供者的行列。我的想法是对于每个注册的会员,为了应急,可以无偿看到5个问题的解决方案,不过如果得到5个问题的解决方案后该会员还不分享自己平时的问题和解决方案,就不继续让其看到其他问题的解决方案了,直到该会员分享自己的问题和方法。
    不知道学长觉得如何?

  2. 天啊。。。我们的新闻稿还在审~论坛就已经贴出来了。。真迅速啊~~~

  3. 多谢编辑同学帮我修订哈。

    to tangyh:你这个想法,国外有两个类似的网站,一是http://stackoverflow.com/,包括大多数编程语言,你可以找到SAS相关的问题和回答,http://stackoverflow.com/questions/tagged/sas。

    还有一个专门针对SAS的,http://www.runsubmit.com/,你可以参考一下。

    1. 呃,两个都还是问问题的地方。这样的话,弄到最后都是管理人员在回复了,看看mysas。我是想说弄个像陈列室的东西,把已知解的问题给列出来,按类。然后允许像维基一样分享自己的问题加解答。而不是拿问题来问。

      1. 呀,覃老师居然在COS出现,我刚听完课回来……

  4. 继续我的广告:

    最近,Covance宣布在中国成立临床数据分析和报告中心,其全称为Clinical Data Analysis and Reporting Organization, 简称CDARO。

    CDARO中国将是Covance在全球的第四个数据中心(其他分别在美国,英国和澳大利亚),也将这个全球第二大CRO公司新的全球布局和战略调整。这个中心的业务将包括临床试验的数据管理、统计分析、医学写作和PK/PD分析。

    CDARO的数据管理系统包括Oracle Clinical, Rave和Inform这三大主流系统。CDARO 的数据管理员和统计师能通过登录指定的服务器来运行Covance在全球的数据项目的数据管理和统计分析任务。同时,它也一直是CDISC的Sponsor和推行者。

    目前,CDARO正大举招聘和培养人才,从统计师、医学写作、统计程序员、数据管理员到数据录入员。期待您的加盟。

    加上其他药厂和CRO公司在中国扩大数据管理和统计分析队伍,新的一轮人才竞争将更加激烈。也会给这个行业的从业人员带来不少好的机会。

  5. 楼主在哪里工作咧~~~哎,这么多高人啊,早知道也该去参加!

  6. 之前在您的博客不能留言,所以就在这问一下了,冒昧之处,万望海涵:
    上次看您的博客,现在已经在某TOP药企做SAS programmer了是么?我想问下,那些大公司也用的是CDISC的数据标准么?还是说有自己的标准?

  7. 真是羡慕LZ能跟如此多的高手共同交流,能否提个不情之请?
    是否可将PPT与大家共享呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注