针对非标准(Landau)分布的Scipy Kstest的RVS论证

时间:2017-08-15 18:02:41

标签: python numpy scipy

我正在使用Landau发行版(https://en.wikipedia.org/wiki/Landau_distribution),我正在尝试使用scipy.stats.kstest来获得适合度统计数据。

由于Landau发行版是scipy的非标准发行版,因此我使用ROOT(CERN C ++包)导入作为stats.kstest文档的自定义可调用CDF。我还有一个测量/经验数据的一维数组。

目前,我对我的kstest函数有以下定义:

def get_ks_test(fit_info):

    coeffs, erfc_bool = fit_info[0], fit_info[4]
    (mu,sigma,A_l,A_e) = coeffs

    def Lcdf(x):
        return [A_l*Math.landau_cdf(i,sigma,mu) for i in x]

    def integrand(x):
        return A_e*erfc((x-mu)/sigma)

    def total_cdf(x):
        return Lcdf(x) + quad(integrand,0,x)

    scatter_data = pdf_fit_return[3]

    return kstest(scatter_data,total_cdf)

此处Lcdfintegrand合并形成我的可调用CDF函数。问题出现在kstest的第一个参数,即“rvs”数组scatter_data。据我了解,“rvs”参数应该是一系列与所讨论的分布相匹配的观察结果。但是在源代码中,“rvs”作为参数发送到“cdf”。这对我没有意义; CDF不应该是x的函数,而不是它应该匹配的数据吗?

当我将scatter_data作为kstest的第一个参数传递时,它会尝试将这些值插入total_cdf,当该函数应该在x中取一个参数时。我不知道我是否在这里或者没有理解rvs / cdf的用法,但是kstest函数的设计方式对我来说似乎是倒退的。

我希望能够提供最新的数据,我的预期发行版(可调用的CDF),但我在网上看到的所有示例都包含或标准发行版(普通版,测试版等)。

0 个答案:

没有答案