1

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

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

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]会起作用,但这也返回一个 pvalue2.68e-104并通过眼睛评估拟合,看起来 pvalue 应该高于 0.05..

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

干杯!

在此处输入图像描述

4

1 回答 1

0

以防有人稍后查找此内容,这就是我最终要做的,我认为结果看起来不错:

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]

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

于 2020-11-11T15:14:43.113 回答