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


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


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

用法:

scipy.stats.ks_1samp(x, cdf, args=(), alternative='two-sided', method='auto')#

執行單樣本 Kolmogorov-Smirnov 擬合優度檢驗。

此測試將樣本的基本分布 F(x) 與給定的連續分布 G(x) 進行比較。有關可用的無效假設和替代假設的說明,請參見注釋。

參數

x array_like

iid 隨機變量的一維觀察值數組。

cdf 可調用的

用於計算 cdf 的 callable。

args 元組,序列,可選

分布參數,與 cdf 一起使用。

alternative {‘雙麵’,‘less’, ‘greater’},可選

定義原假設和備擇假設。默認為“雙麵”。請參閱下麵注釋中的說明。

method {‘auto’, ‘exact’, ‘approx’, ‘asymp’},可選

定義用於計算 p 值的分布。以下選項可用(默認為‘auto’):

  • ‘auto’ : selects one of the other options.

  • ‘exact’ : uses the exact distribution of test statistic.

  • ‘approx’ : approximates the two-sided probability with twice the one-sided probability

  • ‘asymp’: uses asymptotic distribution of test statistic

返回

資源:KstestResult

包含屬性的對象:

統計 浮點數

KS 檢驗統計量,D+、D- 或 D(兩者中的最大值)

p值 浮點數

One-tailed 或 two-tailed p 值。

statistic_location 浮點數

KS統計量對應的x值;即,在該觀察中測量經驗分布函數和假設的累積分布函數之間的距離。

statistic_sign int

如果 KS 統計量是經驗分布函數與假設累積分布函數 (D+) 之間的最大正差,則 +1;如果 KS 統計量是最大負差 (D-),則為 -1。

注意

可以使用替代參數選擇零和相應替代假設的三個選項。

  • 雙麵:原假設是兩個分布相同,對於所有 x,F(x)=G(x);另一種情況是它們不相同。

  • less:原假設是所有 x 的 F(x) >= G(x);另一種選擇是對於至少一個 x,F(x) < G(x)。

  • 更大:原假設是所有 x 的 F(x) <= G(x);另一種選擇是對於至少一個 x,F(x) > G(x)。

請注意,替代假設說明了CDF的基礎分布,而不是觀察值。例如,假設 x1 ~ F 和 x2 ~ G。如果所有 x 的 F(x) > G(x),則 x1 中的值往往小於 x2 中的值。

例子

假設我們希望檢驗樣本按照標準正態分布的原假設。我們選擇置信度為95%;也就是說,如果 p 值小於 0.05,我們將拒絕原假設並支持替代假設。

在測試均勻分布的數據時,我們希望原假設被拒絕。

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> stats.ks_1samp(stats.uniform.rvs(size=100, random_state=rng),
...                stats.norm.cdf)
KstestResult(statistic=0.5001899973268688, pvalue=1.1616392184763533e-23)

事實上,p 值低於我們的閾值 0.05,因此我們拒絕零假設,轉而支持默認的 “two-sided” 替代方案:數據不按照標準正態分布。

在測試標準正態分布的隨機變量時,我們期望數據在大多數情況下與原假設一致。

>>> x = stats.norm.rvs(size=100, random_state=rng)
>>> stats.ks_1samp(x, stats.norm.cdf)
KstestResult(statistic=0.05345882212970396, pvalue=0.9227159037744717)

正如預期的那樣,p 值 0.92 不低於我們的閾值 0.05,因此我們不能拒絕原假設。

然而,假設隨機變量按照正態分布進行分布,該正態分布向更大的值移動。在這種情況下,基礎分布的累積密度函數 (CDF) 往往是較少的比標準法線的 CDF。因此,我們期望原假設被拒絕alternative='less'

>>> x = stats.norm.rvs(size=100, loc=0.5, random_state=rng)
>>> stats.ks_1samp(x, stats.norm.cdf, alternative='less')
KstestResult(statistic=0.17482387821055168, pvalue=0.001913921057766743)

事實上,當 p 值小於我們的閾值時,我們拒絕零假設,轉而支持替代方案。

相關用法


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