删除r中的异常值

时间:2012-08-03 19:53:11

标签: r outliers

我有一大堆来自excel文件(保存为csv)的数据,其中包含试验(X)和时间(Y)。我知道有一个代码可以通过使用卡方检验代码在试验中取出单个异常值。但是,我希望能够取出数据集中具有异常值的整个列,同时保持文件中的其他数据不变。我很难找到/想出一个允许这样做的代码。有什么建议吗?!

1 个答案:

答案 0 :(得分:11)

鉴于您对@ user603的回复,我收集您希望从数据集中删除整个 X变量,即使只有一个观察点对该变量有异常值。这在R中是微不足道的。使用您的首选策略来识别异常值并将其分配给变量:

outs = c(...)
data = data[,-outs]

或者,您可以不在模型公式中包含这些变量,并保持data.frame不变。


另一方面,我认为这是一个非常糟糕的主意,我怀疑必须有一些混乱,促使你相信这是你应该做的事情。让我列出几件事:

  1. 将协变量视为具有异常值通常没有意义。我们通常认为异常值位于响应变量中。在这种情况下,一种可能性是删除(即data = data[-outs,])。
  2. 如果确实有异常值,删除观察结果通常是最糟糕的选择。使用robust loss function会更好,例如Tukey的bisquare。