佛祖的灯芯

《大话西游》里有一段:

紫霞来到了驿站的外面,在院落里趴着一只黑狗,正在盯着紫霞,一个老者正在来回的奔波着,不断的在院子里取火,然后又跑进屋里去点灯。
“各位客官,请稍等一下,马上就好了。”
灯里面只有灯油,没有灯芯,当然没办法点着了,紫霞走了过去:“老伯啊,你这样是点不着的,你只有油,没有灯芯哎。”
“我知道,可是灯芯不见了,有什么办法呢?”
“再买一根喽。”
紫霞和二郎神化作的老头说了几句,老头忽然直起身来,看着紫霞,声音骤然一沉。
“你说得对,可是如来佛祖的那盏日月神灯的灯芯不见了,到哪里去买?”

没有灯芯点不着灯,那人心呢?

T检验靠谱吗?

对于实验生物学研究者来说,经常遇到的一个场景是,对照组测量3个值,实验组测量3个值,然后用T检验得出均值是否有显著性差异,然后做出结论。如下图所示:
bio_t

 

 

 

 

 

 

 

 

 

 

 

 

那么T检验靠谱吗?
本文采用模拟抽样的方法来探讨这件事情,由于本人统计学知识有限,还请各位读者批评指正。

我们通过构建两个随机总体,总体1的均值固定为1(模拟control),总体2的均值我们从依次取0.5到2.0(模拟treatment相对与control的变化),标准差我们取0.01、0.05、0.10(模拟测量误差1%,5%,10%)。总体数量为1000,每次随机抽取3个样本,抽样1000次,考察通过T检验得出正确结论的频率。代码如下:

import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
import matplotlib.pyplot as plt
 
plt.xkcd()
sns.set(style="white", context="talk")
 
def norm_t(loc1, loc2, scale1, scale2, n):
    normSpace1 = stats.norm.rvs(loc = loc1, scale = scale1, size = 1000)
    normSpace2 = stats.norm.rvs(loc = loc2, scale = scale2, size = 1000)
    count = 0
    for i in range(1000):
        sample1 = np.random.choice(normSpace1, n)
        sample2 = np.random.choice(normSpace2, n)
        t, p = stats.ttest_ind(sample1, sample2)
        if (p < 0.05 and (sample1.mean() > sample2.mean()) == (loc1 > loc2)):
            count = count + 1
    return count / 1000
 
def plot(stds):
    df = pd.DataFrame()
    for std in stds:
        x = np.arange(0.5, 2.1, 0.1)
        y = [norm_t(loc1 = 1, loc2 = i, scale1 = std, scale2 = std, n = 3) for i in x]
        z = [std for i in x]
        df_std = pd.DataFrame([x, y, z]).T
        df_std.columns = ["difference", "sensitivity", "std"]
        if df.shape == (0, 0):
            df = df_std
        else:
            df = df.append(df_std)
    sns.pointplot(x = "difference", y = "sensitivity", hue = "std", data = df)
 
plot([0.01, 0.05, 0.10])

std_sensitivity
通过上图,我们发现,当标准差我们取0.01(模拟测量误差1%)时,增大到1.1倍或者减小到0.9倍,正确率可以达到100%。而当标准差取0.05和0.10(模拟测量误差5%和10%),效果就不理想了,本来是有差异的,还是有很大几率通过T检验得出错误的结论。显而易见的是,随着标准差的增加,T检验的效果变差了。

那么当标准差取0.10时,随着抽样样本数的增加,T检验判断正确的频率会是怎么样的呢?请看如下代码:

def plot2(diffs):
    df = pd.DataFrame()
    for diff in diffs:
        x = list(range(3, 60, 3))
        y = [norm_t(loc1 = 1, loc2 =1.1, scale1 = 0.10, scale2 = 0.10, n = i) for i in x]
        z = [diff for i in x]
        df_diff = pd.DataFrame([x, y, z]).T
        df_diff.columns = ["samle number", "sensitivity", "difference"]
        if df.shape == (0, 0):
            df = df_diff
        else:
            df = df.append(df_diff)
    sns.pointplot(x = "samle number", y = "sensitivity", hue = "difference", data = df)
 
plot2([0.5, 0.8, 1.2, 2.0])

n_sensitivity
通过上图,我们发现,即使标准差达到0.10,当样本数量达到30以上时,T检验的效果就非常好了。

那么如果两个总体没有差异,T检验得出有差异的错误结论的情况是什么样子的呢?我们构建两个均值为1容量为1000的总体,每次随机抽取3个样本,在不同标准差及样本数目的情况下,考察T检验得出正确结论的频率。请看代码:

def norm_t2(loc, scale1, scale2, n):
    normSpace1 = stats.norm.rvs(loc = loc, scale = scale1, size = 1000)
    normSpace2 = stats.norm.rvs(loc = loc, scale = scale2, size = 1000)
    count = 0
    for i in range(1000):
        sample1 = np.random.choice(normSpace1, n)
        sample2 = np.random.choice(normSpace2, n)
        t, p = stats.ttest_ind(sample1, sample2)
        if p > 0.05:
            count = count + 1
    return count / 1000
 
def plot3(stds):
    stds = [0.1, 0.5, 1]
    df = pd.DataFrame()
    for std in stds:
        x = list(range(3, 60, 3))
        y = [norm_t2(loc = 1, scale1 = std , scale2 = std, n = i) for i in x]
        z = [std for i in x]
        df_std = pd.DataFrame([x, y, z]).T
        df_std.columns = ["samle number", "specificity", "std"]
        if df.shape == (0, 0):
            df = df_std
        else:
            df = df.append(df_std)
    sns.pointplot(x = "samle number", y = "specificity", hue = "std", data = df)
    plt.ylim(0, 1.2)
 
plot3([0.1, 0.5, 1])

specificity
通过上图,我们惊讶地发现,当两个总体没有差异时,不管标准差是多少和取样数目是多少,T检验都有非常好的表现,即得到差异不显著的的结论。

这里构建的总体都是正太总体,其实对于其他分布的总体,结论是一样的,这里就不展示了。

通过上面的探索,我们可以得到如下结论:
1. 对于两个未知总体,通过T检验考察均值是否有显著差异,如果得出结论是差异不显著,那么进一步分析这些数据的标准差是否太大了,考虑是否增加抽样样本数做进一步分析。
2. 对于两个未知总体,通过T检验考察均值是否有显著差异,如果得出结论是差异显著,那么请相信它吧!

如果差异不显著,我们通过增大样本数量,使得差异显著;如果差异显著,那就是一个好结果嘛!
哈哈,T检验是实验生物学家的利器啊!

Chrome保存网页为图片

Google Chrome浏览器,可以很方便地将网页转换为PDF。右击网页空白处,在弹出的快捷菜单中选择”打印”,在”打印选项卡”中选择”另存为PDF”。
Chrome_tips_1

有时候网页太长,保存为PDF,分页显示很难看,想保存为图片怎么办呢?

Chrome有很多插件可以实现这个功能,这里推荐FireShot。在Chrome网上应用店,搜索”FireShot”,将它”添加至CHROME”。如果你不能访问Chrome网上应用店,考虑使用本站提供的翻墙工具
Chrome_tips_2

安装好FireShot之后,在地址栏右边会出现它的图标,点击这个图标就能使用FireShot将网页保存为图片了。FireShot支持捕捉整个页面、捕捉可见部分、捕捉选定区域,相当方便。我比较喜欢使用”捕捉选定区域”,它支持滚轮拖动,俨然一个加强版的QQ截图。
Chrome_tips_3

使用SCI-HUB下载文献全文

方法1:
直接打开http://sci-hub.bz/,输入文献的网址,PMID或者关键词进行下载。
sci-hub

方法2:
在文献下载页面的网址主域名后面加“.sci-hub.bz”,就可以下载了
例如
原页面地址:http://www.nature.com/nbt/journal/v24/n6/full/nbt1211.html
修改为:http://www.nature.com.sci-hub.bz/nbt/journal/v24/n6/full/nbt1211.html
(2016年6月3日 更新)

不会用Google,你就输在起跑线啦!

如果想实现一个东西,而这个东西又不是新事物,你首先得上网搜一下。如果是没人做出过它,先想想是不是查错了方式,然后才是努力去完成这项前无古人的任务。

自2010年,Google退出中国,百度一家独大。然而,百度搜索结果不尽人意,饱受诟病。”莆田系”事件的爆发,将百度推向舆论的风口浪尖。在百度搜索一个关键词,得到的往往是广告,甚至是虚假广告,得不到想要的信息。如果不会使用Google,你就输在起跑线啦!

如何以正确的姿势使用Google呢?推荐下面一个知乎问答。
如何用好 Google 等搜索引擎?

大多数情况下,使用关键词进行搜索就可以了。这里分享一些Google使用的小技巧。
文件类型 filetype
Google_tips_1
精确短语搜索 “ ”
Google_tips_2
排除条件 –
Google_tips_3
相关条件 related
Google_tips_4
站点搜索 site
Google_tips_5

一些Google的”镜像”网站:
http://www.googto.com/
http://www.scholarnet.cn/
http://guge.cytbj.com/
http://scholar.glgoo.com/

考试是为了将人区分开

作为一名研究生,还要受考试的折磨,真的很疼!
我们学院研究生课程基本上没啥用,有些课程甚至老师也懒得上。14级以前,研究生的课程成绩是不重要的,考试可以抄袭,甚至找人替考。我曾经就帮好几个师兄抄过卷子。14级以后,国家出台政策,以学业奖学金代替公费制度。要评奖学金,课程成绩肯定是少不了的,于是各种考试又来折磨人了。
考试的内容仍然是那么无聊,不是名词解释就是简答论述。研究生考试的一个好处就是开卷,这下头不是那么疼了,手疼。同学都写了密密麻麻的,自己少写一点都不好意思,何况还跟评奖学金有关。对于一些无聊的问题,无聊地去网上找答案,然后工整地誊写在卷子上,这样子有意义吗?如果考试得了高分,能说明掌握这么课程了吗?或者能说明比别人多学会了一些知识或者技能?我想都不能。
我的一个老师说,考试最大的意义或许就是把人区分开。资源(奖学金)总是有限的,只能满足一部分人,那么该满足谁呢?那就需要设定一个规则。这个规则合不合理或许真的不重要,能有区分度就好。饱受诟病的高考是这样子的,各种苛刻的求职(任职)门槛也是这样子的……
我很不擅长考试,为了不饿肚子,也得拼了!

开博两年了

读本科那会儿,写博客、写日志、弄QQ空间的人很多。大学一同学,写了4年博客,我也看了4年。毕业后,他不写了……然后,微博流行起来了,再后来又是微信,进入了移动互联网的时代……大家喜欢阅读短小的文字,喜欢在手机上阅读……不知道曾经我看他博客的那位同学,是否也来看过我写的东西……

2013年6月21日,注册了这个域名,用WordPress搭建了这个博客。那个时候,有一个问题让我疼了,后来借助网友的经验找到了解决办法,于是也想要把自己的一些东西也分享出来。再后来我把这个博客定位为:“学习专业知识,与大家分享”。

我从来就不是一个善于写文章的人,现在的博客才20篇左右。我也不是什么牛人,甚至可以说是一个标准的loser:普通本科毕业,毕业后工作不顺心,然后又回到这个普通的学校成为一名普通的硕士研究生。感谢互联网,让我这样的屌丝也能写点不入流的东西。

某天突然忘记了一个命令的参数,恰好博客上面有写,于是马上打开看看。不知道我的博客是否能够帮助到其他人,但是确实帮助了我自己。为了自己,为了其他像我这样人,我将继续写下去。

期待下一个两年……

2014最新SCI影响因子

影响因子(Impact Factor,IF)是美国ISI(科学信息研究所)的JCR(期刊引证报告)中的一项数据。 即某期刊前两年发表的论文在这两年中被引用总次数除以该期刊在这两年内发表的论文总数。

科研工作者,其工作的好坏主要体现在他发表的论文。然而,一篇论文的好坏,真的很难客观地评价。有了影响因子因子这玩意,事情就好办多了。硕博士毕业要发表多少点的文章,老师发表文章每点奖励多少钱,晋升职称需要要什么级别的文章以及需要多少篇,……,很多学校或者科研院所对此都是有明确规定的。后来,觉得光是有影响因子还不过瘾,中科院又对杂志进行了分区。

既然世道如此,那么我们不可不关注一下各个杂志的影响因子变化,毕竟这个关系到切身利益。2014IF.xlsx

谈谈精准医疗

美国人早在2011年就提出要搞精准医疗,今年奥巴马政府启动了精准医疗计划,中国于是跟进了。有一些院士力挺,也有一些院士唱衰。这给我们带来了困扰,到底精准医疗要做什么?

最近看了Toward Precision Medicine(http://www.ncbi.nlm.nih.gov/books/NBK91503/),这是老美的路线图。就像当年的人类基因组计划那样,这次老美还是想颠覆整个生物医学。人类基因组计划多大程度上改变了医学我不敢说,但是其对生命科学研究的影响那是翻天覆地的。根据这份文件,精准医疗的重点是,基于分子生物学知识结合临床建立一套新的疾病分类系统。

我们去医院看病,大抵就是医生询问了病情,然后用仪器做一些检查,然后告诉我们得了什么病。根据症状诊断疾病,依据的是现代医学100多年来建立的一套疾病分类系统。这套系统不是不好,而是分类的粒度不够细,也就是不够精准。经常会发现被诊断成“相同”病的病人的疗效差异很大,精准医疗就是要解决这个问题。有人也许会问,我们去医院检测了血糖、血脂、转氨酶等一系列生化指标,这不是分子生物学吗?一般我们所说的分子生物学研究的是生物大分子,主要是DNA、RNA、蛋白质,它们的分子量上万,克里克的中心法则是分子生物学的纲领。未来的看病的标配,常规手段之后,可能就要加上分子生物学水平的检测,比如检测你的基因(DNA)或者蛋白质方面的差异。我想对于大部分搞分子生物学的人来说,应该很容易理解分子生物学水平上检测(尤其是单碱基、单氨基酸水平)带来的精准性。分子生物学知识本身并不能建立这样的一套分类系统,结合临床才有意义,毕竟最后还是要给人看病的嘛。

最近以无创产前检测为代表的基因检测很火,相关公司的股票涨上天了,有人把基因检测等同于精准医疗。搞生物信息的人又说,精准医疗是测序加生物信息分析。这些都应该是精准医疗的一部分,而不是全部。当然精准医疗还在发展之中,最终究竟成什么样子,还不知道呢。以上论述,是我读Toward Precision Medicine的一点感想吧,欢迎大家批评指正,促进我的学习。

上个世纪末,老美主导了人类基因组计划,投了几十亿美元,成果由全人类共享。也许有人会说,老美傻啊。但事实上,今天的整个相关产业都被美国控制,其价值远不止几十亿美元。希望在精准医疗上面,国家、社会、业界能有足够的重视,更多的参与进来。