如何使用scipy.stats.kstest将样本与自定义概率分布进行比较?

时间:2017-03-25 19:49:37

标签: python scipy statistics

从scipy.stats.kstest上的scipy文档来看,该函数似乎只允许在样本和预定义的概率分布之间进行比较。可以比较样本和自定义概率分布吗?

我可以使用双样本Kolmogorov-Smirnov检验scipy.stats.ks_2samp来比较从自定义函数生成的理论样本与实际样本。

我尝试了以下代码:

from scipy.stats import kstest
sample = [1 for i in range(10)]
ks_stat, p_value = kstest(sample, lambda x: 1)
print ks_stat, p_value
>> 1.0, 0.0

上面的p_value应该为1,因为样本与分布完全匹配。

方便链接

一个样本KS测试:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.kstest.html

两个样本KS测试:https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.stats.ks_2samp.html

1 个答案:

答案 0 :(得分:0)

KS测试仅适用于连续分布。连续分布的一个特性是样本不能重复。

有一个更健全的例子,测试按预期工作:

import numpy as np
from scipy.stats import kstest
sample = [i for i in range(10)]
ks_stat, p_value = kstest(sample, lambda x: np.clip(0.1*(x+0.5),0,1))
print ks_stat, p_value

打印:

0.05 1.0

哎呀,@尼克拉斯对不起,现在只是正确阅读你的评论。