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


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


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

用法:

scipy.stats.cramervonmises(rvs, cdf, args=())#

執行單樣本 Cramér-von Mises 檢驗擬合優度。

這將測試累積分布函數 (cdf) 與觀察到的隨機變量 的經驗分布函數 的擬合優度,這些隨機變量假定為獨立且同分布 ([1]) .零假設是 具有累積分布

參數

rvs array_like

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

cdf str 或可調用

用於測試觀察結果的累積分布函數 。如果是字符串,它應該是 scipy.stats 中的分布名稱。如果是可調用對象,則該可調用對象用於計算 cdf:cdf(x, *args) -> float

args 元組,可選

分布參數。假設這些是已知的;見注釋。

返回

res 具有屬性的對象
統計 浮點數

Cramér-von Mises 統計量。

p值 浮點數

p 值。

注意

p 值依賴於 [2] 中方程 1.8 給出的近似值。重要的是要記住,隻有在測試一個簡單的假設(即參考分布的參數已知)時,p 值才是準確的。如果根據數據估計參數(複合假設),則計算出的 p 值不可靠。

參考

[1]

Cramér-von Mises 標準,維基百科,https://en.wikipedia.org/wiki/Cram%C3%A9r%E2%80%93von_Mises_criterion

[2]

Csörgő, S. 和 Faraway, J. (1996)。 Cramér-von Mises 統計的精確和漸近分布。皇家統計學會雜誌,第 221-234 頁。

例子

假設我們希望測試 scipy.stats.norm.rvs 生成的數據實際上是否來自標準正態分布。我們選擇顯著性水平 alpha=0.05

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x = stats.norm.rvs(size=500, random_state=rng)
>>> res = stats.cramervonmises(x, 'norm')
>>> res.statistic, res.pvalue
(0.1072085112565724, 0.5508482238203407)

p 值超出了我們選擇的顯著性水平,因此我們不拒絕觀察樣本來自標準正態分布的原假設。

現在假設我們希望檢查移動 2.1 的相同樣本是否與從均值為 2 的正態分布中抽取一致。

>>> y = x + 2.1
>>> res = stats.cramervonmises(y, 'norm', args=(2,))
>>> res.statistic, res.pvalue
(0.8364446265294695, 0.00596286797008283)

這裏我們使用了參數關鍵字來指定平均值 (loc) 的正態分布來測試數據。這等價於以下,其中我們創建一個均值為 2.1 的凍結正態分布,然後將其傳遞給cdf方法作為參數。

>>> frozen_dist = stats.norm(loc=2)
>>> res = stats.cramervonmises(y, frozen_dist.cdf)
>>> res.statistic, res.pvalue
(0.8364446265294695, 0.00596286797008283)

無論哪種情況,我們都會拒絕零假設,即觀察到的樣本是從平均值為 2(默認方差為 1)的正態分布中抽取的,因為 p 值小於我們選擇的顯著性水平。

相關用法


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