python列表求平均值_python与统计概率思维
本文章將分享統(tǒng)計(jì)學(xué)中的 概率分布、抽樣分布。
一、概率分布
- 隨機(jī)變量
1.什么是隨機(jī)變量?
將隨機(jī)事件出現(xiàn)的一個(gè)結(jié)果映射到一個(gè)數(shù)值的含義,通過(guò)數(shù)值量化隨機(jī)事件,這就是隨機(jī)變量的作用。(隨機(jī)變量是量化隨機(jī)事件的一個(gè)函數(shù))2.隨機(jī)變量的分類?
離散隨機(jī)變量:結(jié)果可列舉出個(gè)數(shù),例如明天是否下雨
連續(xù)隨機(jī)變量:變量里面有無(wú)限的結(jié)果,例如明天的下雨量
- 概率分布
1.什么是概率分布?
隨機(jī)變量所有可能的結(jié)果,及對(duì)應(yīng)結(jié)果發(fā)生的概率,比如下圖是拋硬幣的概率分布:
2.隨機(jī)變量與概率分布的關(guān)系圖
2.1 離散概率分布
2.1.1伯努利分布
伯努利試驗(yàn)是在相互獨(dú)立的條件下隨機(jī)的實(shí)驗(yàn),結(jié)果只有兩種:成功/不成功,例如拋硬幣實(shí)驗(yàn)。如果這個(gè)隨機(jī)變量是伯努利實(shí)驗(yàn),那么它就服從伯努利分布。
1)定義隨機(jī)變量X
2)概率質(zhì)量函數(shù)(PMF):計(jì)算結(jié)果概率
3)python實(shí)現(xiàn)
先安裝scipy包,安裝步驟:
1)在conda中先進(jìn)入python環(huán)境:activate py32)在conda中運(yùn)行以下命令:conda install scipy
如果還沒有安裝numpy包和matplotlib包,也按上述命令安裝這些包
然后使用Bernoulli distribution
#導(dǎo)入包 #數(shù)組包 import numpy as np #繪圖包 import matplotlib.pyplot as plt #統(tǒng)計(jì)計(jì)算包的統(tǒng)計(jì)模塊 from scipy import stats ''' 第1步,定義隨機(jī)變量:1次拋硬幣 成功指正面朝上記錄為1,失敗指反面朝上記錄為0 ''' X = np.arange(0, 2,1) X#第2步,#求對(duì)應(yīng)分布的概率:概率質(zhì)量函數(shù) (PMF) #它返回一個(gè)列表,列表中每個(gè)元素表示隨機(jī)變量中對(duì)應(yīng)值的概率 p = 0.5 # 硬幣朝上的概率 pList = stats.bernoulli.pmf(X, p) pList#第3步,繪圖 ''' plot默認(rèn)繪制折線,這里我們只繪制點(diǎn),所以傳入下面的參數(shù): marker:點(diǎn)的形狀,值o表示點(diǎn)為圓圈標(biāo)記(circle marker) linestyle:線條的形狀,值None表示不顯示連接各個(gè)點(diǎn)的折線 ''' plt.plot(X, pList, marker='o',linestyle='None') ''' vlines用于繪制豎直線(vertical lines), 參數(shù)說(shuō)明:vline(x坐標(biāo)值, y坐標(biāo)最小值, y坐標(biāo)值最大值) 我們傳入的X是一個(gè)數(shù)組,是給數(shù)組中的每個(gè)x坐標(biāo)值繪制豎直線, 豎直線y坐標(biāo)最小值是0,y坐標(biāo)值最大值是對(duì)應(yīng)pList中的值 官網(wǎng)文檔:https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.vlines ''' plt.vlines(X, 0, pList) #x軸文本 plt.xlabel('隨機(jī)變量:拋硬幣1次') #y軸文本 plt.ylabel('概率') #標(biāo)題 plt.title('伯努利分布:p=%.2f' % p) #顯示圖形 plt.show()2.1.2二項(xiàng)分布
如果我們碰到一個(gè)事情,這個(gè)事情發(fā)生的次數(shù)是固定的,而我們感興趣的是成功的次數(shù),那么我們就可以用到二項(xiàng)分布。例如,拋硬幣5次,其中2次正面朝上的概率是多少。
如何檢驗(yàn)是二項(xiàng)分布:
1)定義隨機(jī)變量
2)概率質(zhì)量函數(shù)
- n:做某件事情的次數(shù)
- p:做某件事情成功的概率
- k:成功次數(shù)
3)逆向思維:拋硬幣5次,至少有3次正面朝上的概率是多少?可以反過(guò)來(lái)想:就相當(dāng)于最多2次正面朝上p(k<=2)=p(0)+p(1)+p(2)
4)python實(shí)現(xiàn)二項(xiàng)分布(Binomial Distribution)
#第1步,定義隨機(jī)變量:5次拋硬幣,正面朝上的次數(shù) n = 5 # 做某件事情的次數(shù) p = 0.5 # 做某件事情成功的概率 X = np.arange(0, n+1,1) X#第2步,#求對(duì)應(yīng)分布的概率:概率質(zhì)量函數(shù) (PMF) #它返回一個(gè)列表,列表中每個(gè)元素表示隨機(jī)變量中對(duì)應(yīng)值的概率 pList = stats.binom.pmf(X, n, p) pList #第3步,繪圖 ''' plot默認(rèn)繪制折線,這里我們只繪制點(diǎn),所以傳入下面的參數(shù): marker:點(diǎn)的形狀,值o表示點(diǎn)為圓圈標(biāo)記(circle marker) linestyle:線條的形狀,值None表示不顯示連接各個(gè)點(diǎn)的折線 ''' plt.plot(X, pList, marker='o',linestyle='None') ''' vlines用于繪制豎直線(vertical lines), 參數(shù)說(shuō)明:vline(x坐標(biāo)值, y坐標(biāo)最小值, y坐標(biāo)值最大值) 我們傳入的X是一個(gè)數(shù)組,是給數(shù)組中的每個(gè)x坐標(biāo)值繪制豎直線, 豎直線y坐標(biāo)最小值是0,y坐標(biāo)值最大值是對(duì)應(yīng)pList中的值 ''' plt.vlines(X, 0, pList) #x軸文本 plt.xlabel('隨機(jī)變量:拋硬幣正面朝上次數(shù)') #y軸文本 plt.ylabel('概率') #標(biāo)題 plt.title('二項(xiàng)分布:n=%i,p=%.2f' % (n,p)) #顯示圖形 plt.show()82.1.3幾何分布
嘗試一件事多次,想要知道取得第一次成功的概率,例如拋硬幣5次,才第一次正面朝上的概率是多少。
如何檢驗(yàn)幾何分布:
1)定義隨機(jī)變量
2)概率質(zhì)量函數(shù)——計(jì)算第k次才成功的概率
p:做某件事情成功的概率
k:第k次做某件事情,才取到第1次成功
3)幾何分布的期望和方差
4)用python實(shí)現(xiàn)幾何分布(Geometric Distribution)
''' 第1步,定義隨機(jī)變量: 首次表白成功的次數(shù),可能是1次,2次,3次等 ''' #第k次做某件事情,才取到第1次成功 #這里我們想知道5次表白成功的概率 k = 5 # 做某件事情成功的概率,這里假設(shè)每次表白成功概率都是60% p = 0.6 X = np.arange(1, k+1,1) X #第2步,#求對(duì)應(yīng)分布的概率:概率質(zhì)量函數(shù) (PMF) #它返回一個(gè)列表,列表中每個(gè)元素表示隨機(jī)變量中對(duì)應(yīng)值的概率 #分別表示表白第1次才成功的概率,表白第2次才成功的概率,表白第3次才成功的概率,表白第4次才成功的概率,表白第5次才成功的概率 pList = stats.geom.pmf(X,p) pList #第3步,繪圖 ''' plot默認(rèn)繪制折線,這里我們只繪制點(diǎn),所以傳入下面的參數(shù): marker:點(diǎn)的形狀,值o表示點(diǎn)為圓圈標(biāo)記(circle marker) linestyle:線條的形狀,值None表示不顯示連接各個(gè)點(diǎn)的折線 ''' plt.plot(X, pList, marker='o',linestyle='None') ''' vlines用于繪制豎直線(vertical lines), 參數(shù)說(shuō)明:vline(x坐標(biāo)值, y坐標(biāo)最小值, y坐標(biāo)值最大值) 我們傳入的X是一個(gè)數(shù)組,是給數(shù)組中的每個(gè)x坐標(biāo)值繪制豎直線, 豎直線y坐標(biāo)最小值是0,y坐標(biāo)值最大值是對(duì)應(yīng)pList中的值 ''' plt.vlines(X, 0, pList) #x軸文本 plt.xlabel('隨機(jī)變量:表白第k次才首次成功') #y軸文本 plt.ylabel('概率') #標(biāo)題 plt.title('幾何分布:p=%.2f' % p) #顯示圖形 plt.show()2.1.4泊松分布
如果你想知道某個(gè)時(shí)間范圍內(nèi)發(fā)生某件事k次的概率是多大,可以用泊松分布。比如一周內(nèi)有多少人能贏得彩票,每分鐘有多少人會(huì)打電話到呼叫中心。
如何驗(yàn)證是泊松分布?
1)概率質(zhì)量函數(shù)——計(jì)算某個(gè)時(shí)間范圍內(nèi),發(fā)生某件事k次的概率
λ:給定時(shí)間范圍內(nèi)某件事情發(fā)生的平均次數(shù)
k:事情發(fā)生的次數(shù)
泊松分布的期望和方差均為λ
2)用python實(shí)現(xiàn)概率分布圖的繪制(Poisson Distribution)
''' 第1步,定義隨機(jī)變量: 已知某路口發(fā)生事故的比率是每天2次, 那么在此處一天內(nèi)發(fā)生k次事故的概率是多少? ''' mu = 2 # 平均值:每天發(fā)生2次事故 k=4 #次數(shù),現(xiàn)在想知道每天發(fā)生4次事故的概率 #包含了發(fā)生0次、1次、2次,3次,4次事故 X = np.arange(0, k+1,1) X #第2步,#求對(duì)應(yīng)分布的概率:概率質(zhì)量函數(shù) (PMF) #它返回一個(gè)列表,列表中每個(gè)元素表示隨機(jī)變量中對(duì)應(yīng)值的概率 #分別表示發(fā)生1次,2次,3次,4次事故的概率 pList = stats.poisson.pmf(X,mu) pList #第3步,繪圖 ''' plot默認(rèn)繪制折線,這里我們只繪制點(diǎn),所以傳入下面的參數(shù): marker:點(diǎn)的形狀,值o表示點(diǎn)為圓圈標(biāo)記(circle marker) linestyle:線條的形狀,值None表示不顯示連接各個(gè)點(diǎn)的折線 ''' plt.plot(X, pList, marker='o',linestyle='None') ''' vlines用于繪制豎直線(vertical lines), 參數(shù)說(shuō)明:vline(x坐標(biāo)值, y坐標(biāo)最小值, y坐標(biāo)值最大值) 我們傳入的X是一個(gè)數(shù)組,是給數(shù)組中的每個(gè)x坐標(biāo)值繪制豎直線, 豎直線y坐標(biāo)最小值是0,y坐標(biāo)值最大值是對(duì)應(yīng)pList中的值 ''' plt.vlines(X, 0, pList) #x軸文本 plt.xlabel('隨機(jī)變量:某路口發(fā)生k次事故') #y軸文本 plt.ylabel('概率') #標(biāo)題 plt.title('泊松分布:平均值mu=%i' % mu) #顯示圖形 plt.show()2.2連續(xù)概率分布(2種商業(yè)模式:正態(tài)分布、冪律分布)
2.2.1正態(tài)分布(The Normal Distribution)
正態(tài)分布就是大部分屬于中間值,只有du一小部分屬于過(guò)大和過(guò)小的值,它zhi們分布在范圍的兩端。
正態(tài)分布(Normal distribution),也稱“常態(tài)分布”,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二項(xiàng)分布的漸近公式中得到,C.F.高斯在研究測(cè)量誤差時(shí)從另一個(gè)角度導(dǎo)出了它。
正態(tài)曲線呈鐘型,兩頭低,中間高,左右對(duì)稱因其曲線呈鐘形,因此人們又經(jīng)常稱之為鐘形曲線。
正態(tài)分布的表示:若隨機(jī)變量X服從一個(gè)數(shù)學(xué)期望為μ、方差為σ^2的正態(tài)分布,記為N(μ,σ^2)。
1)正態(tài)分布的功能:
- 預(yù)測(cè)數(shù)據(jù)的位置
第一步:確定概率范圍p(k<1.05) --紅色區(qū)域的面積
第二步:求標(biāo)準(zhǔn)分
標(biāo)準(zhǔn)分z =(1.05 - 平均值)/ 標(biāo)準(zhǔn)差
第三步:查找z表格
如果對(duì)于其他符號(hào)得到概率呢?
實(shí)際問(wèn)題:奔馳汽車公司考慮實(shí)施一項(xiàng)質(zhì)量保證:如果輪胎的行駛里程沒有達(dá)到質(zhì)量保證規(guī)定的里程,那么將以折扣價(jià)提供更換輪胎的服務(wù),但是考慮到更換的成本,希望達(dá)到折扣質(zhì)量保證條件的輪胎數(shù)不要超過(guò)總數(shù)的10%,那么應(yīng)該設(shè)定的質(zhì)保里程為多少公里呢?
標(biāo)準(zhǔn)分z=(k-平均值)/標(biāo)準(zhǔn)差=-1.28
2.2.2冪律分布(power-law distribution)
現(xiàn)實(shí)社會(huì)財(cái)富分配(冪律分布)
2.2.3正態(tài)分布VS.冪律分布
“邊際成本”越高的行業(yè),越是分散市場(chǎng),符合正態(tài)分布:賺大錢的人少,虧大錢的也少,大部分人都趨向賺取平均利潤(rùn)。例如上班打工。冪律分布:馬太效應(yīng)、二八原則、網(wǎng)絡(luò)效應(yīng),例如:開付費(fèi)專欄,微博網(wǎng)紅。
二、抽樣分布
日常生活中我們經(jīng)常會(huì)看到一些缺乏統(tǒng)計(jì)概率常識(shí),僅為嘩眾取寵博人眼球的問(wèn)題,比如:
- 為什么高考狀元,最后都很平庸?
- 為什么學(xué)區(qū)房那么值錢,但學(xué)歷不值錢?
- 為什么一個(gè)清華畢業(yè)的,收入還干不過(guò)咪蒙?
以上問(wèn)題均有以偏概全的問(wèn)題,通過(guò)特殊的個(gè)例來(lái)推斷整體的結(jié)論,缺乏可靠性。
如何避免以上類似的偏見,需要先了解一下統(tǒng)計(jì)學(xué)中總體與樣本的概念?
1.什么是總體?
總體是你研究對(duì)象的整個(gè)群體。2.什么是樣本?
樣本是從總體中選取的一部分,用于代表總體。以“為什么一個(gè)清華畢業(yè)的,收入還干不過(guò)咪蒙?”這個(gè)問(wèn)題為例,它比較的是畢業(yè)于清華大學(xué)的所有人平均收入和畢業(yè)于普通大學(xué)的所有人的平均收入,而咪蒙作為畢業(yè)于普通大學(xué)的所有人樣本是特殊樣本,并非隨機(jī)樣本,無(wú)法代表總體。
2.1什么是樣本數(shù)量?
樣本數(shù)量是你有多少個(gè)樣本。2.2什么是樣本大小(樣本容量)?
樣本大小是每個(gè)樣本里面有多少個(gè)數(shù)據(jù)。將樣本平均值的分布可視化叫做抽樣分布。
3.如何用python實(shí)現(xiàn)隨機(jī)樣本?
range() 函數(shù)可創(chuàng)建一個(gè)整數(shù)列表,一般用在 for 循環(huán)中。
使用語(yǔ)法:range(start, stop[, step])
參數(shù)說(shuō)明:
- start: 計(jì)數(shù)從 start 開始。默認(rèn)是從 0 開始。例如range(5)等價(jià)于range(0, 5)
- start: 計(jì)數(shù)從 start 開始,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
- step:步長(zhǎng),默認(rèn)為1。例如:range(0, 5) 等價(jià)于 range(0, 5, 1)
案例1:抽獎(jiǎng)
''' 抽獎(jiǎng):生成多個(gè)隨機(jī)數(shù) 應(yīng)用案例:從395個(gè)用戶中隨機(jī)抽取10個(gè)人作為中獎(jiǎng)?wù)?''' # 導(dǎo)入 random(隨機(jī)數(shù)) 模塊 import randomfor i in range(10):userId=random.randint(0,395)#用%s格式化字符串print('第 %s 位獲獎(jiǎng)用戶id是 %s' % (i,userId) )案例2:pandas數(shù)據(jù)框(DataFrame)的抽樣方法
#導(dǎo)入包 import numpy as np #數(shù)組包 import pandas as pd #數(shù)據(jù)分析包 ''' #arange產(chǎn)生一個(gè)含有5*4個(gè)元素的一維數(shù)組 reshape:將數(shù)組轉(zhuǎn)換成5行4列的二維數(shù)組 ''' df = pd.DataFrame(np.arange(5 * 4).reshape((5, 4))) df#隨機(jī)選擇一個(gè)n行的子集 sample1=df.sample(n=3) sample14.什么是中心極限定理?
5.如何用樣本估計(jì)總體?
樣本平均值約等于總體平均值6.如何在生活、工作、投資中避免偏見?有如下四種偏見的產(chǎn)生:
總結(jié)
以上是生活随笔為你收集整理的python列表求平均值_python与统计概率思维的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于jsp+javabean+servl
- 下一篇: python opencv轮廓提取_Py