gpt4 book ai didi

python - Python Kolmogorov-Smirnov 拟合优度检验中的 p 值非常低

转载 作者:行者123 更新时间:2023-11-28 17:17:58 25 4
gpt4 key购买 nike

我有一组数据并通过对数正态分布拟合相应的直方图。我首先计算对数正态函数的最佳参数,然后绘制直方图和对数正态函数。这给出了很好的结果:

Histogram in blue, fitting function in red.

import scipy as sp
import numpy as np
import matplotlib.pyplot as plt

num_data = len(data)

x_axis = np.linspace(min(data),
max(data),num_data)

number_of_bins = 240
histo, bin_edges = np.histogram(data, number_of_bins, normed=False)

shape, location, scale = sp.stats.lognorm.fit(data)

plt.hist(data, number_of_bins, normed=False);


# the scaling factor scales the normalized lognormal function up to the size
# of the histogram:
scaling_factor = len(data)*(max(data)-min(data))/number_of_bins

plt.plot(x_axis,scaling_factor*sp.stats.lognorm.pdf(x_axis, shape,
location, scale),'r-')

# adjust the axes dimensions:
plt.axis([bin_edges[0]-10,bin_edges[len(bin_edges)-1]+10,0, histo.max()*1.1])

但是,当对数据与拟合函数进行 Kolmogorov-Smirnov 检验时,我得到的 p 值太低(大约为 e-32):

lognormal_ks_statistic, lognormal_ks_pvalue = 
sp.stats.kstest(
data,
lambda k: sp.stats.lognorm.cdf(k, shape, location, scale),
args=(),
N=len(data),
alternative='two-sided',
mode='approx')

print(lognormal_ks_statistic)
print(lognormal_ks_pvalue)

这不正常,因为我们从图中可以看出拟合非常准确...有人知道我哪里出错了吗?

非常感谢!!查尔斯

最佳答案

这仅仅意味着您的数据不完全符合对数正态分布。基于直方图,您有很多数据点可供 K-S 检验使用。这意味着如果您的数据与基于具有这些参数的对数正态分布的预期略有不同,则 K-S 检验将表明数据不是从对数正态分布中提取的。

数据来自哪里?如果它来自有机来源,或者不是专门从对数正态分布中抽取随机数的任何来源,我希望 p 值非常小,即使拟合看起来很好。这当然不是问题,但只要适合您的目的就足够好。

关于python - Python Kolmogorov-Smirnov 拟合优度检验中的 p 值非常低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com