KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布

KS-检验(Kolmogorov-Smirnov test)用于比较数据频率分布与理论分布或两个观测值分布的一致性。它是一种非参数检验,不依赖于数据的具体分布。在样本量较小且分布不符合特定类型时,KS检验常用于分析数据间的差异。通过计算D值(两分布累计曲线的最大垂直差),可判断是否拒绝原假设。在R中可使用ks.test()函数进行检验。与t-检验相比,KS检验对分布形状要求较低,但在数据符合特定分布时,其敏感度可能较低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法。其原假设H0:两个数据分布一致或者数据符合理论分布。D=max| f(x)- g(x)|,当实际观测值D>D(n,α)则拒绝H0,否则则接受H0假设。
KS检验与t-检验之类的其他方法不同是KS检验不需要知道数据的分布情况,可以算是一种非参数检验方法。当然这样方便的代价就是当检验的数据分布符合特定的分布事,KS检验的灵敏度没有相应的检验来的高。在样本量比较小的时候,KS检验最为非参数检验在分析两组数据之间是否不同时相当常用。
PS:t-检验的假设是检验的数据满足正态分布,否则对于小样本不满足正态分布的数据用t-检验就会造成较大的偏差,虽然对于大样本不满足正态分布的数据而言t-检验还是相当精确有效的手段。

KS检验是如何工作的?

  1. 首先观察下分析数据
    对于以下两组数据:
    controlB={1.26, 0.34, 0.70, 1.75, 50.57, 1.55, 0.08, 0.42, 0.50, 3.20, 0.15, 0.49, 0.95, 0.24, 1.37, 0.17, 6.98, 0.10, 0.94, 0.38}
    treatmentB= {2.37, 2.16, 14.82, 1.73, 41.04, 0.23, 1.32, 2.91, 39.41, 0.11, 27.44, 4.51, 0.51, 4.50, 0.18, 14.68, 4.66, 1.30, 2.06, 1.19}
    对于controlB,这些数据的统计描述如下:
    Mean = 3.61
    Median = 0.60
    High = 50.6 Low = 0.08
    Standard Deviation = 11.2
    可以发现这组数据并不符合正态分布, 否则大约有15%的数据会小于均值-标准差(3.61-11.2),而数据中显然没

### MATLAB中的Kolmogorov-Smirnov检验用于瑞利分布拟合优度 在MATLAB中执行Kolmogorov-Smirnov (KS) 检验以评估一组样本是否来自特定的概率分布,如瑞利分布。此过程涉及几个关键函数和参数设置。 #### 函数调用与语法 为了进行单样本KS检验,`kstest` 是常用的选择之一;然而对于指定非正态分布的情况,则应采用 `kstest2` 或者更推荐的是 `fitdist` 和 `cdf` 结合使用来完成针对瑞利分布的假设检验[^4]。 ```matlab % 设定随机数种子以便结果重现 rng(0,'twister'); % 生成模拟数据- 假设这些是从某个未知分布抽取得到的数据点 data = raylrnd(1, [100, 1]); % 使用raylrnd生成服从瑞利分布数据作为例子 % 对给定的数据尝试拟合成瑞利分布模型 pd = fitdist(data, 'Rayleigh'); % 计经验累积分布函数(ECDF),并绘制出来查看大致形态 [f,x] = ecdf(data); figure; stairs(x,f); hold on; % 绘制理论上的瑞利CDF曲线作对比 plot(x,cdf('Rayleigh',x,pd.B), 'r-', 'LineWidth', 2) legend({'Empirical CDF','Fitted Rayleigh Distribution'},... 'Location','SE'); title('Comparison between Empirical and Fitted Distributions') xlabel('Data Values') ylabel('Cumulative Probability') % 执行KS检验判断实际观测到的数据能否认为来自于上述估计出的瑞利分布 [h,p,kstat,cv]= kstest(data,[data,cdf('Rayleigh',data,pd.B)]); disp(['Test Decision: ', num2str(h)]) disp(['p-value: ', num2str(p)]) disp(['K-S Statistic: ', num2str(kstat)]) disp(['Critical Value at alpha=0.05: ', num2str(cv)]) if h==0 disp('Fail to reject the null hypothesis that data comes from specified distribution.') else disp('Reject the null hypothesis that data does not come from specified distribution.') end ``` 这段代码首先创建了一组遵循瑞利分布的人工数据,接着通过最大似然法对该批数据进行了瑞利分布的最佳匹配建模,并计了相应的累计概率密度函数(CDF)。之后运用图形化方式直观展示了实测值的经验分布同理想化的瑞利分布之间的相似程度。最后借助于 KS 测试统计量及其 p 值决定接受还是拒绝原假设——即观察到的数据确实来源于所假定类型的分布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值