使用kolmogorov-smirnov检验评估自定义指数方程的拟合优度

问题描述

我知道这里已经有几个类似的问题,但没有一个能真正回答我的特定问题。

我有一个单独的值数组(图片中的黑色正方形)。 现在,我想检查一下黑色正方形是否与红线显着不同,这是我通过将指数方程拟合到数据而创建的。 拟合是这样创建的:

def exponential_equation(x,k,c):
    return np.exp(-(x - c) / k)


def fit_exp(x,y):
    popt,pcov = curve_fit(exponential_equation,x,y,p0=[0.1,0.1])
    k = popt[0]
    c = popt[1]
    return k,c

k,c = fit_exp(x_array,y_array) 

如您所见,我使用的指数方程式与“标准”指数方程式略有不同,因此运行pval = scipy.stats.kstest(y_array,"expon")[1]之类的方法无效。 我虽然可以使用类似于pval = scipy.stats.kstest(y_array,exponential_equation,args=(k,c)[1]的方法,但是它也会返回2.68e-104的p值,并且通过评估眼睛的契合度,看来pvalue应该大于0.05。

如果有人可以告诉我我做错了什么,或者可以指出正确的方向,我会很高兴的!

干杯!

enter image description here

解决方法

万一某人稍后再查找,这就是我最终要做的,我认为结果看起来不错:

def exponential_equation(x,k,c):
    return np.exp(-(x - c) / k)


def cdf_exp(b,c):
    max_cdf = quad(exponential_equation,np.inf,args=(k,c))[0]
    return [quad(exponential_equation,i,c))[0] / max_cdf for i in b]

k = 0.2
c = 0.01
pvalue = scipy.stats.kstest(test_array,cdf_exp,c))[1]

万一有人发现错误,请告诉我,但我很确定这可以满足我的要求。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...