gpt4 book ai didi

python - 如何测试均匀性

转载 作者:太空狗 更新时间:2023-10-29 22:30:21 25 4
gpt4 key购买 nike

我根据泊松过程模拟 0 到 T 范围内的时间。事件间时间是指数级的,我们知道时间的分布应该在 0T 范围内均匀分布。

def poisson_simul(rate, T):
time = random.expovariate(rate)
times = [0]
while (times[-1] < T):
times.append(time+times[-1])
time = random.expovariate(rate)
return times[1:]

我只想运行其中一项测试以确保一致性,例如 Kolmogorov-Smirnov 测试。但是,我不知道如何在 scipy 中执行此操作。如果我这样做

import random
from scipy.stats import kstest
times = poisson_simul(1, 100)
print kstest(times, "uniform")

这是不对的。它给了我

(1.0, 0.0)

我只想检验点是从 0T 范围内统一选择的假设。你如何在 scipy 中做到这一点?

最佳答案

你需要提供均匀分布的参数让kstest()知道它是从0到100的均匀分布。如果你只指定'uniform',你得到 0 到 1 的默认边界,数据显然不适合。最清晰的方法是直接指定 CDF 函数而不是使用字符串:

[~]
|11> from scipy import stats

[~]
|12> times = poisson_simul(1.0, 100.0)

[~]
|13> stats.kstest(times, stats.uniform(loc=0.0, scale=100.0).cdf)
(0.047464592615975507, 0.98954417186125665)

关于python - 如何测试均匀性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com