我正在审查和试验异常值标记策略,并不断遇到 Rousseeuw 和 Croux 在 中值绝对偏差的替代方案中对 Sn 和 Qn 的引用。
http://web.ipac.caltech.edu/staff/fmasci/home/astro_refs/BetterThanMAD.pdf
它们听起来相当出色,并且似乎广泛应用于跨学科的学术和应用统计中。我查了一下 Google Scholar,那篇论文被引用了 2,100 多次。
该技术的吸引人的特点是它不会受到不对称分布的严重影响。大多数时候,这就是我们所拥有的。有时非常极端。
这当然可以在 R 中使用,但我不是统计人员,我们没有服务器端访问 R(或 Python)的权限,并且希望直接在 Postgres 中进行一些搜索。我无法在任何 SQL 习惯用法中找到任何内容,并且希望一些统计爱好者可以掌握一些 Postgres 代码。
现在我知道为什么人们在 R 中做这类工作了:因为 R 非常适合这类工作。如果将来有人遇到这种情况,就去使用 R。它是一个紧凑、易于使用、简单的工具-使用出色的 IDE 学习语言。
如果您有一个可以安装 PL/R 的 Postgres 服务器,那就更好了。 PL/R 被编写为使用
DBI
和 RPostgreSQL
R 包与 Postgres 连接。这意味着,您应该能够在 RStudio 中开发代码,然后添加所需的包装位,使其在 Postgres 服务器内的 PL/R 中运行。
对于离群值,到目前为止,我对
univOutl
(单变量离群值)很满意,它提供了 10 种常见和不太常见的方法,包括 Rousseeuw 和 Croux 技术。
Qn 稳健的规模估计器在 statsmodels.robust.scale 中实现。