scipy.stats.cramervonmises_2samp

scipy.stats.cramervonmises_2samp(x, y, method='auto')[源代码]

执行两个样本的Cramér-von Mises拟合优度测试。

这是Cramér-von Mises测试的两个样本版本 ([1]) :两个独立样本 \(X_1, ..., X_n\)\(Y_1, ..., Y_m\) ,零假设是样本来自相同的(未指定的)连续分布。

参数
xarray_like

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

yarray_like

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

method{‘auto’,‘渐近’,‘精确’},可选

用于计算p值的方法,有关详细信息,请参阅注释。默认值为‘auto’。

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

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

p值浮动

p值。

注意事项

1.7.0 新版功能.

该统计量是根据中的公式9计算的 [2]. p值的计算取决于关键字 method

  • asymptotic 用检验统计量的极限分布近似p值。

  • exact :精确的p值是通过枚举测试统计数据的所有可能组合来计算的,请参见 [2].

即使对于中等样本量,精确的计算也会非常慢,因为组合的数量随着样本量的增加而迅速增加。如果 method=='auto' ,如果两个样本都包含少于10个观测值,则使用精确方法,否则使用渐近分布。

如果基础分布不是连续的,则p值可能是保守的(中的第6.2节 [3]) 。在对数据进行排序以计算测试统计量时,如果存在平局,则使用中级。

参考文献

1

https://en.wikipedia.org/wiki/Cramer-von_Mises_criterion

2(1,2)

安德森,T.W.(1962)。关于两样本Cramer-von-Mises准则的分布。“数理统计年鉴”,第1148-1159页。

3

“实用非参数统计”,1971年。

示例

假设我们希望测试由以下组件生成的两个样本 scipy.stats.norm.rvs 具有相同的分布。我们选择α=0.05的显著性水平。

>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x = stats.norm.rvs(size=100, random_state=rng)
>>> y = stats.norm.rvs(size=70, random_state=rng)
>>> res = stats.cramervonmises_2samp(x, y)
>>> res.statistic, res.pvalue
(0.29376470588235293, 0.1412873014573014)

p值超过了我们选择的显著性水平,因此我们不拒绝零假设,即观察到的样本来自相同的分布。

对于小样本量,可以计算精确的p值:

>>> x = stats.norm.rvs(size=7, random_state=rng)
>>> y = stats.t.rvs(df=2, size=6, random_state=rng)
>>> res = stats.cramervonmises_2samp(x, y, method='exact')
>>> res.statistic, res.pvalue
(0.197802197802198, 0.31643356643356646)

即使样本量很小,基于渐近分布的p值也是一个很好的近似值。

>>> res = stats.cramervonmises_2samp(x, y, method='asymptotic')
>>> res.statistic, res.pvalue
(0.197802197802198, 0.2966041181527128)

与该方法无关,在该示例中,人们不会在所选择的显著性水平上拒绝零假设。