You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kolmogorov-Smirnov检验结果不符预期,请求排查问题

Kolmogorov-Smirnov检验代码结果不符的问题排查

问题背景

编写了用于执行Kolmogorov-Smirnov(KS)检验的Python代码,但实际运行结果与预期差异极大,需要定位问题原因。

原始代码

import pandas
import random

import matplotlib
import numpy
import matplotlib.pyplot as plt
datas = [0.3877, 0.3878, 0.3877, 0.3877, 0.3877, 0.3879, 0.3899, 0.3892, 0.3881, 0.3873, 0.3886, 0.3875, 0.3876, 0.3893, 0.3888, 0.3886, 0.388, 0.3886, 0.387, 0.3872, 0.388, 0.3877, 0.3867, 0.3898, 0.3878, 0.3886, 0.3883, 0.388, 0.3877, 0.3886, 0.3877, 0.3879, 0.3883, 0.3878, 0.3882, 0.3878, 0.3883, 0.3867, 0.3881, 0.3883, 0.3882, 0.3884, 0.3876, 0.3878, 0.3886, 0.3885, 0.3865, 0.3874, 0.3878, 0.388]
from scipy.stats import kstest

print(kstest(datas, 'norm'))

结果对比

  • 预期输出:
    KstestResult(statistic=0.11781653619879678, pvalue=0.45678095532064167)
    
  • 实际输出:
    KstestResult(statistic=0.6504367986973135, pvalue=3.3658717487529006e-21)
    

问题原因

scipy.stats.kstest中传入'norm'时,默认使用**标准正态分布(均值=0,标准差=1)**进行检验,但你的数据集均值约为0.388,标准差约为0.0008,和标准正态分布完全不匹配,导致检验统计量异常大、p值极小。

修正方案

需要基于你的数据集计算均值和标准差,将这两个参数传入kstest,让检验使用拟合后的正态分布:

import numpy
from scipy.stats import kstest

datas = [0.3877, 0.3878, 0.3877, 0.3877, 0.3877, 0.3879, 0.3899, 0.3892, 0.3881, 0.3873, 0.3886, 0.3875, 0.3876, 0.3893, 0.3888, 0.3886, 0.388, 0.3886, 0.387, 0.3872, 0.388, 0.3877, 0.3867, 0.3898, 0.3878, 0.3886, 0.3883, 0.388, 0.3877, 0.3886, 0.3877, 0.3879, 0.3883, 0.3878, 0.3882, 0.3878, 0.3883, 0.3867, 0.3881, 0.3883, 0.3882, 0.3884, 0.3876, 0.3878, 0.3886, 0.3885, 0.3865, 0.3874, 0.3878, 0.388]

# 计算数据集的均值和样本标准差(自由度n-1)
data_mean = numpy.mean(datas)
data_std = numpy.std(datas, ddof=1)

# 传入参数进行KS检验
result = kstest(datas, 'norm', args=(data_mean, data_std))
print(result)

验证结果

运行修正后的代码,输出结果与预期一致:

KstestResult(statistic=0.11781653619879678, pvalue=0.45678095532064167)

内容的提问来源于stack exchange,提问作者Dani K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:35:37