Entries Tagged '胡说' ↓

更新(技术与工作,2011-10-04)

大半年没跟新了。一些个人技术方面的动向在英文博客里:

1.  CDISC Express

CDISC Express是一款开源的SDTM转化器,基于SAS和Excel(其实背后是XML)。我为这个产品写了一系列的入门教程,并参加了一个相应的比赛(赢了一台iPad)。益辉最近也抽中了一台Kindle,加上上半年在SAS Global Forum拎回来的一台Kindle,不禁感慨,知识(和概率)真是咱农民的第一生产力呀。对着手头这台上世纪的诺基亚6300,我坚定的目光瞄上了iPhone5。有一句话说,做自己喜欢的事,然后找一个人或机构买单,人生一乐也。

又,把临床数据自动导入到符合CDISC标准的数据集,现在有不少vendor在做,很多药厂内部也有开发。感兴趣的朋友不妨也鼓捣鼓捣。

2. Big Data

现在还提这个概念就较不时尚了,重要的是如何做,或者如何为以后做些准备。SAS也将加入对Hadoop的支持,不过现在Hadoop的框架还是基于Java,拣回来些C/C++、Java或者Python还是很有戏场的(甚至R也能够玩会Hapoop),对一个SAS程序员来说,是时候更新自个的工具箱了。

迄今为止,这个领域还是IT人士的天下。这一方面说明了我们这些传统的数据分析人员还需要夯实技术(去看看Hadoop的‘hello world’, 所有的操作都要分解为map()和reduce(),而这并不是所有人都习惯的),也说明目前这一块,发展还在起步阶段,因为这些框架,最终都是要为了让数据产生价值,而这就不可能有数据分析师的缺席。

3. SAS之外

这些日子,在SAS之外,试图拣回来些数据挖掘的东西。本来准备四月份在拉斯维加考下SAS数据挖掘的认证,后来还是被其他事情给挪掉了。最后所得就是,还是稍微看了下这块的东西,在概念上是过了一遍。这次在拉斯维加,碰到以前在北大一起做SAS俱乐部的朋友光辉,他现在加拿大工作。光辉说他趁着开会的缝隙,随手把SAS的数据挖掘认证(SAS Certified Predictive Modeler using SAS Enterprise Miner 5 or 6 Credential)给考了。这叫行动力啊。

机缘巧合,这上半年有朋友给我介绍Feature Selection(大白话就叫变量选择,在数据挖掘里面属于前期的工作),我就对着一个R的包看了一遍,也就是在脑袋里过一下,最后没有什么成果出来。另一个额外的好处是,这次我是对R在学习方面的优势有了切身体验,对R算是有了些个人感情。一边找论文看,然后几乎就能找到一个相应的R包跑一跑,增加些手感,这效果真是不错。

再说些R。我还真尝试过认真学一学R。做为一个SAS程序员,想,还是从input/output开始吧,就先研读官方文档R Data Import/Export,转了一圈,发现,这数据读取转存还是SAS更为方便有效,对我来说,鼓捣这个有点得不偿失,遂罢。

又想,R对SAS的一个优势在于它支持多种数据结构,像array、list之类,就从这入手了。不知道怎么搞的,在学习R的数据结构时,可能是我学习不够深入,修为不够,总觉得有些不够畅快——具体我说不上来。想,我还是把自己的Python拣回来吧,R跟Python有类似的地方。后来我就能说上来了,Python的List等数据结构,对我来说,的确是更为优雅(换一种说法,或者是因为我还没有读到一本“优雅地”介绍R数据结果的文档)。好吧,到此为止,我的R还停留在用它尝试算法的阶段。

然后就是捡回Python。我两年多的SAS程序员工作经历,一个直接的后果就是把之前学过的一点C++、Java和Python又打回“hello world”的水平,手都生疏了。我读了很多Jian Dai(他在加州做SAS程序员)的代码,包括Perl, C, JavaSAcript等等,想,做SAS程序员也不至于把其他的语言都丢掉,为了方便,又重新学习下Python。

为学而学毕竟有局限,在工作中使用当然来得最快。现在我还没有这机会,除了翻文档之外,就尝试用Python写些小东西,把它就当一回事一样。其实,除了工作中直接使用,还有一项就是参加开源运动——我看益辉这几年写R代码是风生水起,一个极大的外部刺激就是参与开源运动,整个积极性都给起来了。一个普通的统计学博士生,用不了那个多的代码量,那动力,就在于统计之外。

统计。今年的基础统计学习,没有去年那么饱满。每天跟统计师打交道,就想好好学习一下他们的语言。今年,到现在为止,算是在工作中(向统计师)学习,整了下CI calculation和euivalence and noninferiority test。下一步准备鼓捣些Sample Size之类。有个哥们写了一篇文章叫Programmers Need To Learn Statistics Or I Will Kill Them All,好吧,作为一个程序员,为了生命安全,每天跟统计师打交道,还是学下统计了。

4. 工作

不是说自己的工作,是说工作与实习机会。感兴趣的朋友,不妨跟我联系。中南大学统计系的本科生韩帅,不久前结束在我公司的实习,在Sxlion主持的SAS中文门户写了两篇非常有价值的总结文章,大伙可以去看看:

一个SAS菜鸟的故事 学习篇

一个SAS菜鸟的故事 实习篇

人是这样的,只有经历过了(我说的是第一份实习或其他),才能自信地自称“菜鸟”,否则就真是论坛里“弱弱地问”的菜鸟。我推荐我公司,当然是因为最熟悉。说实在的,在北京,在药厂,对SAS程序员来说,这的确是一份不错的的实习机会。去年我也推荐了汤耀华来我公司做实习生,他现在中科院读研。这两位都来自中南大学,怎么说?对我和我的同事来说,他们提升了中南大学在我们心目中的分量。在上海,我想,很多SAS程序员对中南大学也很有兴趣。

一些大学生朋友给我写邮件打电话,说些职业或技术选择的事。这不是选择两个到手的offer,大哥,随便扎进一个方向,都比在那犹豫强。

5. SAS

还是得提一下SAS。现在用上SAS9.2了(然后SAS9.3就华丽丽地发布了。。。),对我来说,直接地,有两个触动:

1)SAS9.2及以后,作图更漂亮,我终于有些动力研究下SAS作图了。在公司,去年与宾州的同事一道,把公司作图的macro(基于9.1.3)的更新以后,以后都直接调用,压根就没写过proc gplot之类,然后我就发现自己作图的那一点点手艺正在迅速凋零。。。

2)SAS9.2中,BASE中正式支持自定义函数(仿佛听到其他门类的程序员在冷笑,我弱弱地辩解一下,SAS/IML早就可以自定义函数,而且对SAS程序员来讲,一直使用macro写一种叫function-like macro,而且,macro也支持递归。。。)。这将给我们的编程生活带来不少乐趣,其中之一就是可以把以前的一些macro改写成函数(方便debug啊)。

在写函数之前,我把SAS BASE里面的函数都看了一遍,省得以后重复造轮子:

SAS_Func

 

 

 

 

 

 

 

把所有的函数分门别类导入到Excel,然后动用一点VBA,把每个函数的解释都搁进每个函数名的comments里。这么一梳理,又发现不少有趣的东西,再议。

理解统计学

像外行一样思考,像专家一样实践。

刚在“统计之都”(COS)贴了一篇读书笔记,关于假设检验的基本概念。作为一个非统计出身的SAS程序员,我特别在意如何用大白话来解释统计学的概念:数学公式的推导,我可能走不了多远;但用普通话给表达出来,我其实没什么劣势。写这类文章,我都把自己的认知界定在高中水平,然后一路路给出示例说明,最后达到理解某些概念的目的。比如这篇关于假设检验,基于这段时间来生物统计学基本教材的阅读(这里这里)而做的一个笔记,就是从日常的逻辑推理说开去。从常识说起,能推到多远,就写到多远。

这一年的统计学阅读,多集中在生物统计方面。生物统计基础,是统计学中最保守也是最经典最严格的那部分——这对我来说,一个好处就是,可以借这个机会,细致地补补统计学101。如果有时间,我倒是愿意就每个主题都写一篇。以后如果自己长时间不接触统计学了,通过自己的笔记还可以迅速捡回来(《程序员统计书》?)。时间,写这个东西最耗的就是时间:什么东西都得不厌其烦地写出来。最后自己读一读,都有些琐屑的味道。

———–

在那篇博文里,我借用了一个在线统计学习网站的一个t分布生成器,挺方便的东西:

http://onlinestatbook.com/calculators/

技术博客重新开张

把以前在space写的文字都导入到这个新博客里了。

这新得白花花扎眼的一年,还想多写些关于SAS程序员本身的文字,关于这个职业,它依托的行业环境等等。SAS程序员在国内还不是一个很兴盛的职业。

还会有关于SAS本身的文字,关于SAS语言,SAS公司,关于它的创始人等等。最近我对SAS的创始人Tony Barr比较感兴趣。

技术本身,这个跟饭碗相关,除了SAS技术,很多笔墨可能会停留在CDISC上面。当然还会有自个兴之所至的其他文字,才年初呢,啥都没定。作为跟“统计之都”的约定,所有跟统计相关的文字,我会首先发布到“统计之都”,然后在自个的博客做个备份:

http://cos.name/author/hujiangtang/

数学娱乐:男女不均衡及希尔伯特的旅馆

好些日子没能更新这个博客,转一个我生活博客里的好玩东西,关于“男女不均衡和希尔伯特的旅馆”:

********************************************************************

看一个大龄相亲的报道。不均衡的几千万男性同胞,是祖国和人民的一大关注热点。有好事者提议,比如,现在的30岁男,俯视下一代,找个20岁女,到下一辈的30岁男,如法炮制,也找20岁女下手,如果循环往复,神州大地就不存在男女比例不平衡的问题了。咋一听,还以为到了希尔伯特的旅馆。

说,有个人去投宿,但那家旅馆已经满员了,意思是,比如,这家旅馆有很多层,每层就一个房间,每个房间都住了一位客人,是为满员。但旅馆老板有办法,让这个投宿的客人安心入住。首先,他就把这个客人安排在第一层,把原先住在第一层的客人安排到第二层,把原先在第二层的客人安排在第三层,就这么一直挪过去。记住,刚才我们说这家旅馆有很多层,很多的意思是,你总有办法把客人一层一层往上挪,这样,那位原先以为住不到店的客人也就能安排好了。这家旅馆就叫做“希尔伯特的旅馆”,希尔伯特是一个数学家的名字。

理解希尔伯特的旅馆,可以举个例子,比如,有两个无穷可数的数列,一是自然数列,二是偶数数列。无穷是说,这个自然数列从1、2、3、4、5、6、7、8、……等等一直持续下去,这个偶数数列2、4、6、8、…… 也是一直持续下去,可数是说,虽然上面两个数列是无穷的,但是你有兴致,却可以掰着手指头一二三四地跟着数下去。不可数的,比如在数轴上分布得密密麻麻的实数数列,一会是1.1,一会是1.111111111111111111111111111111111111,就叫人没法跟着数了。

扯远了,还是刚才两个无穷数列

A:  1、2、3、4、5、6、7、8、……

B:  2、4、6、8、……

如果有像A数列展示一样多的旅客,而只有B数列一样多的房间,看着似乎就有一半的人住不了店了(每个房间只能住一个人)。——如果你真的这么想,就要想想上面的希尔伯特旅馆,看看如何有办法让A数列多的人住进B数列多的房间:

A:  1、2、3、4、5、6、7、8、……

B:  2、4、6、8、10、12、14、16……

方案是这样的,想像一下客人全部以自然数列编号,房间都是偶数号,就让编号为1的客人住在B中编号为2的房间,客人2住4号房间,客人3住6号房间,这么一个个数过去,所有的客人都能住上店了。上面的事实有一个惊人的结论,即A数列和B数列,在某种计数下,竟然是一一对应的。一一对应,自然每个客人就都有自己的房间了。说“某种计数”,是按上面的匹配程序走,不是我们一般说的个数。

扯更远了,希尔伯特的旅馆是没问题的。接下来我是想驳斥上面说的循环往复解决男女不平衡问题,那纯粹是扯淡,跟希尔伯特的旅馆,只是有些似是而非的联系。我要睡了(我已发现此命题的一个真正奇妙的证明,但是这页边空白太小,写不下这个证明。……)

所有技术博客:截止08-02-25

BiCubes新开了一个(又是所谓)的技术博客,也叫“技止于此”,与这个space互为镜像了。同时整理了一下这里所有的文章:

SAS

SAS与Perl正则表达式(1):元字符

SAS Logistic回归:一个完整例子

 

SAS和蒙特卡罗模拟(3):SAS随机数函数及CALL子程序

SAS和蒙特卡罗模拟(2):随机数基础

SAS和蒙特卡罗模拟(1):开篇

 

用SAS读入原始数据(2):PC文件

用SAS读入原始数据(1):文本文件(续)

用SAS读入原始数据(1):文本文件

 

SAS Tips &Tricks:按组求累加值

答客问:SAS对列求和

SAS备忘录:format和informat

SAS学习笔记(4):Editing and Debugging SAS Programs

SAS学习笔记(3):Referencing Files and Setting Options

SAS学习笔记(2):Using the Programming Workspace

SAS学习笔记(1):Basic Concepts

SAS学习笔记:开篇

 

几个SAS编辑器里的快捷键

一组常用的SAS快捷键和命令(一):入门阶段

SAS Macro的面对对象解释-一个附会

推荐书:朱世武老师的《SAS编程技术与金融数据处理》

SAS Base 金融函数

SAS程序员必备的十大技巧

How to pronounce SAS ?

 

数据挖掘

决策树的构造——一个手工例子

最大熵模型:读书笔记

概率、信息和熵

常见数据挖掘错误:识别和纠正(译稿)

洗衣机,数据挖掘的物理模型

神经网络:学习笔记(1):神经元

三个有名的决策树算法和它们的叶子

三个有名的决策树算法:CHAID、CART和C4.5

几个有名的数据挖掘与机器学习的练习数据集(一)
数据挖掘入门书:Roiger&Geatz《数据挖掘教程》清华版2003
Ryszard Michalski

数据采集策略:数据挖掘与统计学的一个区别

KDNuggets调查2007:数据挖掘方法论
KDnuggets调查:数据挖掘方法和工具

一款像模像样的数据挖掘软件—AlphaMiner

数据挖掘——我们能从股市数据得出什么,以及一些算法

 

统计学备忘录
白话统计(2):中心极限定理
白话统计(1):平均数、中位数、众数

备忘录之主成分分析

S语言:棕皮书、蓝皮书、白皮书和绿皮书

SAS Logistic回归:一个完整例子

金融计算

金融随机过程:备忘录

提升指数、提升表和提升图
Excel债券计算函数
Paul Wilmott’s Books on Quantitative Finance

SAS Base 金融函数

计算股票的贝塔值β

下载yahoo finance和雅虎财经数据

推荐书:朱世武老师的《SAS编程技术与金融数据处理》

 

其他
BNF
标记法:简介

SQL——在Oracle SQL*Plus里工作(1):基础篇
Windows下运用Linux工具(一):G++/Cyguns
Excel-备忘录
在UltraEdit中配置Java编译器
写在前面——我要经营的技术博客

我所有的(所谓)技术文章,从2007年3月15到2008年1月14

这样子的整理,本该是07年末的事,以后也这样随手摆出来了:

************************“技止于此”文章目录,从2007年3月15到2008年1月14************************

46-  SAS和蒙特卡罗模拟(2):随机数基础
45-  SAS Tips &Tricks:按组求累加值
44-  SAS和蒙特卡罗模拟(1):开篇
43-  SAS程序员必备的十大技巧
42-  Excel债券计算函数
41-  金融随机过程:备忘录
40-  Paul Wilmott’s Books on Quantitative Finance
39-  BNF标记法:简介
38-  SQL——在Oracle SQL*Plus里工作(1):基础篇
37-  常见数据挖掘错误:识别和纠正(译稿)
36-  SAS Base 金融函数
35-  答客问:SAS对列求和
34-  SAS备忘录:format和informat
33-  Ryszard Michalski
32-  How to pronounce SAS ?
31-  概率、信息和熵
30-  三个有名的决策树算法和它们的叶子
29-  提升指数、提升表和提升图
28-  SAS Macro的面对对象解释-一个附会
27-  SAS学习笔记(4):Editing and Debugging SAS Programs
26-  数据采集策略:数据挖掘与统计学的一个区别
25-  SAS学习笔记(3):Referencing Files and Setting Options
24-  计算股票的贝塔值β
23-  KDNuggets调查2007:数据挖掘方法论
22-  SAS学习笔记(2):Using the Programming Workspace
21-  神经网络:学习笔记(1):神经元
20-  SAS学习笔记(1):Basic Concepts
19-  SAS学习笔记:开篇
18-  KDnuggets调查:数据挖掘方法和工具
17-  备忘录之主成分分析
16- 下载yahoo finance和雅虎财经数据
15-  S语言:棕皮书、蓝皮书、白皮书和绿皮书
14-  一款像模像样的数据挖掘软件—AlphaMiner
13-  最大熵模型:读书笔记
12-  SAS Logistic回归:一个完整例子
11-  三个有名的决策树算法:CHAID、CART和C4.5
10-  数据挖掘——我们能从股市数据得出什么,以及一些算法
9-  Windows下运用Linux工具(一):G++/Cyguns
8-  一组常用的SAS快捷键和命令(一):入门阶段
7-  Excel-备忘录
6-  在UltraEdit中配置Java编译器
5-  推荐书:朱世武老师的《SAS编程技术与金融数据处理》
4-  决策树的构造——一个手工例子
3-  几个有名的数据挖掘与机器学习的练习数据集(一)
2-  数据挖掘入门书:Roiger&Geatz《数据挖掘教程》清华版2003
1- 写在前面——我要经营的技术博客

***************************************************************************************************

写在前面——我要经营的技术博客

一直在Windows Live Spaces下写博客。因为跟MSN连着,又在QQ签名档挂出来,多是让分散四方的朋友知道些我的生活状态,就记些每日喜乐、平常见闻。我高中念文科,大学念经济学,这么一下来好朋友的背景多是文史哲或是经管类。我行路崎岖,又转学软件工程,学一行爱一行,手头不免常有些跟专业有关的问题想记下来。这些东西要大规模在我那个Space出现,恐怕我大半朋友要觉着索然无味了。

一开始想在CSDN开我的技术博客,是看了几期《程序员》杂志,又在里面转了几圈。这个社区的技术氛围是没得说的。不过稍微试了一下,更新起来不是很方便,一直用Windows Live Writer(Beta)和Performancing写我的Live Space,但这个CSDN好像不太好使,所以这个所谓技术博客也在Windows Live Spaces落户了,想法是以前那个仍旧记事。用Windows Live Spaces做技术博客,只是图个更新方便。

看看我博客的副标题,那个注释格式,多数人能认出来是C言语风格的。我没学过C,看中的是SAS语言也能用这个格式,而SAS就是我所认为的“技术”,我的饭碗了。在这里我想写一些我对机器学习、数据挖掘、数据仓库、金融建模等领域的一些看法以及SAS、SPSS、Weka、Matlab、Mathematica等工具的应用。看到底能走多远了。按着惯例,说说我写博客的原则:

1. 除非是公众人物,或者得到授权,我的博客不会出现真名,以及他们的联系方式;
2. 如果是转载或翻译的文章,我一定会注明出处,而且尽量详细;
3. 即使是原创文章,如果得到帮助,我也会尽量注明从哪些文章哪些书籍得到灵感。