问题标签 [kolmogorov-smirnov]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1687 浏览

python - 获得 kolmogorov-smirnov 检验所需的临界值

我说的是检索这个表的值媒体一个python公式

https://www.soest.hawaii.edu/GG/FACULTY/ITO/GG413/K_S_Table_one_Sample.pdf

我一直在寻找一段时间,但 scipy 函数不寻找这个值,而且我在这里很困惑。

我一直在寻找内置公式的 scipy 内部,但没有成功。例如,在上述表格中,D[0.1, 10] == 0.36866。然而 scipy.stats.kstest 不会返回相同的值,无论我使用多少数据。

0 投票
0 回答
112 浏览

python - SPSS 与 python 和 R 中 kolmogorov-smirnov 均匀分布的结果冲突

我尝试用不同的包在同一个数据文件上重现相同的结果。

为什么spss给出不同的结果?

Python 代码:scipy.stats.kstest(x, 'norm').
R 代码:ks.test(x,"pnorm").
SPSS 代码:NPAR TESTS /K-S(NORMAL)=x.
可以复制相同的结果,选择:Analyze->Nonparametric Tests->Legacy Dialogs->1-Sample KS

0 投票
0 回答
183 浏览

python - 离散 Kolmogorov-Smirnov 测试:与纯 R 相比,使用 rpy2 时得到错误值

我正在尝试使用dgof来自 R 的模块,在 Python 3 中通过rpy2.

我在 python 中使用它:

很有魅力(即我可以导入它,这本身就是一个巨大的胜利)。现在作为测试,我想从 API 文档中重现示例结果。

为了清楚起见,在纯 R 中,示例是(并且要清楚,这个函数不是stats::ks.test(rep(1, 3), ecdf(1:3))native dgof):

这导致 p 值0.07407(要验证这一点,请单击此链接中的绿色“运行此代码”按钮)。注意:

在 Python 中,复制的示例是:

但在示例中,我找到的 p 值为0.517551. KS 统计量本身已正确计算。但是为什么模拟的 p 值不同呢?再次查看dgof链接中示例的输出,按一下Run this example,您将看到我所指的数字(上面转载)。

0 投票
1 回答
1211 浏览

python - 使用 rpy2 将 R 包安装/导入到 python 中,导入/忽略有问题的数据包

这是我正在尝试做的事情:

  1. 我想使用离散的 Kolmogorov-Smirov Goodness-of-fit test,目前仅在 R 中可用。此外,R 也有正常的 KS 测试——我不想使用这个测试。
  2. 我是 python 用户,所以需要将离散 KS 测试移植到 python,为此我正在尝试使用 rpy2.

我面临的问题,正如此处更详细的统计信息所详述的那样,rpy2似乎用标准版本替换了导入的离散测试。我知道这一点,因为它在测试时不会产生正确的答案。

迄今为止的尝试

结果是

好的,到目前为止一切顺利,应该已经安装了它。所以让我们导入它:

真的进口了吗?让我们来看看:

返回

好吧,这很奇怪,但也许它仍然有效,让我们看看(这与 R 端使用的示例完全相同,应该返回D = 0.66667, p-value = 0.07407):

返回

如果这对你没有任何意义,那很好,你需要知道的是它是错误的。这似乎是错误的,因为不知何故,ks_test正在加载标准以代替离散的标准(我们在上面列表中的第 2 项中讨论的标准)。让我们通过加载标准库和 KS 测试来验证:

返回

所以这很酷 - 有谁知道为什么会发生这种情况?

注意: 这个问题与我的另一个问题有关,但在 python 方面有更多细节。

0 投票
0 回答
89 浏览

goodness-of-fit - 如何对 R 中的广义双曲分布进行 Kolmogorov Smirnov 检验?

我想对广义双曲线分布进行 Kolmogor Smirnov 检验。我使用有关股票和“gyp”包的数据。我正在使用的代码是

Theta3 <- ghyp(lambda=-0.68, alpha.bar=0.36, mu=0.00003, sigma=-0.0084,gamma=0.02) ks.test(data1$MSFT, "pghyp", Theta3)

但我收到以下消息: ghypCheckPars(param) 中的错误:(列表)对象不能被强制输入“双”

请你帮助我好吗?

0 投票
1 回答
552 浏览

r - R包中的Kolmogorv-Smirnov测试(dgof)-离散案例

我有以下数据,

我想使用该dgof包在 R 中执行 KS 测试,但不知道如何使用它。我还用二项式和泊松分布拟合了上述数据。

现在,我想使用 KS 检验来确定哪个模型(二项式或泊松)代表数据。

谢谢你。

0 投票
1 回答
3191 浏览

python - 如何在 Python 中实现 KS-Test

scipy.stats.kstest(rvs, cdf, N)可以对数据集执行 KS-Test rvs。它测试数据集是否遵循概率分布,该分布cdf在此方法的参数中指定。

现在考虑一个N=4800样本数据集。我已经对这些数据执行了 KDE,因此有一个估计的 PDF。这个 PDF 看起来非常像双峰分布。在绘制估计的 PDF 和曲线拟合双峰分布时,这两个图几乎相同。拟合双峰分布的参数为(scale1, mean1, stdv1, scale2, mean2, stdv2): [0.6 0.036 0.52, 0.23 1.25 0.4]

我如何申请scipy.stats.kstest测试我的估计 PDF 是否为双峰分布?作为我的零假设,我声明估计的 PDF 等于以下 PDF:

x_grid只是一个向量,其中包含我评估估计 PDF 的 x 值。所以 的每个条目pdf都有一个对应的值x_grid。可能是我的计算hypoCdf不正确。也许len(x_grid)我应该除以而不是除以np.sum(hypoDist)

挑战:cdf参数 ofkstest不能指定为双峰。我也不能将其指定为hypoDist.

如果我想测试我的数据集是否是高斯分布的,我会写:

measurementError是我在其上执行 KDE 的数据集。这返回: statistic=0.459, pvalue=0.0 对我来说,pvalue 为 0.0 有点烦人

0 投票
1 回答
2670 浏览

r - 如何按组在 R 中的数据框中执行 KS.test

我想在 R 中为下面的示例数据帧“数据”执行两个样本 Kolmogorov-Smirnov (KS) 测试:

要在 2 个单独的列之间执行 KS 测试,代码如下:

但是,我想按列和按组执行此操作。例如,为 t.test 或 wilcox.test 执行此操作很容易,因为您可以编码为 t.test(y1,y2) 或 t.test(y~x) # 其中 y 是数字,x 是二进制因素 但是,当涉及到二进制因素时,没有 ks.test 的代码。有人能帮忙吗?

最终,我想为所有蛋白质的整个数据框执行此操作,因为我可以成功地进行 t 检验,但想为 ks.test 执行如下操作:

任何帮助表示赞赏。提前谢谢你。

0 投票
2 回答
523 浏览

python - kstest 给出奇怪的 p 值

我想检查概率是否来自经验 CDF 指定的分布。kstest给出我认为错误的 p 值;怎么了?

我编写了一个测试函数来验证 p 值。我正在比较来自两个相同分布的样本数组,并检查从kstestks_2samp函数获得的 p 值。由于原假设为真(分布相同),p 值必须均匀分布在 [0,1] 上,换句话说,我必须看到错误发现率等于使用的 p 值阈值。但是,这仅适用于ks_2samp函数给出的 p 值。

输出是

FDR for p-value threshold 0.05 : kstest: 0.287, ks_2samp: 0.051

我希望两个 fdr 值都接近 0.05,但是 给出的值kstest很奇怪(太高 - 换句话说,kstest经常坚持认为数据来自不同的分布)。

我错过了什么吗?

更新

正如下面所回答的,原因是kstest它不能很好地处理由小样本生成的 ecdf……唉,我必须通过也不是很大的样本来生成经验 CDF。现在,作为一种快速解决方法,我使用一些“混合”方法:

因此,它可以将用于生成 ECDF 的样本数量作为参数。也许这并不完全是严格的,到目前为止,这是我能想到的最好的。在大小均为 100 的 data1 和 data2 上进行测试时,它给出

FDR for p-value threshold 0.05 : kstest: 0.268, ks_2samp: 0.049, my_ks_test: 0.037

0 投票
2 回答
738 浏览

python - Kolmogorov-Smirnov (ks_2samp) p 值与预期不符 - 测试或理解错误?

语境

我正在使用scipy's ks_samp来应用 Kolmogorov-Smirnov-test。

我使用的数据是双重的:

  1. 我有一个数据集d1,它是应用于机器学习模型预测的评估指标m1(即MASE - Mean Average Scaled Error)。这些大约是 6.000 个数据点,这意味着使用 6.000 个预测的 MASE 结果m1
  2. 我的第二个数据集与我使用的第二个模型的差异d2类似,与.d1m2m1

两个数据集的分布如下:

d1
d1
d2
d2

可以看出,分布看起来非常相似。我想通过 Kolmogorov-Smirnov 检验来强调这一事实。但是,我应用的结果k2_samp表明相反:

据我了解,这样的 pvalue 表明分布不同(拒绝 H0)。但从图像上可以看出,它绝对应该。

问题

  1. 我是否误解了 Kolmogorov-Smirnov 的用法,并且此测试不适用于用例/分发类型?
  2. 如果第一个可以回答是,我还有什么选择?

编辑

下面是叠加图。从交叉验证的答案和评论中得出结论,我认为“中间”的分歧可能是原因,因为 KS 在那里很敏感。
覆盖