-
統(tǒng)計學知識點
PMF 概率質量函數(shù) (Probability Mass Function): 是對離散隨機變量的定義.是離散隨機變量在各個特定取值的概率. 該函數(shù)通俗來說,就是對于一個離散型概率事件來說,使用這個函數(shù) 來求它的各個成功事件結果的概率. PDF 概率密度函數(shù) (Probability Density Function): 是對連續(xù)性隨機變量的定義.與PMF不同的是PDF在特定點上的值并不 是該點的概率,連續(xù)隨機概率事件只能求一段區(qū)域內(nèi)發(fā)生事件的概率, 通過對這段區(qū)間進行積分來求. 通俗來說, 使用這個概率密度函數(shù)將 想要求概率的區(qū)間的臨界點( 最大值和最小值)帶入求積分.就是該區(qū)間的概率. CDF 累積分布函數(shù) (cumulative distribution function): 又叫分布函數(shù),是概率密度函數(shù)的積分,能完整描述一個實隨機變量X的概率分布。 -
引入庫
import numpy as np from scipy import stats import matplotlib.pyplot as plt -
二項分布
def test_binom_pmf(): ''' 為離散分布 二項分布的例子:拋擲10次硬幣,恰好兩次正面朝上的概率是多少? ''' n = 10#獨立實驗次數(shù) p = 0.5#每次正面朝上概率 k = np.arange(0,11)#0-10次正面朝上概率 binomial = stats.binom.pmf(k,n,p) print k print binomial#概率和為1 print sum(binomial) print binomial[2] plt.plot(k, binomial,'o-') plt.title('Binomial: n=%i , p=%.2f' % (n,p),fontsize=15) plt.xlabel('Number of successes') plt.ylabel('Probability of success',fontsize=15) plt.show() test_binom_pmf()輸出
[ 0 1 2 3 4 5 6 7 8 9 10] [ 0.00097656 0.00976563 0.04394531 0.1171875 0.20507813 0.246093750.20507813 0.1171875 0.04394531 0.00976563 0.00097656] 1.0 0.0439453125image -
模擬二項隨機變量
def test_binom_rvs(): ''' 為離散分布 使用.rvs函數(shù)模擬一個二項隨機變量,其中參數(shù)size指定你要進行模擬的次數(shù)。我讓Python返回10000個參數(shù)為n和p的二項式隨機變量 進行10000次實驗,每次拋10次硬幣,統(tǒng)計有幾次正面朝上,最后統(tǒng)計每次實驗正面朝上的次數(shù) ''' # rvs:對隨機變量進行隨機取值,可以通過size參數(shù)指定輸出的數(shù)組的大小。 # 返回值是一個列表,每個元素是0-n的一個值,表示每次實驗成功的個數(shù) binom_sim = data = stats.binom.rvs(n=10,p=0.5,size=10000) print len(binom_sim) print "mean: %g" % np.mean(binom_sim) print "SD: %g" % np.std(binom_sim,ddof=1) print(binom_sim) #取出binom_sim中值為2的元素 target = [i for i in binom_sim if i==2] #打印2的個數(shù),即兩次正面朝上的次數(shù)及其概率 print("number of 2 successes:" + str(len(target)) + "and the probability of target:" + str(len(target)/10000.0)) #bins參數(shù)指定bin(箱子)的個數(shù),也就是總共有幾條條狀圖 #normed這個參數(shù)指定密度,也就是每個條狀圖的占比例比,默認為1 #畫出所有的隨機變量的直方圖 plt.hist(binom_sim,bins=10,normed=True) plt.xlabel('x') plt.ylabel('density') plt.show() test_binom_rvs()輸出,輸出結果和上一個實驗結果相近。
10000 mean: 4.9734 SD: 1.58485 [6 5 6 ..., 6 4 6] number of 2 successes:471and the probability of target:0.0471image -
泊松分布
##################### #泊松分布 ##################### def test_poisson_pmf(): ''' 泊松分布的例子:已知某路口發(fā)生事故的比率是每天2次,那么在此處一天內(nèi)發(fā)生4次事故的概率是多少? 泊松分布的輸出是一個數(shù)列,包含了發(fā)生0次、1次、2次,直到10次事故的概率。 ''' rate = 2 n = np.arange(0,10) y = stats.poisson.pmf(n,rate) print y plt.plot(n, y, 'o-') plt.title('Poisson: rate=%i' % (rate), fontsize=15) plt.xlabel('Number of accidents') plt.ylabel('Probability of number accidents', fontsize=15) plt.show()輸出 (e-01即10的-1次方)
[ 1.35335283e-01 2.70670566e-01 2.70670566e-01 1.80447044e-01 9.02235222e-02 3.60894089e-02 1.20298030e-02 3.43708656e-03 8.59271640e-04 1.90949253e-04]可以看到,事故次數(shù)的峰值在均值附近
image -
模擬泊松分布的隨機變量
def test_poisson_rvs(): ''' 模擬1000個服從泊松分布的隨機變量 ''' data = stats.poisson.rvs(mu=2, loc=0, size=1000) print "mean: %g" % np.mean(data) print "SD: %g" % np.std(data, ddof=1) target = [i for i in data if i==4] #打印4的個數(shù),即一天內(nèi)發(fā)生4次事故的實驗次數(shù) print("number of 4 successes:" + str(len(target)) + "and the probability of target:" + str(len(target)/1000.0)) plt.hist(data,bins = 9,normed = True) plt.title('Poisson: rate=%i' % (2), fontsize=15) plt.xlabel('Number of accidents') plt.ylabel('Probability of number accidents', fontsize=15) plt.show()輸出(和上面的結果相近)
mean: 1.969 SD: 1.36305 number of 4 successes:84and the probability of target:0.084image -
正態(tài)分布
##################### #正態(tài)分布 ##################### def test_norm_pmf(): ''' 正態(tài)分布是一種連續(xù)分布,其函數(shù)可以在實線上的任何地方取值。 正態(tài)分布由兩個參數(shù)描述:分布的平均值μ和方差σ2 。 ''' mu = 0#mean sigma = 1#standard deviation x = np.arange(-5,5,0.1) y = stats.norm.pdf(x,0,1) print y plt.plot(x, y) plt.title('Normal: $\mu$=%.1f, $\sigma^2$=%.1f' % (mu,sigma)) plt.xlabel('x') plt.ylabel('Probability density', fontsize=15) plt.show()輸出
[ 1.48671951e-06 2.43896075e-06 3.96129909e-06 6.36982518e-06 1.01408521e-05 1.59837411e-05 2.49424713e-05 3.85351967e-05 5.89430678e-05 8.92616572e-05 1.33830226e-04 1.98655471e-04 2.91946926e-04 4.24780271e-04 6.11901930e-04 8.72682695e-04 1.23221917e-03 1.72256894e-03 2.38408820e-03 3.26681906e-03 4.43184841e-03 5.95253242e-03 7.91545158e-03 1.04209348e-02 1.35829692e-02 1.75283005e-02 2.23945303e-02 2.83270377e-02 3.54745928e-02 4.39835960e-02 5.39909665e-02 6.56158148e-02 7.89501583e-02 9.40490774e-02 1.10920835e-01 1.29517596e-01 1.49727466e-01 1.71368592e-01 1.94186055e-01 2.17852177e-01 2.41970725e-01 2.66085250e-01 2.89691553e-01 3.12253933e-01 3.33224603e-01 3.52065327e-01 3.68270140e-01 3.81387815e-01 3.91042694e-01 3.96952547e-01 3.98942280e-01 3.96952547e-01 3.91042694e-01 3.81387815e-01 3.68270140e-01 3.52065327e-01 3.33224603e-01 3.12253933e-01 2.89691553e-01 2.66085250e-01 2.41970725e-01 2.17852177e-01 1.94186055e-01 1.71368592e-01 1.49727466e-01 1.29517596e-01 1.10920835e-01 9.40490774e-02 7.89501583e-02 6.56158148e-02 5.39909665e-02 4.39835960e-02 3.54745928e-02 2.83270377e-02 2.23945303e-02 1.75283005e-02 1.35829692e-02 1.04209348e-02 7.91545158e-03 5.95253242e-03 4.43184841e-03 3.26681906e-03 2.38408820e-03 1.72256894e-03 1.23221917e-03 8.72682695e-04 6.11901930e-04 4.24780271e-04 2.91946926e-04 1.98655471e-04 1.33830226e-04 8.92616572e-05 5.89430678e-05 3.85351967e-05 2.49424713e-05 1.59837411e-05 1.01408521e-05 6.36982518e-06 3.96129909e-06 2.43896075e-06]image -
beta分布
##################### #beta分布 ##################### def test_beta_pmf(): ''' β分布是一個取值在 [0, 1] 之間的連續(xù)分布,它由兩個形態(tài)參數(shù)α和β的取值所刻畫。 β分布的形狀取決于α和β的值。貝葉斯分析中大量使用了β分布。 ''' a = 0.5# b = 0.5 x = np.arange(0.01,1,0.01) y = stats.norm.pdf(x,a,b) print y plt.plot(x, y) plt.title('Beta: a=%.1f, b=%.1f' % (a,b)) plt.xlabel('x') plt.ylabel('Probability density', fontsize=15) plt.show()輸出
[ 0.49361898 0.50328868 0.51294259 0.5225726 0.5321705 0.54172794 0.55123649 0.56068762 0.57007272 0.57938311 0.58861006 0.59774481 0.60677857 0.61570252 0.62450787 0.63318582 0.64172761 0.65012453 0.65836792 0.66644921 0.67435989 0.68209158 0.689636 0.69698503 0.70413065 0.71106506 0.71778058 0.72426976 0.73052535 0.73654028 0.74230776 0.74782121 0.75307432 0.75806105 0.76277563 0.76721258 0.77136674 0.77523323 0.77880752 0.78208539 0.78506297 0.78773672 0.79010348 0.79216042 0.79390509 0.79533541 0.79644966 0.79724651 0.797725 0.79788456 0.797725 0.79724651 0.79644966 0.79533541 0.79390509 0.79216042 0.79010348 0.78773672 0.78506297 0.78208539 0.77880752 0.77523323 0.77136674 0.76721258 0.76277563 0.75806105 0.75307432 0.74782121 0.74230776 0.73654028 0.73052535 0.72426976 0.71778058 0.71106506 0.70413065 0.69698503 0.689636 0.68209158 0.67435989 0.66644921 0.65836792 0.65012453 0.64172761 0.63318582 0.62450787 0.61570252 0.60677857 0.59774481 0.58861006 0.57938311 0.57007272 0.56068762 0.55123649 0.54172794 0.5321705 0.5225726 0.51294259 0.50328868 0.49361898]image -
指數(shù)分布
##################### #指數(shù)分布(Exponential Distribution) ##################### def test_exp(): ''' 指數(shù)分布是一種連續(xù)概率分布,用于表示獨立隨機事件發(fā)生的時間間隔。 比如旅客進入機場的時間間隔、打進客服中心電話的時間間隔、中文維基百科新條目出現(xiàn)的時間間隔等等。 ''' lambd = 0.5# x = np.arange(0,15,0.1) y =lambd * np.exp(-lambd *x) print y plt.plot(x, y) plt.title('Exponential: $\lambda$=%.2f' % (lambd)) plt.xlabel('x') plt.ylabel('Probability density', fontsize=15) plt.show()輸出
[ 5.00000000e-01 4.75614712e-01 4.52418709e-01 4.30353988e-01 4.09365377e-01 3.89400392e-01 3.70409110e-01 3.52344045e-01 3.35160023e-01 3.18814076e-01 3.03265330e-01 2.88474905e-01 2.74405818e-01 2.61022888e-01 2.48292652e-01 2.36183276e-01 2.24664482e-01 2.13707466e-01 2.03284830e-01 1.93370512e-01 1.83939721e-01 1.74968875e-01 1.66435542e-01 1.58318385e-01 1.50597106e-01 1.43252398e-01 1.36265897e-01 1.29620130e-01 1.23298482e-01 1.17285144e-01 1.11565080e-01 1.06123987e-01 1.00948259e-01 9.60249543e-02 9.13417620e-02 8.68869717e-02 8.26494441e-02 7.86185832e-02 7.47843096e-02 7.11370358e-02 6.76676416e-02 6.43674518e-02 6.12282141e-02 5.82420789e-02 5.54015792e-02 5.26996123e-02 5.01294219e-02 4.76845811e-02 4.53589766e-02 4.31467932e-02 4.10424993e-02 3.90408330e-02 3.71367891e-02 3.53256065e-02 3.36027564e-02 3.19639306e-02 3.04050313e-02 2.89221604e-02 2.75116100e-02 2.61698530e-02 2.48935342e-02 2.36794622e-02 2.25246012e-02 2.14260634e-02 2.03811020e-02 1.93871039e-02 1.84415837e-02 1.75421771e-02 1.66866350e-02 1.58728182e-02 1.50986917e-02 1.43623198e-02 1.36618612e-02 1.29955644e-02 1.23617632e-02 1.17588729e-02 1.11853859e-02 1.06398682e-02 1.01209557e-02 9.62735089e-03 9.15781944e-03 8.71118732e-03 8.28633770e-03 7.88220824e-03 7.49778841e-03 7.13211695e-03 6.78427951e-03 6.45340629e-03 6.13866995e-03 5.83928349e-03 5.55449827e-03 5.28360219e-03 5.02591787e-03 4.78080097e-03 4.54763855e-03 4.32584760e-03 4.11487352e-03 3.91418877e-03 3.72329154e-03 3.54170446e-03 3.36897350e-03 3.20466672e-03 3.04837328e-03 2.89970236e-03 2.75828221e-03 2.62375920e-03 2.49579695e-03 2.37407550e-03 2.25829047e-03 2.14815235e-03 2.04338572e-03 1.94372862e-03 1.84893186e-03 1.75875839e-03 1.67298273e-03 1.59139040e-03 1.51377737e-03 1.43994958e-03 1.36972241e-03 1.30292026e-03 1.23937609e-03 1.17893100e-03 1.12143386e-03 1.06674089e-03 1.01471532e-03 9.65227068e-04 9.18152389e-04 8.73373568e-04 8.30778637e-04 7.90261084e-04 7.51719596e-04 7.15057799e-04 6.80184019e-04 6.47011053e-04 6.15455951e-04 5.85439810e-04 5.56887574e-04 5.29727846e-04 5.03892715e-04 4.79317577e-04 4.55940983e-04 4.33704479e-04 4.12552462e-04 3.92432041e-04 3.73292904e-04 3.55087194e-04 3.37769388e-04 3.21296180e-04 3.05626381e-04 2.90720806e-04]image -
指數(shù)分布下模擬1000個隨機變量
def test_expon_rvs(): ''' 指數(shù)分布下模擬1000個隨機變量。scale參數(shù)表示λ的倒數(shù)。函數(shù)np.std中,參數(shù)ddof等于標準偏差除以 $n-1$ 的值。 ''' data = stats.expon.rvs(scale=2, size=1000) print "mean: %g" % np.mean(data) print "SD: %g" % np.std(data, ddof=1) plt.hist(data, bins=20, normed=True) plt.xlim(0,15) plt.title('Simulating Exponential Random Variables') plt.show() test_expon_rvs()輸出
mean: 1.99885 SD: 2.09338image
各種概率分布的python測試示例
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 你怎么過一天,就怎么過一生。 你過的每一天都決定了你未來的每一天。有的人下了班后,就躺在沙發(fā)上刷手機,吃了晚飯后,...
- 德天瀑布位于廣西壯族自治區(qū)崇左市大新縣碩龍鄉(xiāng)德天村,中國與越南邊境處的歸春河上游,瀑布氣勢磅礴、蔚為壯觀,與緊鄰的...