问题标签 [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 回答
37 浏览

r - 计算 R 中多项研究的统计量

我有一个数据集,我想在其中应用几个测试,例如 KS 两个样本。因此,我试图找到一种可以将 KS 两个样本测试应用于所有样本的算法。基本思想是:

假设我有一个包含这些观察结果的数据集:

我可以通过以下方式将 KS 测试应用于每项研究:

这将产生 10x10 p 值,我的目标是将其用作距离的度量。

所以我正在寻找一种算法,它可以对 nxn 个样本运行 KS 测试,然后在 anxn 矩阵中输出 p 值。

0 投票
0 回答
855 浏览

python - 执行 Kolmogorov-Smirnov 测试的拟合优度 - scipy

我正在尝试对我的数据和估计分布执行 KS 测试拟合优度。剧情是这样的 在此处输入图像描述

我正在使用的代码和结果如下:

sp.stats.kstest(df['col'], 'norm', args = (mean, sd), N = 1000000)

KstestResult(统计=0.06905359838747682, pvalue=0.0)

  • 从 df 我正在获取我的数据点。
  • '规范',因为我假设正态分布。
  • args 是一个元组
  • 我使用我的数据集估计的理论分布函数的参数。
  • N = 1000000 作为样本大小。

当然,拟合并不完美,但我不明白为什么 p 值只有 0.0。我是在使用该功能做错了什么还是不合适?我希望 p 值很小,甚至小到 0.01 或 0.000000536 或其他任何值,但不会完全为零。

任何想法有什么问题或可以做些什么来使它工作?

顺便说一句:原始数据最初是对数正态分布的(查看原始数据,在图中是对数转换后)

0 投票
1 回答
208 浏览

r - 聚类的不确定性

我正在对包含 30 项研究的数据集应用层次聚类。我的数据集的一个例子是:

我使用以下代码应用 kolmogorov-sminrov 测试的引导采样版本来计算距离矩阵d并应用“完整链接”算法。

这会在每项研究之间抽取 10,000 (KS) p 值。所以对于 s1 & s2, s1 & s3 .... s1 & s30, s2 & s3 .... s 29 & s30 并将概率存储到 30 x 30 矩阵中。

如果我通过简单地重新运行代码并将 p 值存储在另一个变量中并绘制一个树状图来重复这个过程,那么我将获得一个稍微不同的树状图,其中一些研究改变了位置。我附上了几个例子

一些差异是非常微妙的可视化,但高度略有变化,大集群的位置也发生了变化。我对两种类型的不确定性感兴趣:由于引导采样导致的不确定性,这是树状图试图显示的。

第二个是样本量的不确定性,即研究中的样本量如何影响聚类顺序。我想以某种方式可视化这一点,我唯一的猜测是删除一项研究并将新的树状图与原始树状图进行比较,然后手动查找差异,这将花费大量时间。

我还检查了pvclust包的层次聚类,但我认为它在我使用 KS 引导时不适用。

D1

D2

D3

0 投票
2 回答
1256 浏览

python - Kolmogorov Smirnov 检验 python 中的拟合优度

我正在尝试拟合分布。配件已完成,但我需要测量,以选择最佳型号。许多论文都使用 Kolomogorov-Smirnov (KS) 测试。我试图实现这一点,但我得到的 p 值结果非常低。

实施:

运行后,我得到如下值:

这些值是否合理?仍然可以选择最好的模型吗?最佳拟合模型是统计值最小的模型吗?

拟合图的图像

编辑:

我绘制了两个拟合分布的 CDF。 CDF

它们看起来非常合身。但我仍然得到那些小的 p 值。

0 投票
1 回答
537 浏览

python - 2 样本 KS 测试。CDF 或 PDF 作为输入?

我实施了 KS-Test 来测试哪些分布更适合组合在一起。此时,我将 CDF 作为输入,因为标准 KS-Test 涉及计算函数的 CDF 之间的最大差异。我只是想知道这是否是正确的方法。或者我应该使用 PDFS 作为输入?统计值和 p 值对我来说似乎很好。借助 KS 检验的临界值,我可以选择不应该拒绝的假设检验。

代码示例

0 投票
4 回答
1702 浏览

python - 如何使用适当的归一化从 Kolmogorov-Smirnov 测试(KS 测试)中获得正确的 p_values 和 ks_values?

我正在研究一个财务问题,我要实现一个函数,在每只股票的信号回报的正态分布之间使用 Kolmogorov-Smirnov 检验(KS 检验)。我要针对每只股票的信号回报在正态分布上运行 KS 测试,为了测试,我将使用scipy.stats.kstest来执行 KS 测试。

  • 建议我迭代groupby函数
  • 我只需要使用 pandas、numpy 和 scipy。

我的功能如下:

但是,我的回答与预期的输出不符。

输入是:

我的输出是:

预期的输出是:

有人告诉我在获得正确的 p_values 和 ks_values 之前使用正确的标准化,但我不明白这种正确的标准化意味着什么以及如何解决这个问题。有人可以帮忙吗??

0 投票
1 回答
8408 浏览

r - ks.test 和 ties 的问题

我有一个分布,例如:

d或者,dput格式中的向量。

当我应用 ks.test 时,:

这给出了以下警告:

警告消息:在 ks.test(d, "pgamma", shape = 3.178882, scale = 3.526563) 中:Kolmogorov-Smirnov 测试不应存在领带

我试过 put unique(d),但很明显我的数据减少了值,我不希望这种情况发生。
和网上的其他方式和例子一样,这个例子也有,但不同的是测试显示一些带有警告消息的结果,而不仅仅是没有值的消息ks.test

一些帮助?

0 投票
1 回答
796 浏览

python - 如何访问 sklearn 的 KDE 参数以进行 scipy 的 Kolmogorov-Smirnov 测试?

我有一个一维离散数据集。在这个集合上,我想用 sklearn 的内置函数进行核密度估计:

在 kde 的实例方法的帮助下score_samples,我能够绘制出对底层密度函数的合理估计:

用kde创建的pdf

我想使用这个分布来执行一个样本 KS 测试。我发现 scipy 已经实现了这个功能。在此处查看文档。它说:

scipy.stats.kstest(rvs, cdf, args=(), N=20, alternative='two-sided', mode='approx')

rvs:str、数组或可调用

如果是字符串,它应该是 scipy.stats 中的分布名称。如果是数组,它应该是随机变量观察值的一维数组。如果是可调用的,它应该是一个生成随机变量的函数;它需要有一个关键字参数大小。

cdf : str 或可调用

如果是字符串,它应该是 scipy.stats 中的分布名称。如果 rvs 是字符串,则 cdf 可以为 False 或与 rvs 相同。如果是可调用对象,则该可调用对象用于计算 cdf。

基本上,rvs 是新的样本数据,而 cdf 是累积分布函数(pdf 的积分)。我无法找到如何访问在 sklearn 中计算 pdf 的函数,以便我可以集成它并将其提供给 kstest。

有人知道如何到达那里吗?另外,如果这种方法有任何替代方法,请告诉我。

0 投票
1 回答
2846 浏览

python - 对数据拟合对数正态分布并在 Python 和 R 中执行 Kolmogorov-Smirnov 检验

我正在将我的数据拟合到对数正态,并且我在 Python 和 R 中进行了 KS 测试,我得到了非常不同的结果。

数据是:

在 R 中,代码是:

在 Python 中,代码是:

0 投票
1 回答
194 浏览

python - 使用参数进行 KS 测试的问题并了解结果

我正在尝试对一些数据进行 KS 测试。现在我的代码可以工作了,但我不确定我是否理解发生了什么,并且在尝试设置 loc 时也会出错。基本上我得到了 KS 和 P 检验值。但我不确定我是否完全掌握它,足以使用结果。

我正在使用此处找到的 scipy.stats.ks_2samp 模块。

这是我正在运行的代码

这给出了这个:

现在对于我见过的那些例子, loc 是这样添加的:

但是,如果我这样做,我会收到此错误:

这是一个快照,显示了正在使用的两个数据集的内容。low_ni_sample,high_ni_sample。 在此处输入图像描述

所以我的问题是:

  1. 为什么我不能添加 loc 值,它代表什么?
  2. 改变比例会显着改变结果,为什么以及要做什么?
  3. 我将如何以有意义的方式将其绘制出来?

在运行 Silma 的建议后,我偶然发现了一个新错误。

带有此错误消息