【发布时间】:2012-10-31 15:20:01
【问题描述】:
我想将我相对较大的 R 数据集中所有取值高于 95 和低于第 5 个百分位的值分别替换为这些百分位值。我的目标是避免简单地从数据中完全裁剪这些异常值。
任何建议都将不胜感激,我在其他任何地方都找不到有关如何执行此操作的任何信息。
【问题讨论】:
-
除了回答这个问题需要更多详细信息之外,您确定要这样做吗?一个相对较大的数据集,比如 100 个数字,如果没有异常值,则在第 5 个百分位以下有 5 个值,在第 95 个百分位以上有 5 个值。
-
在采取这些措施时要格外小心,因为您正在彻底改变数据集的统计数据。这是否有效取决于您试图从数据中获得什么,以及数据的分布(例如正态分布)。
-
@RobS 小心使用
=作为赋值运算符。<-可以复合,但=不能 -
我几乎总是使用
=,而且我很少遇到麻烦。只有在像system.time(bla <- spam())这样的电话中,<-是强制性的。 -
Bobbo,缺少的细节包括模型是什么以及如何定义百分位数;您是否想要从数据中得出的经验截止值或从模型中得出的截止值以及该模型是什么;特别是您希望如何替换数据点...使用模型参数替换为随机值?...其他形式的插补?回到终点?此外,您所做的事情本身并不能测试稳健性。这将需要添加其他内容。
标签: r dataset outliers quantile