Я пытаюсь понять, как комбинировать дисперсии партий наблюдений. Насколько я понимаю, вы можете просто суммировать их в соответствии с законом дисперсии сумм . Но мои эксперименты, похоже, отличаются от этой теоремы.
Вот код Python:
import numpy as np
x = np.random.rand(100000)
expected = np.var(x)
print("expected:", expected)
for n in [2,4,5,10,20,40,50,100,1000]:
s = np.split(x, n)
sigma_sq = [np.var(v) for v in s]
result = np.sum(sigma_sq)
print("result", n, ":", result, "(", np.abs(result - expected), ")")
напечатанный результат:
expected: 0.0832224743666757
result 2 : 0.16644455708841321 ( 0.08322208272173752 )
result 4 : 0.3328814911392468 ( 0.24965901677257113 )
result 5 : 0.4161068624507617 ( 0.33288438808408605 )
result 10 : 0.832183555011673 ( 0.7489610806449972 )
result 20 : 1.664227484757454 ( 1.5810050103907785 )
result 40 : 3.3278497945218355 ( 3.2446273201551596 )
result 50 : 4.159353197179163 ( 4.076130722812487 )
result 100 : 8.314084653397305 ( 8.23086217903063 )
result 1000 : 82.397691161862 ( 82.31446868749532 )
По мере увеличения количества разбиений разница между ожидаемым и результатом увеличивается.
Однако, если я разделю суммы на n
(т. Е. Усредним их), то ошибка допустима (порядка 1e-5
).
Должно быть, я неверно истолковываю закон дисперсии сумм, но я не уверен, где мое недоразумение.