生信分析中3种缺失值情况需要区别对待

有过数据处理经验的你们,一定是吃过缺失值的苦头,比如相关性分析,PCA分析,Mfuzz分析,甚至绘制热图啥的,一个缺失值都让你的分析全面崩盘!如果你的表达矩阵里面的基因数量超级过,部分基因缺失问题可以把整个基因都删除,但是如果基因缺失比例很大,这个时候强行删除就会带来偏差啦!

首先需要去上游(数据如何产生的)弄清楚缺失值的来源,然后要理解不同形式的缺失值,如下:

完全随机缺失(MCAR,Missing Completely At Random),指的是数据的缺失不依赖于自身或者其他变量,完全是随机的。

随机缺失(MAR,Missing At Random),指的是数据的缺失不是完全随机的,该类数据的缺失依赖于其他观测变量。

非随机缺失(MNAR,Missing Not At Random),指的是数据的缺失依赖于观测变量自身。

值得注意的是也有人认为MCAR和MAR二者没啥区别,或者认为MCAR是MAR的一个特例(doi:10.1186/1471-2105-13-S16-S5)。 然后给你一个思考题,你觉得单细胞转录组数据里面的drop-out现象属于上面的哪一种?

最常用的是用impute包的imput.knn函数

比如甲基化数据分析教程,是就使用了它:

require(GEOquery)

require(Biobase)

library("impute")

# 就走下面的fread流程,读取data.txt这个甲基化信号值矩阵

a=fread("data.txt",data.table=F)

a[1:4,1:4]

rownames(a)=a[,1]

a=a[,-1]

beta=as.matrix(a)

beta=impute.knn(beta)

# impute.knn(data ,k = 10, rowmax = 0.5, colmax = 0.8, maxp = 1500, rng.seed=362436069)

betaData=beta$data

betaData=betaData+0.00001

a=betaData

这个impute包的imput.knn函数有3个参数需要理解一下:

默认的k = 10, 选择K个邻居的值平均或者加权后填充

默认的rowmax = 0.5, 就是说该行的缺失值比例超过50%就使用平均值而不是K个邻居

默认的colmax = 0.8,意思是该列缺失值超过80%就报错

所以对我们的表达矩阵来说,一定要是列是样本,行是基因哦!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。