问题标签 [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.
gamma-distribution - 解释 Kolmogorov-Smirnov 测试结果以测试我们的数据是否遵循 Gamma 分布
从 KS 测试中获取结果:
from scipy import stats
stats.kstest(myarray, 'gamma', (a, b))
我们得出的结论是myarray
不遵循伽马分布以防万一p<0.01
(拒绝零假设时)?
另外,当我们从我们的数据中计算gamma 分布(用于比较我们的数据)的a
和b
时,我们不能使用 KS 测试结果吗?
python - 如何根据数据价格回报最小化一个分布的 kstest 提供的 python 中的 -p 值?
我正在尝试从 pandas datareader 库下载股票价格并根据我提供的代码计算(每日、每周、每月等)回报。
下载数据后,我对该数据的分布执行 kstest,并根据提供的 p 值评估它是否类似于双正态分布(两个正态分布之和)。
由于我只为这个分布执行一个 kstest,我想利用 Python 中的“最小化”库来最大化 p 值(最小化 -p 值),改变这两个分布的平均值、标准差和权重的值。
找到以下解决方案:
但我知道正确的答案应该类似于(测试): [0.2,0.0020,0.0110,0.8,-0.0020,0.0230] 产生 0.90 的 p 值
在我看来,它只运行了几个模拟,并且由于它没有改变它停止的 p 值。
有没有一种方法可以确保“最小化”只有在找到大于 0.9 的 p 值后才会停止?有人可以帮帮我吗?
我尝试使用考虑 Nelder Mead 的最小化方法,并且似乎更准确,但甚至不接近应该作为答案的 0.9 p 值,我不知道 Nelder Mead 方法是否考虑了我提供的限制。
r - R中的Kolmogorov-Smirnov检验 - For-loop
我在使用 Kolmogorow-Smirnow-test 比较两组曲线时遇到问题。
我希望程序做的是将曲线 1 的每个变体与曲线 2 的每个变体进行比较。为此,我尝试构建一个遍历曲线 1 的 for 循环,并在该循环中创建另一个循环遍历曲线 2。
不幸的是,在执行代码时,我收到一条错误消息
“没有足够的 x 数据”</p>
当我尝试通过手动比较每条曲线的一个变体来运行测试时,它可以工作,所以我认为问题在于两个循环和 KS 测试的组合。
如果有人遇到过类似的错误并且能够解决该问题,我将非常感谢任何有关如何解决它的建议。谢谢!
示例data.frames
:
我用于循环的代码:
java - Kolmogorov-Smirnov 2 Sample Test Java 给出 0 p 值
我正在使用 Apache Commons Math Kolmogorov-Smirnov 测试来确定我的 RNG 生成的样本是否是均匀分布。
我UniformIntegerDistribution
用来产生均匀分布,我得到一个 2000000 个整数的样本。然后我把它们放到一个double[]
我也从我的 RNG 2000000 数字中生成并将它们放入double[]
.
我已经绘制了样本,我看到它是均匀的,但 KS 检验给我的 p 值为 0.0,这表明两者从同一分布(即均匀)中得出的零假设是无效的。这意味着我的 RNG 样本不符合均匀分布。
double alpha = test.kolmogorovSmirnovTest(a, b);
给我吗alpha = 0.0
该方法的 Javadoc 内容如下:
计算两样本 Kolmogorov-Smirnov 检验的 p 值或观察到的显着性水平,该检验评估 x 和 y 是从相同概率分布中抽取的样本的原假设。
所以我预计 p 值会很高,因为我看到情节明显是均匀的。
让我担心的是,如果我创建一个新的UniformIntegerDistribution
并获得 asample2
然后将其放入 中test.kolmogorovSmirnovTest(a, b);
,我确实会得到一个接近 1 的 p 值,这正是我所期望的。
我要么在 Java 上做错了,要么在 RNG 产生的数字中有一些我没有得到的东西。
的代码createRandomNumbersInclusive
是
而RNG是rng = SecureRandom.getInstance("NativePRNGNonBlocking");
pyspark - 有没有类似的方法可以在pyspark中复制熊猫的“qcut”功能?
我想在 pyspark 中对预测概率和真实标签进行 KS 测试。链接中的pandas中也做过类似的工作:https ://www.listendata.com/2019/07/KS-Statistics-Python.html
python-3.x - Scipy 的 ks_2samp 函数给出了良好的 D_statistic 但错误的 p_value
我正在尝试执行两个样本的 Kolmogorov-Smirnov 检验,以检查两个样本是否来自同一群体。这是重现我的问题的代码:
使用 1.3 之前的 scipy 版本,我得到以下结果: d_statistic = 0.67317 和 p_value = 0.0
但是对于 scipy 版本 >= 1.3:d_statistic = 0.6705 和 p_value = 0.9904774590824749
两者都给出几乎相同的 d_statistic 但最新版本的 scipy 似乎给了我一个错误的 p_value 我不明白为什么。实际上,x 和 y 显然是两个样本,它们并非来自同一群体。
我做了一些研究,因为 scipy==1.3 发布了“精确”模式,并且是小样本的默认模式(len(x), len(y) <= 10000 这是我的情况)。但是,如果我将模式从 'exact' 更改为 'asymp',我得到的结果与我从最旧的 scipy 版本中得到的结果相同。
计算 p_value 时“精确”模式是否存在问题,还是我遗漏了什么?
感谢您的帮助,h1t5uj1
python - 在 python 中对缩放分布执行 KS 测试
我想通过将数据与已缩放的均匀分布进行比较来对我的数据执行 KS 测试。
如何仅将比例参数传递给 scipy.stats.kstest 中的参数(不传递任何其他参数)?我希望它采用其他参数的默认值(例如:loc)
请参阅:
1. https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.uniform.html
2. https://docs.scipy.org/doc/scipy/reference/generated/scipy .stats.kstest.html
我尝试了以下但它没有工作(无效的语法)
r - 将样本的 qqplot 与 R 中的参考概率分布进行比较
我有一个天气数据集,我为温度和湿度两列找到了一个简单的线性模型,并绘制了其残差的直方图并计算了平均值和标准差。
我应该用估计的标准绘制残差的 QQ 图与零均值正态分布。我使用 Kolmogorov-Smirnov 将样本与参考概率分布进行比较,但我不知道如何将其绘制在一起:
数据示例:
r - 是否有 R 包或函数对数据集进行二次采样以近似某个分布?
我有两组具有不同分布的数据(a,b)。Set b 有更多的数据点,也有更多的变化。我需要以最接近集合 a 分布的方式对集合 b 进行二次抽样。尽管集合 b 的平均值要大得多,但集合“a”中的一些值也很大,需要保留在集合 a 中。
我可以开始修剪集合 b 的下限和上限以获得相似的平均值,但是标准差无法比较。我考虑的下一件事是做一堆排列,我随机对集合 b 进行二次抽样,直到我发现二次抽样的集合 b 分布与集合 a 分布没有不同的情况(由 R stats 中的 ks.test 评估)。我想我想知道是否有一个包或功能可以稳健地做到这一点(或者可能更合适)。
一个示例数据集:
a = c(rnorm(n = 100, mean = 0, sd = sqrt(.1)), 4, 7, 10)
b = rnorm(n = 1000, mean = 3, sd = sqrt(4))
b = b[其中(b >= min(a))]范围(a)
[1] -0.6215744 10.0000000
范围(b)
[1] -0.5520407 8.7371966sd(a)
[1] 1.287062
sd(b)
[1] 1.834108
python - 如何让这段代码更高效(KS测试)
我的数据看起来像这些
整个文件大约有 1.97 亿行 (10GB)。我的目标是比较第 1 列中每种化合物的第 3 列的分布。经过大量重构,我设法获得了这段代码
它运行但正如预期的那样非常慢。有没有人知道如何让它更快?我想要的输出看起来像这样
由于数据的大小,在 Pyspark 中运行它会更明智吗?如果是这样,如何达到类似的效果?