2

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

 3 years ago
source link: https://cosx.org/2010/09/3rd-bbf/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

关键词:BBF; SAS; SAS 程序员; 生物统计

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

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

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

演讲者是赛诺菲 - 安万特的李友先生,也是本次活动的主持人。除了行业监管规范(如 [21 CFR Part 11](https://en.wikipedia.org/wiki/Title21CFRPart11)),李还提到 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.1 薛富波 (Bruce Xue)

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

提到国内 SAS 教育的先行者,北大统计系的高惠璇老师已经退休,上面提到的张文彤,也离开了复旦,最近在淘宝网的数据门户看到一则消息1,说他已经转入上海一家市场研究公司。在北京,如果嫌自学 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

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

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

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


  1. 编者注:这个链接现在已经失效,抱歉。
  2. 编者注:这个链接现在已经失效,抱歉。
  3. 编者注:这个链接现在已经失效,抱歉。

敬告各位友媒,如需转载,请与统计之都小编联系(直接留言或发至邮箱:[email protected]),获准转载的请在显著位置注明作者和出处(转载自:统计之都),并在文章结尾处附上统计之都微信二维码。

统计之都微信二维码

← 用 R 也能做精算——actuar 包学习笔记(二) 泊松低方差计数数据建模问题 →

发表 / 查看评论


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK