Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class summ:
- def __init__(self):
- self.t = float(0)
- self.c = float(0)
- def push(self, x):
- y = x - self.c
- s = (self.t + y)
- self.c = (s - self.t) - y
- self.t = s
- def __float__(self):
- return self.t + self.c
- def disp2(seq):
- sumx = summ()
- res = summ()
- n = 0
- #formula for dispersion when average is changing by delta:
- #sum(x[i]^2) - 2*sum(x[i])*aver - 2*sum(x[i])*delta +
- #2*aver*delta * (N - 1) + aver^2 * (N - 1) + delta^2 * (N - 1)
- for x in seq:
- n += 1
- old_sum = float(sumx)
- old_aver = old_sum
- if (n > 1): old_aver /= (n - 1)
- sumx.push(x)
- cur_aver = float(sumx) / n
- delta = cur_aver - old_aver
- res.push(-2 * old_sum * delta)
- res.push(2 * old_aver * delta * (n - 1))
- res.push(delta ** 2 * (n - 1))
- #changed old sums
- res.push((cur_aver - x) ** 2)
- #added current
- return float(res) / n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement