Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. class summ:
  2.     def __init__(self):
  3.         self.t = float(0)
  4.         self.c = float(0)
  5.     def push(self, x):
  6.         y = x - self.c
  7.         s = (self.t + y)
  8.         self.c = (s - self.t) - y
  9.         self.t = s
  10.     def __float__(self):
  11.         return self.t + self.c
  12.  
  13. def disp2(seq):
  14.         sumx = summ()
  15.         res = summ()
  16.        
  17.         n = 0
  18.        
  19.         #formula for dispersion when average is changing by delta:
  20.         #sum(x[i]^2) - 2*sum(x[i])*aver - 2*sum(x[i])*delta +
  21.         #2*aver*delta * (N - 1) + aver^2 * (N - 1) + delta^2 * (N - 1)
  22.        
  23.         for x in seq:
  24.             n += 1
  25.             old_sum = float(sumx)
  26.             old_aver = old_sum
  27.             if (n > 1): old_aver /= (n - 1)
  28.            
  29.             sumx.push(x)
  30.            
  31.             cur_aver = float(sumx) / n
  32.            
  33.             delta = cur_aver - old_aver
  34.            
  35.             res.push(-2 * old_sum * delta)
  36.             res.push(2 * old_aver * delta * (n - 1))
  37.             res.push(delta ** 2 * (n - 1))
  38.             #changed old sums
  39.            
  40.             res.push((cur_aver - x) ** 2)
  41.             #added current
  42.            
  43.         return float(res) / n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement