Mathematics

iterative mean, std (standard deviation)

DS-Lee 2020. 9. 10. 17:57

Source url : https://math.stackexchange.com/questions/102978/incremental-computation-of-standard-deviation

screen-captured from the source webpage

Example

# samples
samples = [np.random.normal(0, 1) for i in range(100)]

# param
max_idx = 500

# initialzed vars
mu = 0.0
var = 0.0
idx = 1

# run
for s in samples:
    var = (idx - 2)/(idx - 1 + 1e-6) * var + (1/idx)*(s - mu)**2
    mu = 1/idx * (s + (idx-1)*mu)
    idx += 1

    if idx == max_idx:
        idx = max_idx

    print("{:0.1f}, {:0.1f}".format(mu, var))

output: