Python中的Kolmogorov-Smirnov检验用于拟合优度测试

3
我正在尝试为我的数据找到最佳分布。 拟合如下图所示已完成,但我需要一种度量方法以选择最佳模型。 我使用卡方值比较拟合优度,并使用 Kolmogorov-Smirnov(KS)测试检验观察和拟合分布之间的显着差异。 我查找了一些潜在的解决方法1,2,3,但我没有得到答案。从下图的结果来看:
  1. 如果 p 值大于 k 统计值,则表示我们可以接受假设或数据很好地适合该分布吗?

  2. 另外,将显著性水平(a = 0.005)与 p 值进行比较,并决定是否接受或拒绝假设,这样做可以吗? 如果 p 值小于 a,则非常可能两个分布是不同的。

  3. 对于 Kolmogorov-Smirnov 测试,将数据标准化为(-1,1)是必要的吗?

  4. 从 KS 统计量和 p 值来看,exponnorm 最适合数据。对吗?

enter image description here

我按以下方式计算了 P 值:
for distribution in dist_names:
    # Set up distribution and get fitted distribution parameters
    dist = getattr(scipy.stats, distribution)
    param = dist.fit(y_std)   
    p = scipy.stats.kstest(y_std, distribution, args=param)[1]
    p = np.around(p, 5)
    p_values.append(p) 
1个回答

2
  1. 不,你可以将K统计量与K检验的临界值表进行比较,或者将P值与显著性水平0.005进行比较。
  2. 正确,如果p值很小,我们会拒绝零假设并接受备择假设。
  3. 不,如果在应用KS检验之前对数据进行标准化处理,我们会失去有关原始数据分布的信息。例如,如果数据来自几何分布,则在归一化后,随着样本数量趋近于无穷大,它将收敛为正态(0,1)分布。
  4. 是的,因为在这种情况下,p值>a,我们未能拒绝零假设,并接受输入数据与exponnorm具有相同的分布。
    顺便说一下,这个问题应该属于Cross Validated,因为它与统计知识更多或少相关。希望这个答案能帮到你。

1). 对于K统计量K检验临界表中的临界值之间的比较。如果结果图中显示的K统计量值=0.0385,则K检验临界值表将为D_crit=1.36/sqrt(n)=> 0.0057?其中n=数据样本数。这样对吗?总样本数为569 - Case Msee
1
@CaseMsee 没错,由于样本量 n 大于50,所以使用 D_crit=1.36/sqrt(n) 而不是在临界值表中将显著性水平除以 n。 - Newcomer
非常感谢您的出色回答。根据您的反馈,我进行了一些分析 https://ibb.co/GnvT1x2。请您能否检查一下? - Case Msee
在我的一些数据集中,我得到了P_value=0,如图所示https://ibb.co/XzN4qhK。我不确定这是否正常,因为我得到了`K-static values`。 - Case Msee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接