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

Evaluate goodness of fit with kolmogorov-smirnov test for a custom exponential equation

我知道这里已经有几个类似的问题,但 none 确实回答了我的具体问题。

我有一个独立值数组(图中的黑色方块)。 现在要检查黑色方块是否与我通过对数据拟合指数方程创建的红线有显着差异。 配合是这样创建的:

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] 的东西会起作用,但这也是 returns 2.68e-104 的 pvalue 并且通过肉眼评估拟合,似乎 pvalue 应该高于 0.05..

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

干杯!

万一以后有人查这个,这就是我最后做的,我认为结果看起来不错:

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


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

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

如果有人看到错误,请告诉我,但我很确定这就是我想要的。