當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy stats.probplot用法及代碼示例


本文簡要介紹 python 語言中 scipy.stats.probplot 的用法。

用法:

scipy.stats.probplot(x, sparams=(), dist='norm', fit=True, plot=None, rvalue=False)#

計算概率圖的分位數,並可選擇顯示該圖。

生成樣本數據相對於指定理論分布(默認為正態分布)的分位數的概率圖。 probplot 可選擇計算數據的 best-fit 線,並使用 Matplotlib 或給定繪圖函數繪製結果。

參數

x array_like

probplot 創建繪圖的樣本/響應數據。

sparams 元組,可選

Distribution-specific 形狀參數(形狀參數加上位置和比例)。

dist str 或 stats.distributions 實例,可選

分布或分布函數名稱。對於正態概率圖,默認值為 ‘norm’。看起來足夠像 stats.distributions 實例的對象(即它們具有 ppf 方法)也被接受。

fit 布爾型,可選

如果為 True(默認),則將最小二乘回歸 (best-fit) 線擬合到樣本數據。

plot 對象,可選

如果給定,則繪製分位數。如果給出並且scipy.stats.fit為真,也繪製最小二乘擬合。陰謀是一個必須具有方法 “plot” 和 “text” 的對象。這matplotlib.pyplot可以使用模塊或 Matplotlib Axes 對象,或具有相同方法的自定義對象。默認為無,這意味著不創建繪圖。

rvalue 布爾型,可選

如果陰謀提供和scipy.stats.fit為 True,設置右值to True 包括繪圖上的決定係數。默認值為 False。

返回

(osm, osr) ndarray 的元組

理論分位數(osm,或順序統計中位數)和有序響應(osr)的元組。 osr 是簡單排序的輸入 x。有關如何計算 osm 的詳細信息,請參閱注釋部分。

(slope, intercept, r) 浮點數元組,可選

包含最小二乘擬合結果的元組(如果由以下方法執行)probplot.r是決定係數的平方根。如果fit=Falseplot=None,這個元組不返回。

注意

即使陰謀給出,該圖不顯示或保存probplot;plt.show()或者plt.savefig('figname.png')應該在調用後使用probplot.

probplot 生成概率圖,不應與 Q-Q 或 P-P 圖混淆。 Statsmodels 具有更廣泛的此類函數,請參閱 statsmodels.api.ProbPlot

用於理論分位數的公式(概率圖的橫軸)是 Filliben 的估計:

quantiles = dist.ppf(val), for

        0.5**(1/n),                  for i = n
  val = (i - 0.3175) / (n + 0.365),  for i = 2, ..., n-1
        1 - 0.5**(1/n),              for i = 1

其中i表示i-th有序值,n是值的總數。

例子

>>> import numpy as np
>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> nsample = 100
>>> rng = np.random.default_rng()

具有小自由度的 t 分布:

>>> ax1 = plt.subplot(221)
>>> x = stats.t.rvs(3, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

具有較大自由度的 t 分布:

>>> ax2 = plt.subplot(222)
>>> x = stats.t.rvs(25, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

兩個正態分布與廣播的混合:

>>> ax3 = plt.subplot(223)
>>> x = stats.norm.rvs(loc=[0,5], scale=[1,1.5],
...                    size=(nsample//2,2), random_state=rng).ravel()
>>> res = stats.probplot(x, plot=plt)

標準正態分布:

>>> ax4 = plt.subplot(224)
>>> x = stats.norm.rvs(loc=0, scale=1, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

使用 distsparams 關鍵字生成具有對數伽瑪分布的新圖形:

>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> x = stats.loggamma.rvs(c=2.5, size=500, random_state=rng)
>>> res = stats.probplot(x, dist=stats.loggamma, sparams=(2.5,), plot=ax)
>>> ax.set_title("Probplot for loggamma dist with shape parameter 2.5")

使用 Matplotlib 顯示結果:

>>> plt.show()
scipy-stats-probplot-1_00.png
scipy-stats-probplot-1_01.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.probplot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。