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


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