[Python]大樂透統計學--平均數、變異數
本篇文章以大樂透號碼說明統計學的平均數、變異數、標準差,以實例說明樣本變異數為什麼是除以n-1。(Python程式碼不懂也沒關係,看執行結果就可以)
準備工作:上網收集或爬網得到108年大樂透號碼,存成Lotto_108.csv,內容如下:
108000001,18,23,24,25,39,42,48 ....... 108000110,09,18,31,45,48,49,22 |
第1個欄位是期別,第2個~第7個欄位是依大小順序排序的6個獎號,第8個欄位是特別號。
平均數、變異數、標準差的公式如下:
一、計算母體平均數、變異數:
將1,2,3,.......,49個號碼當作母體,母體數為49,N=49;將每次開獎的6個號碼(不含特別號)當為樣本,n=6。
用Python來運算,設定母體,並計算母體中位數、平均數、變異數、標準差:
import numpy as np #設定母體 |
執行結果如下:
母體: [ 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]
母體中位數: 25.0
母體平均數: 25.0
母體變異數: 200.0
母體標準差: 14.142135623730951
|
二、計算樣本平均數、變異數:
讀取中獎號(樣本)
lotto_data108=np.loadtxt("Lotto_108.csv",dtype=np.int,delimiter=',') #刪除 特別號 print (lotto_data108) |
執行結果,得到108年各期號碼:
[[18 23 24 25 39 42] [ 6 7 8 20 47 48] [ 4 19 21 28 39 43] [13 20 22 31 34 42] ...... [ 9 18 31 45 48 49] [17 18 25 32 43 45] [10 14 26 38 39 47]] |
計算每期的中位數、平均數、變異數、標準差,樣本變異數先使用除以n計算,後續再與除以n-1比較。
#計算每期獎號的中位數、平均數、變異數、標準差,變異數除以n計算 i=0 print('每期獎號中位數:',sample_median) |
每期的中位數、平均數、變異數、標準差計算結果:
每期獎號中位數: [24.5 14. 24.5 26.5 34. 20. 36.5 14.5 27. .... 27. 13. 22.5 18.5 28.5 29. 25. 38. 28.5 32. ] 每期獎號平均數: [28.5 22.67 25.67 27. 30.17 22.17 30.5 17.83 .... 27.5 20.17 24. 22.83 27. 29.17 27.5 33.33 30. 29. ] 每期獎號變異數: [ 77.58 329.89 169.89 93.33 118.14 273.14 227.92 .... 222.14 65.67 269.14 204.33 158.81 94.58 238.22 122.67 183.33] 每期獎號標準差: [ 8.81 18.16 13.03 9.66 10.87 16.53 15.1 13.21 .... 11.03 14.9 8.1 16.41 14.29 12.6 9.73 15.43 11.08 13.54] |
計算每期的中位數、平均數、變異數、標準差之平均(樣本變異數使用除以n計算):
print ('每期中位數之平均:',np.mean(sample_median)) print ('每期平均數之平均:',np.mean(sample_mean)) print ('每期變異數之平均:',np.mean(sample_var)) print ('每期標準差之平均:',np.mean(sample_std)) |
每期的中位數、平均數、變異數、標準差之平均執行結果:(樣本變異數使用除以n計算)
每期中位數之平均: 25.544642857142858
每期平均數之平均: 25.403273809523814
每期變異數之平均: 173.66443452380955
每期標準差之平均: 12.89643727107358
|
計算每期樣本的中位數、平均數、變異數、標準差(樣本變異數使用除以n-1計算,自由度減1)。
#計算每期的中位數、平均數、變異數、標準差,變異數除以n-1計算 print ('樣本中位數之平均:',np.mean(sample_median)) |
#ddof:Delta Degrees of Freedom,the divisor used in the calculation is (N- ddof). By default ddof is zero.
每期樣本的中位數、平均數、變異數、標準差之平均執行結果(樣本變異數使用除以n-1計算):
樣本中位數之平均: 25.544642857142858
樣本平均數之平均: 25.403273809523814
樣本期變異數之平均: 208.39732142857142
樣本標準差之平均: 14.12733920963473
|
母體平均數是25;樣本平均數是25.4。
母體變異數是200,第1次除以n計算樣本變異數約為174;第2次除以n-1得約為208,樣本變異數稱為母體變異數不偏估計值(unbiased estimate),所以樣本變異數應接近母體變異數,比較2種計算方式,明顯看出除以n-1者較接近,所以樣本變異數公式才會修正為除以n-1者,此公式可從自由度或期望值等證明,但我認為實際算最能實證。較直接的想法是樣本抽到極值的機率小,例如樣本抽到1,2或48,49等變異數值較大的機率相對小,所以使用原來樣本變異數除以n的算法結果會比母體變異數小,算法必須調整,而數學家找出修正為除以n-1是較佳的公式,並最後以理論證明。
希望您對樣本變異數除以n-1不要再感到疑惑,實算是如此算法較接近母體變異數。