首页 > 解决方案 > R中的NearZeroVar是什么?

问题描述

我有相当大的数据集,我想在其中排除方差相当低的列,这就是我想使用短语 NearZeroVar 的原因。但是,我在理解 freqCut 和 uniqueCut 的作用以及它们如何相互影响方面确实有些困难。我已经阅读了 R 中的解释,但这并没有真正帮助我。如果有人能给我解释一下,我将非常感激!

标签: rstatisticsr-caretvariance

解决方案


我假设您正在谈论 中存在的函数mixOmics,它指的是caret包中的类似函数。

该函数背后的想法是识别大多数不变的(具有“接近零方差”)的预测变量(在矩阵的列中),例如几乎完全具有值 0 并且只有一小部分非零值;这些作为预测指标将是无趣的。

他们的无趣预测器示例是 1000 个值,其中 999 个是 0,1 个是 1。为了定义您所说的“接近零方差”,作者使用了两个过滤器:

1) 最常见值(在本例中为 0)与第二个最常见值 (1) 的频率之比 ( freqRatio)

2) 唯一数据点占数据点总数的百分比 ( percentUnique)

上例中,频率比为 999,唯一值百分比为 0.0001,均满足函数中使用的默认值。

您可以想象具有很少离散值的数据,例如 500 个 0 和 500 个 1。您可能希望将其保留为信息丰富的预测器,并且percentUnique会非常低(将满足此过滤器标准),但是freqRatio太低而无法标记该预测器。在频谱的另一端,您可能有 500 个 0 和 500 个不同的非零值,它们可能具有有用的预测属性,它们的特征是高freqRatio,但高percentUnique(也没有标记)。

这两个参数允许您在绘制您认为仍可用作预测器的线时具有一定的灵活性。

根据您的数据,您还可以使用matrixStats::colVars(或matrixStats::rowVars,取决于您的数据结构)来获取各个预测变量的方差分布,然后基于此定义一个截止值。当您绘制方差的密度分布时,您可能会看到一个很好的分界点,例如在双峰分布中,或者只是选择一个您想要用作分界点的方差百分位数。


推荐阅读