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


Python dask.array.stats.chisquare用法及代碼示例


用法:

dask.array.stats.chisquare(f_obs, f_exp=None, ddof=0, axis=0)

計算 one-way 卡方檢驗。

此文檔字符串是從 scipy.stats.chisquare 複製的

可能存在與 Dask 版本的一些不一致之處。

卡方檢驗檢驗分類數據具有給定頻率的零假設。

參數

f_obsarray_like

在每個類別中觀察到的頻率。

f_exp數組,可選

每個類別中的預期頻率。默認情況下,假定類別具有相同的可能性。

ddofint 可選

“Delta 自由度”:調整p-value 的自由度。 p-value 使用自由度為 k - 1 - ddof 的卡方分布計算,其中 k 是觀察到的頻率數。 ddof 的默認值為 0。

axisint 或無,可選

f_obsf_exp 的廣播結果軸,沿該軸應用測試。如果軸為無,f_obs 中的所有值都被視為單個數據集。默認值為 0。

返回

chisq浮點數或 ndarray

卡方檢驗統計量。如果 axis 為 None 或 f_obsf_exp 為一維,則該值為浮點數。

p浮點數或 ndarray

測試的p-value。如果 ddof 和返回值 chisq 是標量,則該值是浮點數。

注意

當每個類別中觀察到的或預期的頻率太小時,此測試無效。一個典型的規則是所有觀察到的和預期的頻率至少應為 5。根據 [3] ,建議樣本總數大於 13,否則應使用精確檢驗(如巴納德精確檢驗)因為他們不會過度拒絕。

此外,觀察到的頻率和預期頻率的總和必須相同才能使測試有效;如果總和在 1e-8 的相對容差範圍內不一致,則 chisquare 會引發錯誤。

默認自由度 k-1 適用於沒有估計分布參數的情況。如果通過有效最大似然估計 p 個參數,則正確的自由度為 k-1-p。如果以不同的方式估計參數,則自由度可以在 k-1-p 和 k-1 之間。但是,漸近分布也可能不是卡方,在這種情況下,此檢驗不合適。

參考

1

洛瑞,理查德。 “推論統計的概念和應用”。第 8 章。https://web.archive.org/web/20171022032306/http://vassarstats.net:80/textbook/ch8pt1.html

2

“卡方檢驗”,https://en.wikipedia.org/wiki/Chi-squared_test

3

皮爾遜,卡爾。 “在相關變量係統的情況下,給定係統與可能的偏差的標準是可以合理地假設它是從隨機抽樣中產生的”,哲學雜誌。係列 5. 50 (1900),第 157-175 頁。

例子

當僅給出f_obs 時,假設預期頻率是均勻的,並且由觀察到的頻率的平均值給出。

>>> from scipy.stats import chisquare  
>>> chisquare([16, 18, 16, 14, 12, 12])  
(2.0, 0.84914503608460956)

使用f_exp 可以給出預期頻率。

>>> chisquare([16, 18, 16, 14, 12, 12], f_exp=[16, 16, 16, 16, 16, 8])  
(3.5, 0.62338762774958223)

f_obs 為二維時,默認情況下測試應用於每一列。

>>> obs = np.array([[16, 18, 16, 14, 12, 12], [32, 24, 16, 28, 20, 24]]).T  
>>> obs.shape  
(6, 2)
>>> chisquare(obs)  
(array([ 2.        ,  6.66666667]), array([ 0.84914504,  0.24663415]))

通過設置 axis=None ,將測試應用於數組中的所有數據,相當於將測試應用於展平數組。

>>> chisquare(obs, axis=None)  
(23.31034482758621, 0.015975692534127565)
>>> chisquare(obs.ravel())  
(23.31034482758621, 0.015975692534127565)

ddof 是對默認自由度的更改。

>>> chisquare([16, 18, 16, 14, 12, 12], ddof=1)  
(2.0, 0.73575888234288467)

p-values 的計算是通過使用 ddof 廣播卡方統計量來完成的。

>>> chisquare([16, 18, 16, 14, 12, 12], ddof=[0,1,2])  
(2.0, array([ 0.84914504,  0.73575888,  0.5724067 ]))

f_obsf_exp 也被廣播。下麵f_obs的形狀為(6,),f_exp的形狀為(2, 6),所以f_obsf_exp的廣播結果的形狀為(2, 6)。為了計算所需的卡方統計量,我們使用 axis=1

>>> chisquare([16, 18, 16, 14, 12, 12],  
...           f_exp=[[16, 16, 16, 16, 16, 8], [8, 20, 20, 16, 12, 12]],
...           axis=1)
(array([ 3.5 ,  9.25]), array([ 0.62338763,  0.09949846]))

相關用法


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