背景
總結統計工作中幾個常用用法在python統計函數庫scipy.stats的使用範例。
正态分布
以正态分布的常見需求為例了解scipy.stats的基本使用方法。
-
生成服從指定分布的随機數
norm.rvs通過loc和scale參數可以指定随機變量的偏移和縮放參數,這裡對應的是正态分布的期望和标準差。size得到随機數數組的形狀參數。(也可以使用
)np.random.normal(loc=0.0, scale=1.0, size=None)
In [4]: import numpy as np
In [5]: import scipy.stats as st
In [6]:
st.norm.rvs(loc = 0,scale = 0.1,size =10)
Out[6]:
array([ 0.12259875, 0.07001414, 0.11296181, -0.00630321, -0.04377487,
0.00474487, -0.00728678, 0.03860256, 0.06701367, 0.03797084])
In [7]:
In [9]: st.norm.rvs(loc = 3,scale = 10,
size=(2,2)
)
Out[9]:
array([[-13.26078265, 0.88411923],
[ 5.14734849, 17.94093177]])
In [10]:
-
求機率密度函數指定點的函數值
stats.norm.pdf正态分布機率密度函數。
In [33]:
st.norm.pdf
(0,loc = 0,scale = 1)
Out[33]: 0.3989422804014327
In [34]: st.norm.pdf(
np.arange(3)
,loc = 0,scale = 1)
Out[34]: array([ 0.39894228, 0.24197072, 0.05399097])
In [35]:
-
求累計分布函數指定點的函數值
stats.norm.cdf正态分布累計機率密度函數。
In [52]:
st.norm.cdf
(0,loc=3,scale=1)
Out[52]: 0.0013498980316300933
In [53]:
st.norm.cdf
(0,0,1)
Out[53]: 0.5
In [54]:
-
累計分布函數的逆函數
stats.norm.ppf正态分布的累計分布函數的逆函數,即下分位點。
In [59]: z05 =
st.norm.ppf
(0.05)
In [60]:
In [60]: z05
Out[60]: -1.6448536269514729
In [61]: st.norm.cdf(z05)
Out[61]: 0.049999999999999975
In [62]:
通用函數
stats連續型随機變量的公共方法:*離散分布的簡單方法大多數與連續分布很類似,但是pdf被更換為密度函數pmf。
名稱 備注 rvs 産生服從指定分布的随機數 機率密度函數 cdf 累計分布函數 sf 殘存函數(1-CDF) ppf 分位點函數(CDF的逆) isf 逆殘存函數(sf的逆) fit 對一組随機取樣進行拟合,最大似然估計方法找出最适合取樣資料的機率密度函數系數。
常見分布
可能用到的分布對照表
名稱 含義 beta beta分布 f F分布 gamma gam分布 poisson 泊松分布 hypergeom 超幾何分布 lognorm 對數正态分布 binom 二項分布 uniform 均勻分布 chi2 卡方分布 cauchy 柯西分布 laplace 拉普拉斯分布 rayleigh 瑞利分布 t 學生T分布 norm 正态分布 expon 指數分布
參考文檔
- 用Python做統計分析 (Scipy.stats的文檔) - python論壇 - 經管之家(原人大經濟論壇)
- Scipy教程 - 統計函數庫scipy.stats - 皮皮blog - CSDN部落格
- scipy.stats.weibull_max — SciPy v0.19.1 Reference Guide