本文簡要介紹 python 語言中 scipy.special.kolmogorov
的用法。
用法:
scipy.special.kolmogorov(y, out=None) = <ufunc 'kolmogorov'>#
Kolmogorov 分布的互補累積分布(生存函數)函數。
返回經驗分布和理論分布之間相等性的雙邊檢驗的柯爾莫哥洛夫極限分布(
D_n*\sqrt(n)
,當 n 趨於無窮大)的互補累積分布函數。它等於sqrt(n) * max absolute deviation > y
的概率(限製為 n->無窮大)。- y: 浮點數 數組
經驗 CDF (ECDF) 和目標 CDF 之間的絕對偏差,乘以 sqrt(n)。
- out: ndarray,可選
函數結果的可選輸出數組
- 標量或 ndarray
kolmogorov(y) 的值
參數 ::
返回 ::
注意:
kolmogorov
被使用stats.kstest在Kolmogorov-Smirnov 擬合優度檢驗的應用中。由於曆史原因,此函數在scpy.special,但實現最準確的 CDF/SF/PDF/PPF/ISF 計算的推薦方法是使用stats.kstwobign分配。例子:
顯示至少與 0、0.5 和 1.0 一樣大的差距的概率。
>>> import numpy as np >>> from scipy.special import kolmogorov >>> from scipy.stats import kstwobign >>> kolmogorov([0, 0.5, 1.0]) array([ 1. , 0.96394524, 0.26999967])
比較從 Laplace(0, 1) 分布中抽取的大小為 1000 的樣本與目標分布,即 Normal(0, 1) 分布。
>>> from scipy.stats import norm, laplace >>> rng = np.random.default_rng() >>> n = 1000 >>> lap01 = laplace(0, 1) >>> x = np.sort(lap01.rvs(n, random_state=rng)) >>> np.mean(x), np.std(x) (-0.05841730131499543, 1.3968109101997568)
構造經驗 CDF 和 K-S 統計量 Dn。
>>> target = norm(0,1) # Normal mean 0, stddev 1 >>> cdfs = target.cdf(x) >>> ecdfs = np.arange(n+1, dtype=float)/n >>> gaps = np.column_stack([cdfs - ecdfs[:n], ecdfs[1:] - cdfs]) >>> Dn = np.max(gaps) >>> Kn = np.sqrt(n) * Dn >>> print('Dn=%f, sqrt(n)*Dn=%f' % (Dn, Kn)) Dn=0.043363, sqrt(n)*Dn=1.371265 >>> print(chr(10).join(['For a sample of size n drawn from a N(0, 1) distribution:', ... ' the approximate Kolmogorov probability that sqrt(n)*Dn>=%f is %f' % (Kn, kolmogorov(Kn)), ... ' the approximate Kolmogorov probability that sqrt(n)*Dn<=%f is %f' % (Kn, kstwobign.cdf(Kn))])) For a sample of size n drawn from a N(0, 1) distribution: the approximate Kolmogorov probability that sqrt(n)*Dn>=1.371265 is 0.046533 the approximate Kolmogorov probability that sqrt(n)*Dn<=1.371265 is 0.953467
針對目標 N(0, 1) CDF 繪製經驗 CDF。
>>> import matplotlib.pyplot as plt >>> plt.step(np.concatenate([[-3], x]), ecdfs, where='post', label='Empirical CDF') >>> x3 = np.linspace(-3, 3, 100) >>> plt.plot(x3, target.cdf(x3), label='CDF for N(0, 1)') >>> plt.ylim([0, 1]); plt.grid(True); plt.legend(); >>> # Add vertical lines marking Dn+ and Dn- >>> iminus, iplus = np.argmax(gaps, axis=0) >>> plt.vlines([x[iminus]], ecdfs[iminus], cdfs[iminus], color='r', linestyle='dashed', lw=4) >>> plt.vlines([x[iplus]], cdfs[iplus], ecdfs[iplus+1], color='r', linestyle='dashed', lw=4) >>> plt.show()
相關用法
- Python SciPy special.kolmogi用法及代碼示例
- Python SciPy special.ker用法及代碼示例
- Python SciPy special.k0e用法及代碼示例
- Python SciPy special.kvp用法及代碼示例
- Python SciPy special.kve用法及代碼示例
- Python SciPy special.k1e用法及代碼示例
- Python SciPy special.kv用法及代碼示例
- Python SciPy special.kn用法及代碼示例
- Python SciPy special.k1用法及代碼示例
- Python SciPy special.k0用法及代碼示例
- Python SciPy special.kei用法及代碼示例
- Python SciPy special.exp1用法及代碼示例
- Python SciPy special.expn用法及代碼示例
- Python SciPy special.ncfdtri用法及代碼示例
- Python SciPy special.gamma用法及代碼示例
- Python SciPy special.y1用法及代碼示例
- Python SciPy special.y0用法及代碼示例
- Python SciPy special.ellip_harm_2用法及代碼示例
- Python SciPy special.i1e用法及代碼示例
- Python SciPy special.smirnovi用法及代碼示例
- Python SciPy special.ynp_zeros用法及代碼示例
- Python SciPy special.j1用法及代碼示例
- Python SciPy special.logsumexp用法及代碼示例
- Python SciPy special.expit用法及代碼示例
- Python SciPy special.polygamma用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.special.kolmogorov。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。