You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Rosner检验识别分布底部异常值?无opposite参数的处理

用Rosner检验识别分布底部异常值的方法

EnvStats包的rosnerTest函数本身没有类似Grubbs检验(outliers::grubbs.test)里的opposite = TRUE参数来直接指定检测分布底部的异常值,但可以通过数据取反的方式实现相同效果,具体步骤如下:

  • 对原始数据取反:把原始数据中的每个值乘以-1,这样原本分布底部的最小值会变成取反后数据的最大值,符合rosnerTest默认检测最大异常值的逻辑。
  • 对取反后的数据运行Rosner检验。
  • 将检验结果中的异常值位置对应回原始数据,得到分布底部的异常值。

代码示例

# 1. 对原始体重数据取反
neg_wtval <- -df_females$wtval

# 2. 对取反后的数据执行Rosner检验,指定要检测的异常值数量k=15
test <- EnvStats::rosnerTest(neg_wtval, k = 15)

# 3. 提取原始数据中分布底部的异常值
bottom_outliers <- df_females$wtval[test$all.stats$Obs.Num]

原理说明

Rosner检验的核心是检测偏离样本均值最远的观测值,默认优先找最大的那个。通过取反数据,原始数据里最小的观测值会变成取反后数据里最大的观测值,此时rosnerTest检测出的异常值,对应回原始数据就是分布底部的异常值,和Grubbs检验设置opposite = TRUE的效果一致。

内容的提问来源于stack exchange,提问作者Mirko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:30:53