前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用R的sweep函数对表达矩阵进行标准化

如何使用R的sweep函数对表达矩阵进行标准化

作者头像
生信交流平台
发布2022-09-21 16:17:02
1.2K0
发布2022-09-21 16:17:02
举报

我们知道一般做表达谱数据分析之前,第一步就是对我们的表达矩阵进行标准化(归一化),去除由于测序深度,或者荧光强度不均一等原因造成的表达差异。否则后续差异表达分析得到的差异基因,很可能并不是真正生物学意义上的差异,而是由于前面提到的这些原因造成的。

做归一化的方法也很多,有根据中位数进行归一化,即将每个样本中所有基因的表达值的中值转换到同一水平。如下图所示

除了中位数标准化之外,我们还可以使用z-score的方法来对表达谱数据进行标准化:

z-score=(表达量-均值)/标准差

那么下面小编就给大家演示一下如何使用前面讲到的☞R中的sweep函数,使用z-score的方法来对表达谱矩阵进行标准化

代码语言:javascript
复制
#为了保证随机数保持一致,这里设置一下种子序列
set.seed(123)
#随机生成100个数,构造一个10X10的矩阵
data=matrix(runif(100,1,10),nrow=10)
#设置行名是gene1到gene10
rownames(data)=paste0("gene",1:10)
#设置列明是sample1到sample10
colnames(data)=paste0("sample",1:10)

#计算每一行的均值
rowmean=apply(data,1,mean)
#计算每一行的标准差
rowsd=apply(data,1,sd)
#每一行基因表达值减去这一行的均值
data1=sweep(data,1,rowmean)
#每一行基因表达值除以这一行的标准差
data2=sweep(data1,1,rowsd,'/')
data2

得到的结果如下

如果对R里面scale这个函数比较熟悉的小伙伴,可能已经发现了,scale这个函数就能完成z-score的计算,我们来看看这个函数的说明

我们来看看scale这个函数的效果

代码语言:javascript
复制
#因为scale默认对列做操作,所以这里先用t对表达矩阵做一个转置
#计算完再用t转置回来
data3=t(scale(t(data)))
data3

得到的结果如下,有兴趣的小伙伴可以去对比一下跟使用sweep函数得到的结果。(应该是一样的!!!)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档