本文簡要介紹 python 語言中 scipy.stats.power_divergence
的用法。
用法:
scipy.stats.power_divergence(f_obs, f_exp=None, ddof=0, axis=0, lambda_=None)#
Cressie-Read 功率散度統計和擬合優度檢驗。
此函數使用Cressie-Read 功率散度統計量測試分類數據具有給定頻率的零假設。
- f_obs: array_like
在每個類別中觀察到的頻率。
- f_exp: 數組,可選
每個類別中的預期頻率。默認情況下,假定類別具有相同的可能性。
- ddof: 整數,可選
“Delta 自由度”:對 p 值自由度的調整。 p 值是使用卡方分布計算的
k - 1 - ddof
自由度,其中k是觀察到的頻率數。默認值為ddof為 0。- axis: int 或無,可選
f_obs 和 f_exp 的廣播結果軸,沿該軸應用測試。如果 axis 為 None,則 f_obs 中的所有值都被視為單個數據集。默認值為 0。
- lambda_: float 或 str,可選
Cressie-Read 功率散度統計中的功率。默認值為 1。為方便起見,可以為 lambda_ 分配以下字符串之一,在這種情況下使用相應的數值:
"pearson"
(值 1)Pearson 的卡方統計量。在這種情況下,該函數等效於
chisquare
。
"log-likelihood"
(值 0)對數似然比。也稱為G-test [3]。
"freeman-tukey"
(值-1/2)Freeman-Tukey 統計。
"mod-log-likelihood"
(值-1)修改後的對數似然比。
"neyman"
(值-2)內曼統計。
"cressie-read"
(值 2/3)[5] 中推薦的功率。
- 資源:Power_divergenceResult
包含屬性的對象:
- 統計 浮點數或 ndarray
Cressie-Read 功率散度檢驗統計量。如果 axis 為 None 或 f_obs 和 f_exp 為一維,則該值為浮點數。
- p值 浮點數或 ndarray
檢驗的 p 值。該值為浮點數,如果ddof和返回值
stat
是標量。
參數 ::
返回 ::
注意:
當每個類別中觀察到的或預期的頻率太小時,此測試無效。一個典型的規則是所有觀察到的和預期的頻率至少應該是 5。
此外,觀察到的頻率和預期頻率的總和必須相同才能使測試有效;如果總和在
1e-8
的相對容差範圍內不一致,則power_divergence
會引發錯誤。當 lambda_ 小於零時,統計公式涉及除以 f_obs,因此如果 f_obs 中的任何值為 0,則可能會生成警告或錯誤。
同樣,如果 f_exp 中的任何值在 lambda_ >= 0 時為零,則可能會生成警告或錯誤。
默認自由度 k-1 適用於沒有估計分布參數的情況。如果通過有效最大似然估計 p 個參數,則正確的自由度為 k-1-p。如果以不同的方式估計參數,則自由度可以在 k-1-p 和 k-1 之間。但是,漸近分布也可能不是卡方,在這種情況下,此檢驗不合適。
此函數處理掩碼數組。如果 f_obs 或 f_exp 的元素被屏蔽,則該位置的數據將被忽略,並且不計入數據集的大小。
參考:
[1]洛瑞,理查德。 “推論統計的概念和應用”。第 8 章。https://web.archive.org/web/20171015035606/http://faculty.vassar.edu/lowry/ch8pt1.html
[3]“G-test”、https://en.wikipedia.org/wiki/G-test
[4]Sokal, R. R. 和 Rohlf, F. J. “生物測量學:生物學研究中統計的原理和實踐”,紐約:弗裏曼 (1981)
[5]Cressie, N. 和 Read, T. R. C.,“多項式 Goodness-of-Fit 測試”,J. Royal Stat。社會黨。 B係列,卷。 46,第 3 期(1984 年),第 440-464 頁。
例子:
(有關更多示例,請參閱
chisquare
。)當僅給出 f_obs 時,假設預期頻率是均勻的並且由觀測頻率的平均值給出。這裏我們執行G-test(即使用對數似然比統計):
>>> import numpy as np >>> from scipy.stats import power_divergence >>> power_divergence([16, 18, 16, 14, 12, 12], lambda_='log-likelihood') (2.006573162632538, 0.84823476779463769)
可以使用 f_exp 參數給出預期頻率:
>>> power_divergence([16, 18, 16, 14, 12, 12], ... f_exp=[16, 16, 16, 16, 16, 8], ... lambda_='log-likelihood') (3.3281031458963746, 0.6495419288047497)
當 f_obs 是 2-D 時,默認情況下測試應用於每一列。
>>> obs = np.array([[16, 18, 16, 14, 12, 12], [32, 24, 16, 28, 20, 24]]).T >>> obs.shape (6, 2) >>> power_divergence(obs, lambda_="log-likelihood") (array([ 2.00657316, 6.77634498]), array([ 0.84823477, 0.23781225]))
通過設置
axis=None
,將測試應用於數組中的所有數據,相當於將測試應用於展平數組。>>> power_divergence(obs, axis=None) (23.31034482758621, 0.015975692534127565) >>> power_divergence(obs.ravel()) (23.31034482758621, 0.015975692534127565)
ddof 是對默認自由度所做的更改。
>>> power_divergence([16, 18, 16, 14, 12, 12], ddof=1) (2.0, 0.73575888234288467)
p 值的計算是通過使用 ddof 廣播檢驗統計量來完成的。
>>> power_divergence([16, 18, 16, 14, 12, 12], ddof=[0,1,2]) (2.0, array([ 0.84914504, 0.73575888, 0.5724067 ]))
f_obs和f_exp也在播出。在下麵的,f_obs具有形狀 (6,) 和f_exp有形狀 (2, 6),所以廣播的結果f_obs和f_exp具有形狀 (2, 6)。為了計算所需的卡方統計量,我們必須使用
axis=1
:>>> power_divergence([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]))
相關用法
- Python SciPy stats.powerlognorm用法及代碼示例
- Python SciPy stats.powerlaw用法及代碼示例
- Python SciPy stats.powernorm用法及代碼示例
- Python SciPy stats.poisson用法及代碼示例
- Python SciPy stats.poisson_means_test用法及代碼示例
- Python SciPy stats.pointbiserialr用法及代碼示例
- Python SciPy stats.page_trend_test用法及代碼示例
- Python SciPy stats.pareto用法及代碼示例
- Python SciPy stats.planck用法及代碼示例
- Python SciPy stats.ppcc_plot用法及代碼示例
- Python SciPy stats.probplot用法及代碼示例
- Python SciPy stats.ppcc_max用法及代碼示例
- Python SciPy stats.pmean用法及代碼示例
- Python SciPy stats.pearson3用法及代碼示例
- Python SciPy stats.pearsonr用法及代碼示例
- Python SciPy stats.percentileofscore用法及代碼示例
- Python SciPy stats.permutation_test用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy stats.genpareto用法及代碼示例
- Python SciPy stats.skewnorm用法及代碼示例
- Python SciPy stats.cosine用法及代碼示例
- Python SciPy stats.norminvgauss用法及代碼示例
- Python SciPy stats.directional_stats用法及代碼示例
- Python SciPy stats.invwishart用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.power_divergence。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。