#1. 检查是否有缺失值
which(is.na(mRNA),arr.ind = T)
#2. 计算行均值并填充
#该数据中探针(基因)为行(名),样本为列(名),(数据框内容为表达量数据值型数据数据)格式可见文章最后
row_mean <- apply(mRNA,1,mean,na.rm =T) #1是行,2是列,若用其他方法修改mean即可
mRNA$MEAN <- row_mean
ncol = 样本数
for (i in 1:nrow(mRNA)) {
mRNA[i,is.na(mRNA[i,])] <- mRNA[i,ncol]
}
缺失值被认为是预测建模的首要障碍,尽管一些机器学习算法声称能够从根本上解决这个问题,但是谁又能知道究竟在“黑盒子”里能解决得多好。
缺失值填补方法的选择,在很大程度上影响了模型的预测能力。一般处理方法是直接删除相关行,但这样并不好,因为会造成信息丢失。
Hmice是一个多用途的软件包,可用于数据分析、高级图形、缺失值处理、高级表格制作、模型拟合和诊断(线性回归、 Logit模型和cox回归)等。 该软件包包含的功能范围广泛,它提供了两个强大的函数,用于处理缺失值。分别为 impute ()和 aregImpute ()。
impute()函数使用用户定义的统计方法(中间值,最大值,平均值等)来估算缺失值。 默认是使用中位数。另一方面,aregImpute()允许使用加性回归、自举和预测平均匹配进行填补(additive regression, bootstrapping, and predictive mean matching)。
bootstrapping对替代原始数据的样本拟合了一个柔性可加模型(非参数回归方法) ,并利用非缺失值(自变量)对缺失值(因变量)进行了预测。然后,使用预测均值匹配(缺省值)来估算缺失值。
使用平均值填充:
使用随机值填充:
同样,还可以使用min,max,median来估算缺失值。
aregImpute ()自动识别变量类型并相应地处理它们:
输出显示预测缺失值的 R 2 值, 数值越高,预测的数值越好。还可以使用以下命令查看估算值:
画个好看一点的图:
估算缺失值:
pmm:预测均值匹配(PMM)-用于数值变量
logreg: (Logit模型)-二元变量
polyreg(Bayesian polytomous regression):因子变量(>=2个水平)
polr:Proportional odds model(ordered, >= 2 levels)
查看估算的缺失值
由于生成有5个输入数据集,您可以使用 complete ()函数选择任何数据集:
还可以使用5个数据集构建模型,最后将结果合并:
对比一下:
使用生成的6个数据集合并后的回归系数与原始数据的回归系数还是非常接近的。