在移除一个数值后重新计算总体方差的公式

4
假设我有一个数据集 {10, 20, 30}。这个数据集的平均值和方差分别为 mean = 20variance = 66.667。如果我从数据集中移除 10,变成 {20, 30},是否有公式可以让我计算新的方差值?
这与此问题类似,该问题涉及替换的情况。这个问题也是类似的,但是它涉及添加值而不是删除值。使用Welford的单次遍历方差计算方法时删除先前样本则处理了删除样本的情况,但我无法确定如何修改以处理总体。
1个回答

4

为了计算 平均值方差,我们需要 3 个参数:

N   - number of items 
Sx  - sum of items
Sxx - sum of items squared

有了这些值,我们可以计算均值和方差:

Mean     = Sx / N
Variance = Sxx / N - Sx * Sx / N / N

根据您的情况

items    = {10, 20, 30}

N        = 3
Sx       = 60   = 10 + 20 + 30
Sxx      = 1400 = 100 + 400 + 900 = 10 * 10 + 20 * 20 + 30 * 30  

Mean     = 60 / 3 = 20
Variance = 1400 / 3 - 60 * 60 / 3 / 3 = 66.666667  

如果您想要删除一个 item,只需 更新 N、Sx、Sxx 的值并计算新的方差:
item      = 10

N'        = N - 1             = 3 - 1 = 2
Sx'       = Sx - item         = 60 - 10 = 50
Sxx'      = Sxx - item * item = 1400 - 10 * 10 = 1300

Mean'     = Sx' / N' = 50 / 2 = 25
Variance' = Sxx' / N' - Sx' * Sx' / N' / N' = 1300 / 2 - 50 * 50 / 2 / 2 = 25

因此,如果您删除 item = 10 ,新的均值和方差将为

Mean'     = 25
Variance' = 25

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接