从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
答案 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
哎呀,@尼克拉斯对不起,现在只是正确阅读你的评论。