来自NMF
package
的函数extractFeatures只有在保留以下两个条件的特征时才能使用以下方法选择特征:
得分大于\hat{\mu} + 3 \hat{\sigma}
,其中\hat{\mu}
和\hat{\sigma}
分别是得分的中位数和中位数绝对偏差(MAD);
对基准成分的最大贡献大于所有贡献的中位数(即W的所有要素)。
如何在R中编写此函数,仅将第一个条件应用于数据矩阵?
Kim H和Park H(2007)。 “通过交替的非负性约束最小二乘法进行微阵列数据分析的稀疏非负矩阵因子分解。” Bioinformatics(Oxford,England),23(12),pp.1495-502。 ISSN 1460-2059 ,,。
给定矢量scores
,可以按如下方式检查每个分数的条件:
scores <- rnorm(5)
scores > (median(scores) + 3 * mad(scores))
# [1] FALSE FALSE FALSE FALSE FALSE
我们不需要为MAD寻找函数,因为mad
包中的stats
正是如此。现在,如果你想从一些矩阵M
中选择相应的列,你可以简单地写一下
M[, scores > (median(scores) + 3 * mad(scores))]
如果您更喜欢这个功能,那么您可以使用
featureCriterion <- function(M, scores)
M[, scores > (median(scores) + 3 * mad(scores))]