删除值后重新计算总体方差的公式

Formula to recalculate population variance after removing a value

提问人:Asher Ross 提问时间:1/13/2022 最后编辑:Dmitry BychenkoAsher Ross 更新时间:1/13/2022 访问量:431

问:

假设我有一个数据集 .我在这里的均值和方差是 和 .如果我要从数据集中删除,是否有公式可以让我计算新的方差值,将其转换为?{10, 20, 30}mean = 20variance = 66.66710{20, 30}

这与 https://math.stackexchange.com/questions/3112650/formula-to-recalculate-variance-after-removing-a-value-and-adding-another-one-gi 处理更换情况的问题类似。https://math.stackexchange.com/questions/775391/can-i-calculate-the-new-standard-deviation-when-adding-a-value-without-knowing-t 也是一个类似的问题,只不过它涉及添加、添加一个值而不是删除一个值。在使用 Welford 计算单次方差的方法时删除先前的样本涉及删除样本,但我无法弄清楚如何修改它以处理总体。

算法 数学 统计 与语言无关 方差

评论


答:

4赞 Dmitry Bychenko 1/13/2022 #1

为了计算,我们需要 3 个参数:MeanVariance

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  

如果要删除 ,只需更新值并计算新的方差:itemN, 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