前言
- 在大多數(shù)現(xiàn)實(shí)情況下,模型可以簡(jiǎn)化并通過模型對(duì)顯式進(jìn)行探索,本章可以學(xué)到的東西
- 數(shù)據(jù)分析中使用基礎(chǔ)模型
- 使用積累分布函數(shù)和概率密度來描述變量
- 使用preceding function(?)和很多工具來進(jìn)行點(diǎn)估計(jì)和生成符合特定分布的隨機(jī)數(shù)
- 離散和連續(xù)隨機(jī)變量
模型和實(shí)驗(yàn)
- 模型傾向于統(tǒng)計(jì)模型,在隨機(jī)實(shí)驗(yàn)情況下
- 需要導(dǎo)入的包和包別名
from pandas import Series,DateFrame
import numpy.random as rnd
import scipy.stats as st #統(tǒng)計(jì)相關(guān)函數(shù)
積累分布函數(shù)
- 雖然直方圖能夠直觀感受數(shù)據(jù)的一個(gè)分布情況,但有時(shí)候我們需要精準(zhǔn)的數(shù)據(jù)表達(dá),那么利用積累分布函數(shù)
- 生成一個(gè)符合正態(tài)分布的隨機(jī)數(shù)據(jù)
mean=0 #均值
stdev=1 #標(biāo)準(zhǔn)差
nvalues=10 #隨機(jī)點(diǎn)的個(gè)數(shù)
norm_variate=rnd.normal(mean,stdev,nvalues)
- 這段代碼生成偽隨機(jī)數(shù),電腦不可能生成完全隨機(jī)數(shù),生成數(shù)字都會(huì)服從一個(gè)給定的分布。當(dāng)然,這樣的隨機(jī)已經(jīng)能滿足大多數(shù)數(shù)據(jù)分析的需要。
- 積累分布函數(shù)以后都簡(jiǎn)稱為cdf,在一個(gè)實(shí)際數(shù)據(jù)集中,cdf函數(shù)會(huì)是一個(gè)階段函數(shù)
分布
數(shù)據(jù)分布分為離散分布和隨機(jī)分布,對(duì)于離散或者連續(xù)變量數(shù)據(jù)分布會(huì)使用Scipy.stats中統(tǒng)計(jì)模塊來統(tǒng)計(jì)數(shù)據(jù),官方文檔地址:https://docs.scipy.org/doc/scipy/reference/stats.html
-
模塊組合函數(shù)命名方式
st.< rv_name>.< function>(< argument>)- st:選擇統(tǒng)計(jì)模塊包
- rv_name:分布名稱
- function:計(jì)算的具體函數(shù)
- argument:函數(shù)的參數(shù)
-
模塊中每個(gè)分布都會(huì)有的部分函數(shù):
- rvs():生成偽隨機(jī)數(shù)
- cdf():積累分布函數(shù)
- pdf(),pmf():連續(xù)變量:pdf隨機(jī)變量概率密度;離散變量:pmf概率質(zhì)量函數(shù)
- ppf():積累分布函數(shù)的逆函數(shù),百分?jǐn)?shù)點(diǎn)->變量數(shù)值
- stats():分布的統(tǒng)計(jì)量
- mean(),std(),or var():變量均值,標(biāo)準(zhǔn)差,方差
- fit():將數(shù)據(jù)來擬合變量分布,返回?cái)?shù)據(jù)的shape,location(位置),scale(反映數(shù)據(jù)形狀)參數(shù)
對(duì)于正態(tài)分布,location對(duì)應(yīng)mean,scale對(duì)應(yīng)標(biāo)準(zhǔn)差std
-
例子:繪制一個(gè)正態(tài)分布的CDF函數(shù)和PDF函數(shù)圖形
- 數(shù)據(jù)(模擬的是年齡超過20歲女性的身高分布):
N(樣本點(diǎn)個(gè)數(shù))=4857
mean(均值)=63.8
serror(標(biāo)準(zhǔn)誤差)=0.06
sdev(樣本標(biāo)準(zhǔn)差)=serror*sqrt(N)[公式]
rvnorm=st.norm(loc-mean,scale=sdev)
x軸數(shù)據(jù)范圍:xmin=mean-3sdev,xmax=mean+3sdev (根據(jù)2
3delta原則) - 代碼
xmin = mean-3*sdev xmax = mean+3*sdev xx = np.linspace(xmin,xmax,200) plt.figure(figsize=(8,3)) plt.subplot(1,2,1) plt.plot(xx, rvnorm.cdf(xx)) plt.title('Cumulative distribution function') plt.xlabel('Height (in)') plt.ylabel('Proportion of women') plt.axis([xmin, xmax, 0.0, 1.0]) plt.subplot(1,2,2) plt.plot(xx, rvnorm.pdf(xx)) plt.title('Probability density function') plt.xlabel('Height (in)') plt.axis([xmin, xmax, 0.0, 0.1]);-
結(jié)果
正態(tài)分布CDF與PDF - 計(jì)算這里rvnorm的1/4百分位數(shù)可以使用ppf(),那么數(shù)值為rvnorm.ppf(0.25)
- 計(jì)算該數(shù)據(jù)的點(diǎn)估計(jì)參數(shù)可以由如下代碼得到:
mean,variance,skew,kurtosis=rvnorm.stats(moments='mvks')- mean:變量的均值 - variance:變量方差 - skew:偏度,反映數(shù)據(jù)的對(duì)稱程度 - kurtosis:峰度值,反映數(shù)據(jù)的峰是尖銳的還是平滑的,正態(tài)分布的峰度值=0,因?yàn)樵摲植际菂⒖挤? - 數(shù)據(jù)(模擬的是年齡超過20歲女性的身高分布):
-
weibull分布
- 參數(shù):eta(scale參數(shù)),beta(shape參數(shù)),loc 都是正數(shù)
- 描述設(shè)備故障與時(shí)間的關(guān)系
- 參數(shù)描述
- shape參數(shù)beta:
- beta<1:
故障率隨著時(shí)間遞減,反映機(jī)器是有缺陷的,使用過程會(huì)很早就失靈 - beta=1:
故障率是常數(shù),那么隨機(jī)數(shù)與時(shí)間之間的分就是指數(shù)分布 - beta>1:
故障率隨著時(shí)間遞增而遞增,反映正常使用機(jī)器的過程
- beta<1:
- scale參數(shù) yta決定分布傳播的范圍,scale參數(shù)越大那么對(duì)于機(jī)器故障的估計(jì)就存在越大不確定性。注意該分布中scale參數(shù)不是模型的標(biāo)準(zhǔn)差
- shape參數(shù)beta:
- 例子:
- 數(shù)據(jù):
eta = 1.0 beta = 1.5 rvweib = st.weibull_min(beta, scale=eta)- 根據(jù)數(shù)據(jù)繪制直方圖
weib_variates = rvweib.rvs(size=500) weib_df = DataFrame(weib_variates,columns=['weibull_variate']) weib_df.hist(bins=30) -
結(jié)果
enter image description here
-
概率分布函數(shù)pdf
- 反映連續(xù)隨機(jī)變量概率密度,其中一段與x軸之間面積表示概率
-
概率質(zhì)量函數(shù)pmf
- 表示離散變量
模型的產(chǎn)生
- 模型是用來簡(jiǎn)化數(shù)據(jù)計(jì)算模式,概率模型考慮相關(guān)因素,重要指標(biāo),近似模擬數(shù)據(jù)從而簡(jiǎn)化計(jì)算模式
- 例子
- 二項(xiàng)分布模型(N,P)
- 有N個(gè)離散變量,變量之間相互獨(dú)立,每個(gè)變量服從二次分布,每個(gè)變量=1的概率都是P
- 適用情景:質(zhì)量控制系,1代表質(zhì)量達(dá)標(biāo)的項(xiàng),0代表質(zhì)量不達(dá)標(biāo)的項(xiàng),那么就可以得到系統(tǒng)中達(dá)標(biāo)項(xiàng)的模型
- 可以利用pmf函數(shù)來查看二項(xiàng)分布的分布情況
- 代碼
N = 20 p = 0.5 rv_binom = st.binom(N, p) xx = np.arange(N+1) cdf = rv_binom.cdf(xx) pmf = rv_binom.pmf(xx) xvalues = np.arange(N+1) plt.figure(figsize=(9,3.5)) plt.subplot(1,2,1) plt.step(xvalues, cdf, lw=2, color='brown') plt.grid(lw=1, ls='dashed') plt.title('Binomial cdf, $N=20$, $p=0.5$', fontsize=16) plt.subplot(1,2,2) left = xx - 0.5 plt.bar(left, pmf, 1.0, color='CornflowerBlue') plt.title('Binomial pmf, $N=20$, $p=0.5$', fontsize=16)#使用latex公式寫法 plt.axis([0, 20, 0, .18]);-
結(jié)果
enter image description here - 當(dāng)樣本數(shù)量很大時(shí),二項(xiàng)分布近似正態(tài)分布,那么就有de Moivre估計(jì),估計(jì)的正態(tài)分布參數(shù)與二項(xiàng)分布有一樣的均值和方差,mean=NP std=sqrt(NP*(1-P))
- 二項(xiàng)分布模型(N,P)
多變量分布
- 多變量分布就是不僅觀察一個(gè)樣本數(shù)據(jù),會(huì)有多種類型的樣本數(shù)據(jù);除了數(shù)據(jù)分布情況,可能會(huì)關(guān)注變量之間的相關(guān)性
- 典型多變量分布是雙變量正態(tài)分布,該分布是scipy.stats中一部分,那么就可以利用該部分生成隨機(jī)變量
- 生成服從雙變量正態(tài)分布的代碼:
binorm_varites=st.multivariate_normal.rvs(mean=[0,0],size=300)#方差是默認(rèn)值1