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

如何统计数值向量中超出均值3倍标准差的异常值数量

R语言统计数值向量中3σ准则异常值数量

按照你给出的异常值定义(与均值距离超过3个标准差的点),直接通过逻辑判断求和就能得到结果,不需要额外安装第三方包。

核心实现逻辑

对向量里的每个值做判定:满足abs(当前值 - 向量均值) > 3 * 向量标准差即为异常值,逻辑值TRUE在数值计算中等价于1、FALSE等价于0,直接对判定结果求和就是异常值总数量。

代码示例

# 构造测试向量:100个服从N(10,2)的常规值,加3个手动设置的极端值
set.seed(123)
test_vec <- c(rnorm(100, 10, 2), 25, 1, 16)

# 统计异常值数量
outlier_num <- sum(abs(test_vec - mean(test_vec)) > 3 * sd(test_vec))
print(outlier_num)

上述示例运行后返回结果为2,对应手动添加的25、1两个离群点,16距离均值的偏差未超过3倍标准差,不会被判定为异常值。

特殊场景处理

  • 如果向量中存在缺失值NA,需要在计算均值、标准差时加上na.rm = TRUE参数跳过缺失值,否则最终结果会返回NA,写法如下:
# 含缺失值的统计写法
outlier_num <- sum(
  abs(test_vec - mean(test_vec, na.rm = TRUE)) > 3 * sd(test_vec, na.rm = TRUE),
  na.rm = TRUE
)
  • 注意均值和标准差本身容易受极端值影响,如果你的数据中异常值占比较高,计算出的均值、标准差会被异常值拉偏,可能导致漏判,但如果严格遵循你给定的3倍标准差规则,直接用上述代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:57:25