Guangchuang Yu

a senior-in-age-but-not-senior-in-knowledge bioinformatician

enrichment analysis

Apr 28, 2012 - 2 minute read - Comments Statistics

经常看到一些饼图,描述某些事物的组成,比如说有钱人的学历分布,然后我们可以看到高学历所占比例并不高,根据这个比例下结论通常是错的,这些比例说明不了问题,如果把各种学历在总体人口中的分布做为背景进行考虑的话,你就会发现学历还是有点用的。 当我们用组学测定了一大堆分子之后,我们希望站在更高的角度去看这些分子和那些生物学过程相关。那么通常各种注释,对这些基因/蛋白进行分类,那么从分类的比例上,是不能草率下结论,正如上面有钱人学历分布的例子一样。我们需要把总体的分布考虑进去。 和某个注释/分类是否有相关性,把基因分成属于这一类,和不属于这一类两种,这就好比经典统计学中的白球和黑球的抽样问题。也可以列一个2x2的表,进行独立性分析。 以文章Gene Expression in Ovarian Cancer Reflects Both Morphology and Biological Behavior, Distinguishing Clear Cell from Other Poor-Prognosis Ovarian Carcinomas所鉴定的差异基因为例。

Support Vector Machine

Apr 12, 2012 - 1 minute read - Comments statistics

支持向量机(Support Vector Machines, SVM)最初由Vladimir Vapnik于1997年提出,SVM最简单的形式就是找出一下区分界限(descision boundary),也称之为超平面(hyperplane),使得离它最近的点(称之为support vectors)与之间隔最大。

这和logistic regression有些相似,区别在于logistic regression要求所有的点尽可能地远离中间那条线,而SVM是要求最接近中间线的点尽可能地远离中间线。也就是说SVM的主要目标是区分那些最难区分的点。

SVM对于hyperplane的定义,在形式上和logistic regression一样,logistic regression的decision boundary由$\theta^TX=0$确定,SVM则用$w^TX+b=0$表示,其中b相当于logistic regression中的$\theta_0$,从形式上看,两者并无区别,当然如前面所说,两者的目标不一样,logistic regression着眼于全局,SVM着眼于support vectors。有监督算法都有label变量y,logistic regression取值是{0,1},而SVM为了计算距离方便,取值为{-1,1}

Installing Hackintosh

Mar 15, 2012 - 1 minute read - Comments Mac OS

初中时在杂志上看到苹果的彩壳机,从此叔就开始成为了苹果的脑残粉,还在K6-2和win98那会,就在玩macintosh主题。

本科时,通过PearPC来虚拟PowerPC,硬是在ATHLON XP 1700+这个破CPU上破了OS X Jaguar,那个慢啊,是无法忍受的。

后来,有了一台powerbook,却拿它来装gentoonetbsd。从那里候开始,基本上就只用Linux/BSD。

happy valentine

Feb 14, 2012 - 1 minute read - Comments Visualization

今天看到统计之都上的情人节心形图。 这次画的心形函数是: $ x = 16 (sin t)^3$ $ y = 13 cos t - 5 cos 2t - 2 cos 3t - cos 4t$ 尝试用ggplot2来画,结果如下: 代码见Github. 类似的心形图以前也是画过的,当然这样的函数图有很多,详见http://www.mathematische-basteleien.de/heart.htm,画起来也很容易。 倒是以前画过的蝙蝠侠logo,更有成就感些。

violin plot

Feb 7, 2012 - 1 minute read - Comments Visualization

ggplot2 0.9.0版本将在3月1号发布,改动较大,最近bioc mailing list也有诸多讨论,因为它导致了某些包编译出错(估计是NAMESPACE引起的)。

按照hadley的说法是这是为了把他个人的项目变成一个社区项目。

大多数的改动对用户来说是invisible的,用roxygen2去注释函数,核心代码使用S3重写,分离出一些特性(scales包)等。

最明显的是现在画图速度变快了,不过我觉得最让人兴奋的是guide_legend()guide_colorbar()两个函数,可以修改legend.

画图的话,加了四个函数geom_map(), geom_raster(),geom_dotplot()geom_violin().