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]) 。在对数据进行排序以计算测试统计量时,如果存在平局,则使用中级。
参考文献
示例
假设我们希望测试由以下组件生成的两个样本
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)
与该方法无关,在该示例中,人们不会在所选择的显著性水平上拒绝零假设。