本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。