其他
有过数据处理经验的你们,一定是吃过缺失值的苦头,比如相关性分析,PCA分析,Mfuzz分析,甚至绘制热图啥的,一个缺失值都让你的分析全面崩盘!如果你的表达矩阵里面的基因数量超级过,部分基因缺失问题可以把整个基因都删除,但是如果基因缺失比例很大,这个时候强行删除就会带来偏差啦!
完全随机缺失(MCAR,Missing Completely At Random),指的是数据的缺失不依赖于自身或者其他变量,完全是随机的。 随机缺失(MAR,Missing At Random),指的是数据的缺失不是完全随机的,该类数据的缺失依赖于其他观测变量。 非随机缺失(MNAR,Missing Not At Random),指的是数据的缺失依赖于观测变量自身。
最常用的是用impute包的imput.knn函数
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
默认的k = 10, 选择K个邻居的值平均或者加权后填充 默认的rowmax = 0.5, 就是说该行的缺失值比例超过50%就使用平均值而不是K个邻居 默认的colmax = 0.8,意思是该列缺失值超过80%就报错