当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.array.stats.power_divergence用法及代码示例


用法:

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

Cressie-Read 功率散度统计和拟合优度检验。

此文档字符串是从 scipy.stats.power_divergence 复制而来的。

可能存在与 Dask 版本的一些不一致之处。

此函数使用Cressie-Read 功率散度统计量测试分类数据具有给定频率的零假设。

参数

f_obsarray_like

在每个类别中观察到的频率。

f_exp数组,可选

每个类别中的预期频率。默认情况下,假定类别具有相同的可能性。

ddof整数,可选

“Delta 自由度”:调整p-value 的自由度。 p-value 使用自由度为 k - 1 - ddof 的卡方分布计算,其中 k 是观察到的频率数。 ddof 的默认值为 0。

axisint 或 None,可选

f_obsf_exp 的广播结果轴,沿该轴应用测试。如果轴为无,f_obs 中的所有值都被视为单个数据集。默认值为 0。

lambda_float 或 str,可选

Cressie-Read 功率散度统计中的功率。默认值为 1。为方便起见,可以为 lambda_ 分配以下字符串之一,在这种情况下使用相应的数值:

String              Value   Description
"pearson"             1     Pearson's chi-squared statistic.
                            In this case, the function is
                            equivalent to `stats.chisquare`.
"log-likelihood"      0     Log-likelihood ratio. Also known as
                            the G-test [R5ed189a69e5c-3]_.
"freeman-tukey"      -1/2   Freeman-Tukey statistic.
"mod-log-likelihood" -1     Modified log-likelihood ratio.
"neyman"             -2     Neyman's statistic.
"cressie-read"        2/3   The power recommended in [R5ed189a69e5c-5]_.

返回

statistic浮点数或 ndarray

Cressie-Read 功率散度检验统计量。如果 axis 为 None 或者如果`f_obsf_exp 为一维,则该值为浮点数。

pvalue浮点数或 ndarray

测试的p-value。如果 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_obsf_exp 的元素被屏蔽,则该位置的数据将被忽略,并且不计入数据集的大小。

参考

1

洛瑞,理查德。 “推论统计的概念和应用”。第 8 章。https://web.archive.org/web/20171015035606/http://faculty.vassar.edu/lowry/ch8pt1.html

2

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

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(即使用 log-likelihood 比率统计):

>>> 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 为二维时,默认情况下测试应用于每一列。

>>> 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-values 的计算是通过使用 ddof 广播测试统计信息来完成的。

>>> power_divergence([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

>>> 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]))

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.stats.power_divergence。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。