【问题标题】:scipy.stats kstest for Poisson distribution / works with (x2) sided but not with (x1) sided?用于泊松分布的 scipy.stats kstest / 适用于 (x2) 面但不适用于 (x1) 面?
【发布时间】:2020-11-19 19:43:03
【问题描述】:

非常简单的测试:

  1. 使用泊松分布生成数字的随机分布。使用 KS 检验确定它是否符合泊松分布。
  2. 使用泊松分布生成 (x2) 个随机数字分布。使用 (x2) 面 KS 测试来确定它们是否相同。

从上面看,(1) 给出 low p 值,而 (2) 给出 high p 值。为什么?

1 的代码

from scipy.stats import kstest, poisson

noPts = 1000
lambdaPoisson = 10

my_data = poisson.rvs(size = noPts, mu = lambdaPoisson)

ks_statistic, p_value = kstest(my_data, 'poisson', args=(lambdaPoisson,0))
print(ks_statistic, p_value)

结果:0.1239297144718523 7.61680985798287e-14

2 代码

from scipy.stats import ks_2samp, poisson

noPts = 1000
lambdaPoisson = 10

my_data1 = poisson.rvs(size = noPts, mu = lambdaPoisson)
my_data2 = poisson.rvs(size = noPts*1000, mu = lambdaPoisson)

ks_statistic, p_value = ks_2samp(my_data1, my_data2)
print(ks_statistic, p_value)

结果:0.023672000000000026 0.6301973762116004

【问题讨论】:

  • 答案应该是'因为泊松分布不连续......使用卡方'。但是,使用卡方会给出相同的结果。与理想的泊松分布相比,具有泊松分布的随机选择的数字的 p 值不高。

标签: python scipy poisson kolmogorov-smirnov


【解决方案1】:

ks_statistic 测试两个分布是否相同。但是,使用相同的 lambda(10) 生成不同大小的分布会生成不同的分布,因此检验不显着。

如果您希望两个分布相同,则 mydata2 的 lambda 需要乘以与大小相同的因子(在您的情况下为 1000)。我不是统计学家,所以我不完全理解为什么。但随后的测试意义重大。如果您希望两个分布都以相同的值为中心,则必须使用函数的 loc 参数。

尽管存在差异,但所有这些分布都是泊松分布,如果您单独对它们进行测试,它们的 p-val=0.0。

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2020-05-31
    • 2011-12-12
    相关资源
    最近更新 更多