數學之美_正態分布(Python代碼)


1  在概率統計中,我們針對某個事件當中各個樣本發生的概率的頻率進行統計,用一個函數的形式寫出的這個概率的頻率函數就叫做分布函數。

2  分布函數顧名思義,就是某個連續事件發生頻率的匯總表示。再直白一點兒來說,就是一堆事情我們把他們堆砌起來只管的去觀察他們的組合特點就叫分布。

3  這種組合特點有很多種,我們很多時候用圖像的形式表示出來,而且針對不同組合的這種圖像出現了二項分布、伯努利分布、正態分布等等分布,其實就是把近似於某種組合特點的圖像的差別進行分別研究他們的性質等。這里用到的是近似,因為根據iid(獨立同分布)的這種性質,任何圖形不可能百分比跟我們所觀察的這種分布一樣,但是隨着樣本的不斷增加,觀察的這種組合會越來越近似的趨於某一種分布圖像。

4  在分布中,我們在很多軟件中我們會看到這種圖像

其中一根一根的紫色柱子就叫概率頻率,其實求分布就是在求概率頻率,什么叫做概率頻率呢?比如一個樣本有1000個數值,如果這個樣本中存在各種重復(或者不重復都一樣)把他們在這1000個數值中出現的次數進行記錄,然后把這些次數按照數值的大小進行正負和大小排列起來就是形成了某種圖像,然后我們把每種圖像的每一個最高點進行連線,就是叫密度曲線。其實這個很好理解。

5  我們對於不同的分布,都會對應一個這種分布的標准形式,然后這個標准形式會對應一個分布函數。其實從上面我們就知道,這個分布函數就是求概率頻率的值。給函數一個值,返回給你一個概率值,然后把這些值按照大小,出現次數堆砌起來就是這個分布圖像。

6  最常見的就是如上圖,曲線跟一個佛堂里面的鈡的外形很像,這個就叫做正太的分布,也叫正太分布,英文叫Normal Distribution。如果都是一一對應,左右對稱的樣子,那么它就叫做標准正太分布。(但是在處理實際問題的時候很少會遇到標准的正太分布,實際圖像近似於這種分布,而且如果是正太的這種分布,隨着你樣本的不斷增加,會無限趨近於標准正太分布,這也叫所謂漸進無偏性。)。這里的正太分布還有一個名字叫做“高斯分布”Guass Distribution,都是一會兒事兒。我們發現高斯大神在數學領域那個地方隨時能見到他的身影。要不說是數學王子呢。

7  廢話少說,對應每種分布我們先把他的分布函數寫出了:

  這個函數我們看到可以寫做兩種形式我們知道方差開方等於標注差,這就不用多說了。

  另外,我們另方差為方差為1,均值為0,這個公式變形為如下形式:

  這個玩意兒就叫做標准正太分布,也就是上面那個圖像的樣子。但是平時的分布如果不太標准的話,就用上面兩個式子。

8  我們用python來寫一下這個代碼:

 1 Sample = []
 2 i = 0
 3 with open("Raw.txt", "r", encoding="utf-8") as f:
 4     TS = f.readlines()
 5     while i < len(TS):
 6         Sample.append(int(TS[i]))
 7         i += 1
 8 i = 0
 9 
10 NorN = int(input("輸入1位求非標准正太分布,輸入0位求標准正太分布"))
11 import numpy as np
12 # 求非標准的正太分布
13 if NorN == 1:
14 # step 1    求樣本的均值
15     i = 0
16     avg = 0
17     while i < len(Sample):
18         avg = avg + Sample[i]
19         i += 1
20     avg = avg / len(Sample)
21 # step 2    求樣本的方差
22     sigma2 = np.var(Sample, 0)
23 # step 3    求密度函數
24     Func = []
25     i = 0
26     for i in Sample:
27         Func.append(round((np.exp(-0.5 * ((i - avg) / sigma2)) / (np.sqrt(2*np.pi*sigma2))), 4))
28     print(Func)
29 
30 if NorN == 0:
31 # step 1    求樣本的均值
32     avg = int(input("請輸入均值,標准為0"))
33 # step 2    求樣本的方差
34     sigma2 = int(input("請輸入方差,標准為1"))
35 # step 3    求密度函數
36     Func = []
37     i = 0
38     for i in Sample:
39         Func.append(round((np.exp(-0.5 * ((i - avg) / sigma2)) / (np.sqrt(2 * np.pi * sigma2))), 4))
40     print(Func)
41 
42 
43 # 輸入結果:
44 # 輸入1位求非標准正太分布,輸入0位求標准正太分布1
45 # [0.1173, 0.128, 0.1226, 0.1593, 0.0943, 0.0864, 0.0943, 0.1173, 0.1173, 0.1338, 0.0902, 0.1226, 0.1173, 0.0985, 0.1397, 
46 # 0.1123, 0.1338, 0.1173, 0.1173, 0.1338, 0.1075, 0.1075, 0.128, 0.1226, 0.1123, 0.1173, 0.0943, 0.1226, 0.128, 0.1029, 0.128, 
47 # 0.1338, 0.128, 0.1075, 0.1338, 0.1173, 0.1816, 0.1123, 0.1397, 0.1173, 0.1029, 0.1397, 0.1075, 0.1226, 0.1593, 0.0985, 0.1525, 
48 # 0.1075, 0.1226, 0.1664, 0.1525, 0.0864, 0.1029, 0.1173, 0.1029, 0.1075, 0.1173, 0.1173, 0.1173, 0.128, 0.1123, 0.1123, 0.1029, 
49 # 0.128, 0.1397, 0.1029, 0.128, 0.1123, 0.1173, 0.1397, 0.1338, 0.1029, 0.1123, 0.1593, 0.1123, 0.1029, 0.0943, 0.1123, 0.1173, 
50 # 0.1029, 0.1338, 0.128, 0.1226, 0.1173, 0.1338, 0.0985, 0.128, 0.1397, 0.1075, 0.1397, 0.1075, 0.1123, 0.1397, 0.1123, 0.1123, 
51 # 0.1123, 0.1029, 0.1029, 0.1226, 0.1173, 0.1029, 0.128, 0.1173, 0.1173, 0.1075, 0.0943, 0.1397, 0.0864, 0.1226, 0.1226, 0.1525, 
52 # 0.1397, 0.1226, 0.1075, 0.0943, 0.0792, 0.1338, 0.146, 0.1173]
53 
54 # 輸入結果:
55 # [0.3989, 1.0844, 0.6577, 13.2112, 0.0327, 0.012, 0.0327, 0.3989, 0.3989, 1.7879, 0.0199, 0.6577, 0.3989, 0.054, 2.9478, 0.242, 
56 # 1.7879, 0.3989, 0.3989, 1.7879, 0.1468, 0.1468, 1.0844, 0.6577, 0.242, 0.3989, 0.0327, 0.6577, 1.0844, 0.089, 1.0844, 1.7879, 
57 # 1.0844, 0.1468, 1.7879, 0.3989, 59.2083, 0.242, 2.9478, 0.3989, 0.089, 2.9478, 0.1468, 0.6577, 13.2112, 0.054, 8.013, 0.1468, 
58 # 0.6577, 21.7815, 8.013, 0.012, 0.089, 0.3989, 0.089, 0.1468, 0.3989, 0.3989, 0.3989, 1.0844, 0.242, 0.242, 0.089, 1.0844, 2.9478, 
59 # 0.089, 1.0844, 0.242, 0.3989, 2.9478, 1.7879, 0.089, 0.242, 13.2112, 0.242, 0.089, 0.0327, 0.242, 0.3989, 0.089, 1.7879, 1.0844, 
60 # 0.6577, 0.3989, 1.7879, 0.054, 1.0844, 2.9478, 0.1468, 2.9478, 0.1468, 0.242, 2.9478, 0.242, 0.242, 0.242, 0.089, 0.089, 0.6577, 
61 # 0.3989, 0.089, 1.0844, 0.3989, 0.3989, 0.1468, 0.0327, 2.9478, 0.012, 0.6577, 0.6577, 8.013, 2.9478, 0.6577, 0.1468, 0.0327, 0.0044, 
62 # 1.7879, 4.8601, 0.3989]

 9  我們少說了一點兒就是直方圖和正態分布圖。

  (1)  直方圖表現的是頻數、正態分布圖表現的是頻率。

  (2)  μ(均值)的大小是影響正太曲線的左移和右移的關系;sigma2(方差)的大小是影響正太曲線的胖瘦。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM