我正在尝试测试一组数据是否均匀分布。我知道Kolmogorov-Smirnov检验是正确的测试方法。然而,我的结果对我来说毫无意义。
在下面的代码中,我创建了两个值列表,x均匀分布,y不均匀分布。
应该发生什么: 我对x和y都运行scipy的kstest(),x的p值通过,y的p值未通过。
实际发生的事情: 我对x和y都运行scipy的kstest(),x和y的p值都为0.0。
在下面的代码中,我创建了两个值列表,x均匀分布,y不均匀分布。
应该发生什么: 我对x和y都运行scipy的kstest(),x的p值通过,y的p值未通过。
实际发生的事情: 我对x和y都运行scipy的kstest(),x和y的p值都为0.0。
In [1]:
from scipy import stats
import scipy as sp
import numpy as np
import math
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
x = np.random.uniform(size=1000)
sigma_x = np.std(x)
mean_x = x.mean()
plt.hist(x)
plt.show()
In [3]:
y = x**4
sigma_y = np.std(y)
mean_y = y.mean()
plt.hist(y)
plt.show()
In [4]:
stats.kstest(x, 'uniform', args=(mean_x,sigma_x))
Out[4]:
(0.499, 0.0)
In [5]:
stats.kstest(y, 'uniform', args=(mean_y,sigma_y))
Out[5]:
(0.67400000000000004, 0.0)