200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > ks检验python代码_python scipy stats.kstest用法及代码示例

ks检验python代码_python scipy stats.kstest用法及代码示例

时间:2019-09-18 01:50:40

相关推荐

ks检验python代码_python scipy stats.kstest用法及代码示例

进行Kolmogorov-Smirnov测试是否合身。

这将针对给定的分布G(x)对观察到的随机变量的分布F(x)进行测试。在原假设下,两个分布相同,F(x)= G(x)。替代假设可以是“ two-sided”(默认值),‘less’或‘greater’。 KS测试仅对连续分布有效。

参数:

rvs:str, array_like, 或 callable如果是字符串,则应该是其中的分布名称scipy.stats。如果是数组,则它应该是一维随机变量观测值的数组。如果是可调用的,它应该是生成随机变量的函数;必须具有关键字参数大小。

cdf:str 或 callable如果是字符串,则应该是其中的分布名称scipy.stats。如果rvs是字符串,则cdf可以为False或与rvs相同。如果是可调用的,则该可调用的用于计算cdf。

args:tuple, sequence, 可选参数分发参数,如果rvs或cdf是字符串,则使用。

N:int, 可选参数如果rvs是字符串或可调用的样本大小。默认值为20。

alternative:{‘two-sided’, ‘less’, ‘greater’}, 可选参数定义替代假设。提供以下选项(默认为“ two-sided”):

‘two-sided’

‘less’:one-sided, see explanation in Notes

‘greater’:one-sided, see explanation in Notes

mode:{‘approx’, ‘asymp’}, 可选参数定义用于计算p-value的分布。以下选项可用(默认值为‘approx’):

‘approx’:use approximation to exact distribution of test statistic

‘asymp’:use asymptotic distribution of test statistic

返回值:

statistic:浮动KS测试统计信息,D,D +或D-。

pvalue:浮动One-tailed或two-tailed p-value。

注意:

在one-sided检验中,替代方案是随机变量的经验累积分布函数比假设的累积分布函数G(x)为“less”或“greater”,F(x)<=G(x),分别。F(x)>=G(x)。

例子:

>>> from scipy import stats

>>> x = np.linspace(-15, 15, 9)

>>> stats.kstest(x, 'norm')

(0.44435602715924361, 0.038850142705171065)

>>> np.random.seed(987654321) # set random seed to get the same result

>>> stats.kstest('norm', False, N=100)

(0.058352892479417884, 0.88531190944151261)

以上各行等效于:

>>> np.random.seed(987654321)

>>> stats.kstest(stats.norm.rvs(size=100), 'norm')

(0.058352892479417884, 0.88531190944151261)

根据one-sided替代假设进行检验

将分布转移到更大的值,以便cdf_dgp(x) < norm.cdf(x):

>>> np.random.seed(987654321)

>>> x = stats.norm.rvs(loc=0.2, size=100)

>>> stats.kstest(x,'norm', alternative = 'less')

(0.12464329735846891, 0.040989164077641749)

拒绝替代假设的均等分布:较少

>>> stats.kstest(x,'norm', alternative = 'greater')

(0.0072115233216311081, 0.98531158590396395)

不要拒绝其他假设的均等分布:更大

>>> stats.kstest(x,'norm', mode='asymp')

(0.12464329735846891, 0.08944488871182088)

针对正态分布测试t个分布的随机变量

自由度为100时,t分布看起来接近正态分布,并且K-S检验不能拒绝样本来自正态分布的假设:

>>> np.random.seed(987654321)

>>> stats.kstest(stats.t.rvs(100,size=100),'norm')

(0.07929165471257, 0.67630062862479168)

在3个自由度的情况下,t分布看起来与正态分布完全不同,因此我们可以拒绝以下假设:样本来自10%水平的正态分布:

>>> np.random.seed(987654321)

>>> stats.kstest(stats.t.rvs(3,size=100),'norm')

(0.131016895759829, 0.058826222555312224)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。