【问题标题】:Kolmogorov-Smirnov testKolmogorov-Smirnov 检验
【发布时间】:2015-03-25 08:45:35
【问题描述】:

我正在使用 R 函数 ks.test() 来测试 R 随机数生成器的均匀分布。我正在使用以下代码: replicate(100000, ks.test(runif(n),y="punif").

n 小于或等于 100 时,它可以工作,但当 n 大于 100 时,我会收到以下警告消息:

In ks.test(runif(100000), y = "punif") :
  ties should not be present for the Kolmogorov-Smirnov test.

那些“关系”是什么?

【问题讨论】:

  • 你试过?ks.test
  • 听起来像 runif() 返回了重复值。尝试查看x<-runif(100000);ks.test(x, y = "punif");sum(duplicated(x)) 以查看是否是这种情况。 (因为它是随机的,你可能不会每次都得到相同的结果)

标签: r statistics simulation probability hypothesis-test


【解决方案1】:

如果您检查函数 ks.test 的主体,您将在主体的某处看到以下行:

if (length(unique(x)) < n) {
    warning("ties should not be present for the Kolmogorov-Smirnov test")
    TIES <- TRUE
}

这告诉您,当 x 中的唯一元素数低于元素数时 - 您将收到此警告。换句话说,如果您的向量有重复的条目 - 您将收到警告。

最有可能发生的情况是,与使用 n = 100 相比,当 n > 100 时,在某处获得重复值的机会更多。由于您重复了数千次,因此在 x 中具有两个相同值的概率变为起来。

作为一个例子,这段代码没有给我任何警告:

set.seed(1234)
smth <- replicate(100000, ks.test(runif(101),y="punif"))

【讨论】:

  • 但是,如果我的数据集包含重复值怎么办?
  • 有类似的问题。如果有平局,这是否意味着测试无效?
  • @JeremyMcNees 请考虑在 Stats.StackExchange 中寻找答案。 HERE 是一个可以帮助你的例子。
猜你喜欢
  • 2014-09-21
  • 2014-12-30
  • 2021-06-18
  • 2020-10-12
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
相关资源
最近更新 更多