algorithm - 使用 Welford 方法计算单程方差时删除先验样本

标签 algorithm math statistics variance standard-deviation

我已成功使用 Welford 方法计算运行方差和标准差,如 Stack Overflow 和 John D Cook's excellent blog post 中多次描述的那样.

但是在样本流中,有时我会遇到“回滚”或“删除样本”命令,这意味着之前的样本不再有效,应该从计算中删除。我知道要移除的样本的值(value)以及处理时间。但我正在使用 Welford,因为我无法返回再次传递所有数据。

是否有一种算法可以成功地调整我的运行方差以删除或否定之前处理过的特定样本?

最佳答案

给定正向公式

Mk = Mk-1 + (xk – Mk-1) / k
Sk = Sk-1 + (xk – Mk-1) * (xk – Mk),

可以将 Mk-1 求解为 Mkxkk 的函数:

Mk-1 = Mk - (xk - Mk) / (k - 1).

然后我们可以从 Sk 和其余部分直接导出 Sk-1:

Sk-1 = Sk - (xk – Mk-1) * (xk – Mk).

xk 不一定是这里的最后一个样本;由于 MkSk 理论上不依赖于输入的顺序,我们可以假设要删除的样本是最后添加的样本。

我不知道这是否稳定。

关于algorithm - 使用 Welford 方法计算单程方差时删除先验样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30876298/

相关文章:

c# - 获取数字的因子

statistics - 如何在 Pentaho Schema Workbench 中定义标准差函数

algorithm - 2048 中最大的瓷砖,3 组变体? [移至 SE.Math]

string - KMP前缀表

algorithm - Voronoi 图,线交叉

math - 二次探测 : (f(k) + a*j + b*j^2) % M, 如何选择a和b?

php - 如何在 PHP 中生成累积正态分布

根据 Eratosthenes 筛法的 Java Prime 计算器

function - 从高维函数采样

language-agnostic - 有关于常见错误输入键的统计数据吗?