Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- def first_est(data):
- sum = 0
- for x in data:
- sum += x
- sum = sum / len(data)
- sum = sum * 2
- return sum - 1
- def second_est(data):
- n = len(data)
- max = np.amax(data)
- max = max * (n + 1)
- max = max / n
- return max - 1
- def generate_first_est(m, n):
- d = []
- for x in range(0, n):
- d.append(abs(m - first_est(np.random.randint(m, size=n))))
- return d
- def generate_second_est(m, n):
- d = []
- for x in range(0, n):
- d.append(abs(m - second_est(np.random.randint(m, size=n))))
- return d
- smeans = []
- for k in range(0, 500):
- smeans.append(np.mean(generate_second_est(1000, k)))
- plt.plot(smeans, linewidth=2)
- plt.show()
- fv = np.var(generate_first_est(1000, 500))
- sv = np.var(generate_second_est(1000, 500))
- print("first_est var:", fv, "<> second_est var:", sv)
- # first_est var: 213.124099298 <> second_est var: 3.87214624282
- # So, the second estimator is more effective (because has much lower variance).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement