实施 Sn 和 Qn(Rousseeuw 和 Croux)以在 Postgres 中进行异常值检测

Implementing Sn and Qn (Rousseeuw and Croux) for outlier detection in Postgres

我正在审查和试验异常值标记策略,并将 运行 保留为对 SnQn 的引用Rousseeuw 和 Croux 在 中值绝对偏差的替代方案

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 被编写为使用 DBIRPostgreSQL R 包与 Postgres 连接。意思是,您应该能够在 RStudio 中开发您的代码,然后在您的 Postgres 服务器中的 PL/R 中添加使其 运行 所需的包装位。

对于异常值,到目前为止,我对 univOutl(单变量异常值)很满意,它提供了 10 种常见和不太常见的方法,包括 Rousseeuw 和 Croux 技术。