如何解决ks_2samp 返回 p 值为 1.0
我有两个 "echo"
DataFrame pandas
和 data1
,并且两个 DataFrame 都有一个整数列 data2
,其中填充了从 1 到 50 的不同值。
h
的样本大小约为 55000,而 data1
的样本大小约为 8000。由于它们的大小,我无法上传确切的数据,但以下是我的直方图由 data2
与 data1['h']
创建:
(为了更容易观察,我应用了 data2['h']
)
为了比较分布,我使用了 matplotlib.yscale('log')
中的 ks_2samp
。我组成了一个双尾测试和两个单尾测试来观察两个方向的优势:
scipy.stats
结果如下:
# h indices are significantly different
print(ks_2samp(data1['h'],data2['h']))
# data1 h indices are greater
print(ks_2samp(data1['h'],data2['h'],alternative='greater'))
# data2 h indices are greater
print(ks_2samp(data1['h'],alternative='less'))
我之前为其他项目练习过 Ks_2sampResult(statistic=0.1293719140156916,pvalue=3.448839769104661e-105)
Ks_2sampResult(statistic=0.0,pvalue=1.0)
Ks_2sampResult(statistic=0.1293719140156916,pvalue=1.5636837258561576e-105)
,但看到如此晦涩的 p 值对我来说还是很新鲜的。尤其是第二个结果,让我怀疑我是否在错误地执行测试,因为 p 值为 1.0 似乎非常荒谬。
我研究了一些类似的问题,包括以下 StackOverflow 问题 (scipy p-value returns 0.0),但不幸的是,这个问题与尚未报告的任何问题都不相同。
我很想获得任何见解来解释此类结果或修正我的方法。
解决方法
问题似乎不在于您的代码,而在于您的解释。我们可以看到 data1 向右移动,因此我构建了正态分布,绘制了它们的直方图,并运行了 ksmirnov 检验以表明您得到的结果符合我们的预期。
设置:
from scipy.stats import ks_2samp
from numpy import random
import pandas as pd
from matplotlib import pyplot
random.seed(1)
n=4000
l1=[random.normal(1) for x in range(n)]
l2=[random.normal() for x in range(n)]
df=pd.DataFrame(list(zip(l1,l2)),columns=['1','2'])
测试:
print(ks_2samp(df['1'],df['2']))
print(ks_2samp(df['1'],df['2'],alternative='greater'))
print(ks_2samp(df['1'],alternative='less'))
返回:
KstestResult(statistic=0.3965,pvalue=3.8418108959960396e-281)
KstestResult(statistic=0.0,pvalue=1.0)
KstestResult(statistic=0.3965,pvalue=1.9209054479980054e-281)
图形表示:
bins=50
pyplot.hist(l1,bins,alpha=.5,label='Sample 1')
pyplot.hist(l2,label='Sample 2')
pyplot.legend()
pyplot.show
这里发生了什么?
第一个 KS 检验拒绝了分布相等的原假设,并且它以高置信度执行此操作(p 值基本上为零)。第二个告诉我们,我们不能拒绝样本 1 大于样本 2 的假设。从我们所知,这是显而易见的 - 样本 1 与样本 2 来自同一总体,但向右移动。第三个再次拒绝零假设,但这个 h0 是样本 1 小于样本 2。请注意,这里的 pvalue 是最小的 - 样本 1 小于样本 2 的可能性小于它们从等效中拉出的可能性分布。这再次符合预期。
还要注意,在这个例子中,两个分布都是正态分布并且非常相似。但是 KS 检验告诉您“总体可能在中位数、变异性或分布形状方面存在差异”(reference)。在这里,它们的中位数不同,但形状不同,这是检测到的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。