scipy.stats.cramervonmises

scipy.stats.cramervonmises(rvs, cdf, args=())[源代码]

执行单样本Cramér-von Mises测试以确定拟合优度。

这执行对累积分布函数(CDF)的拟合优度的测试 \(F\) 与经验分布函数相比 \(F_n\) 观察到的随机变量 \(X_1, ..., X_n\) 假设它们是独立且同分布的 ([1]) 。零假设是 \(X_i\) 有累计分布 \(F\)

参数
rvsarray_like

随机变量观测值的一维阵列 \(X_i\)

cdf字符串或可调用

累积分布函数 \(F\) 用来检验观察结果的。如果是字符串,则应为中的分发名称 scipy.stats 。如果是可调用对象,则该可调用对象用于计算CDF: cdf(x, *args) -> float

args元组,可选

分布参数。这些都假定是已知的;请参阅注释。

退货
res具有属性的对象
统计数据浮动

克拉梅尔-冯·米塞斯统计。

p值浮动

p值。

注意事项

1.6.0 新版功能.

p值依赖于公式1.8给出的近似值。 [2]. 重要的是要记住,只有当测试一个简单的假设时,即参考分布的参数是已知的,p值才是准确的。如果从数据中估计参数(复合假设),则计算出的p值是不可靠的。

参考文献

1

克拉梅尔-冯·米塞斯标准,维基百科,https://en.wikipedia.org/wiki/Cram%C3%A9r%E2%80%93von_Mises_criterion

2

刘晓明(1996).北京:北京:北京.Cramér-von Mises统计量的精确渐近分布“皇家统计学会学报”,第221-234页。

示例

假设我们希望测试由以下组件生成的数据 scipy.stats.norm.rvs 实际上,都是从标准正态分布中提取出来的。我们选择α=0.05的显著性水平。

>>> 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.49121480855028343, 0.04189256516661377)

p值0.79超过了我们选择的显著性水平,因此我们不排斥观测样本来自标准正态分布的零假设。

现在假设我们希望检查移位2.1的相同样本是否与从均值为2的正态分布中提取的样本一致。

>>> y = x + 2.1
>>> res = stats.cramervonmises(y, 'norm', args=(2,))
>>> res.statistic, res.pvalue
(0.07400330012187435, 0.7274595666160468)

在这里,我们使用了 args 关键字来指定平均值 (loc )的正态分布来测试数据。这等同于下面的示例,在该示例中,我们创建一个平均值为2.1的冻结正态分布,然后将其 cdf 方法作为参数。

>>> frozen_dist = stats.norm(loc=2)
>>> res = stats.cramervonmises(y, frozen_dist.cdf)
>>> res.statistic, res.pvalue
(0.07400330012187435, 0.7274595666160468)

在任何一种情况下,我们都会拒绝从均值为2(默认方差为1)的正态分布中提取观察样本的零假设,因为p值0.04小于我们选择的显著性水平。