Advertisement
Guest User

Untitled

a guest
Jan 24th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4.  
  5. def first_est(data):
  6. sum = 0
  7. for x in data:
  8. sum += x
  9. sum = sum / len(data)
  10. sum = sum * 2
  11. return sum - 1
  12.  
  13. def second_est(data):
  14. n = len(data)
  15. max = np.amax(data)
  16. max = max * (n + 1)
  17. max = max / n
  18. return max - 1
  19.  
  20. def generate_first_est(m, n):
  21. d = []
  22. for x in range(0, n):
  23. d.append(abs(m - first_est(np.random.randint(m, size=n))))
  24. return d
  25.  
  26. def generate_second_est(m, n):
  27. d = []
  28. for x in range(0, n):
  29. d.append(abs(m - second_est(np.random.randint(m, size=n))))
  30. return d
  31.  
  32. smeans = []
  33. for k in range(0, 500):
  34. smeans.append(np.mean(generate_second_est(1000, k)))
  35.  
  36. plt.plot(smeans, linewidth=2)
  37. plt.show()
  38.  
  39. fv = np.var(generate_first_est(1000, 500))
  40. sv = np.var(generate_second_est(1000, 500))
  41. print("first_est var:", fv, "<> second_est var:", sv)
  42. # first_est var: 213.124099298 <> second_est var: 3.87214624282
  43. # So, the second estimator is more effective (because has much lower variance).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement