-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrunningStatistics.py
More file actions
53 lines (44 loc) · 1.24 KB
/
runningStatistics.py
File metadata and controls
53 lines (44 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import math
def running_mean(x, i, mean, delta):
delta = x - mean
mean = mean + delta / i
return mean, delta
def running_variance(x, i, mean, msq):
delta = x - mean
mean = mean + delta / i
msq = msq + delta * ( x - mean )
return msq, mean, delta
def calcAverage(s):
sum = 0
for i in range( len(s) ):
sum = sum + s[i]
return sum/len(s)
def calcVariance(s):
sum = 0
sumsqrd = 0
for i in range( len(s) ):
sum = sum + s[i]
sumsqrd = sumsqrd + s[i] ** 2
return (sumsqrd + n * (calcAverage(s)) ** 2 - 2 * (calcAverage(s)) * sum )/len(s)
if __name__ == "__main__":
samples = [1640, 1640.5, 1640.3, 1641, 1640.7, 1640.5, 1640.7, 1640.9, 1640, 1641]
n = len( samples )
print("num samples: ", n)
print("Average: ", calcAverage(samples))
print("Variance: ", calcVariance(samples))
# Running algorithms
i = 0
mean = 0
delta = 0
for x in samples:
i = i + 1
mean, delta = running_mean(x, i, mean, delta)
print("Running Average: ", mean)
i = 0
mean = 0
delta = 0
msq = 0
for x in samples:
i = i + 1
msq, mean, delta = running_variance(x, i, mean, msq)
print("Running Variance: ", msq / n)