主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

kstest

单样本柯尔莫哥洛夫-斯米尔诺夫检验

说明

h = kstest(x) 使用单样本柯尔莫哥洛夫-斯米尔诺夫检验返回原假设的一个检验决策,即向量 x 中的数据来自标准正态分布,而不支持来自非标准正态分布这一备择假设。如果检验在 5% 的显著性水平上拒绝原假设,则结果 h1,否则为 0

示例

h = kstest(x,Name,Value) 返回单样本柯尔莫哥洛夫-斯米尔诺夫检验的检验决策,其中使用一个或多个名称-值对组参量指定附加选项。例如,您可以检验非标准正态分布、更改显著性水平或进行单侧检验。

示例

[h,p] = kstest(___) 还使用上述语法中的任何输入参量返回假设检验的 p 值,p

示例

[h,p,ksstat,cv] = kstest(___) 还返回检验统计量 ksstat 的值和检验的逼近临界值 cv

示例

示例

全部折叠

使用 kstest 执行单样本科尔莫戈洛夫-斯米尔诺夫检验。通过以可视方式比较经验累积分布函数 (cdf) 和标准正态 cdf 来确认检验决策。

加载 examgrades 数据集。创建包含考试成绩数据的第一列的向量。

load examgrades
test1 = grades(:,1);

检验数据来自均值为 75、标准差为 10 的正态分布的原假设。使用这些参数来中心化并缩放数据向量的每个元素,因为 kstest 默认情况下检验标准正态分布。

x = (test1-75)/10;
h = kstest(x)
h = logical
   0

返回值 h = 0 表明 kstest 在默认的 5% 显著性水平上未能拒绝原假设。

绘制经验 cdf 和标准正态 cdf,以便进行直观比较。

cdfplot(x)
hold on
x_values = linspace(min(x),max(x));
plot(x_values,normcdf(x_values,0,1),'r-')
legend('Empirical CDF','Standard Normal CDF','Location','best')

Figure contains an axes object. The axes object with title Empirical CDF, xlabel x, ylabel F(x) contains 2 objects of type line. These objects represent Empirical CDF, Standard Normal CDF.

图窗显示中心化并缩放的数据向量的经验 cdf 与标准正态分布的 cdf 之间的相似性。

加载样本数据。创建包含学生考试成绩数据的第一列的向量。

load examgrades;
x = grades(:,1);

将假设分布指定为一个两列矩阵。第 1 列含数据向量 x。第 2 列包含在假设的 Student t 分布的 x 中的每个值处计算的 cdf 值,位置参数为 75,尺度参数为 10,自由度为 1。

test_cdf = [x,cdf('tlocationscale',x,75,10,1)];

检验数据是否来自假设的分布。

h = kstest(x,'CDF',test_cdf)
h = logical
   1

返回值 h = 1 表明 kstest 在默认的 5% 显著性水平上拒绝了原假设。

加载样本数据。创建包含学生考试成绩数据的第一列的向量。

load examgrades;
x = grades(:,1);

创建一个概率分布对象来检验数据是否来自某 Student t 分布,其位置参数为 75,尺度参数为 10,自由度为 1。

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

检验原假设,即数据来自假设分布。

h = kstest(x,'CDF',test_cdf)
h = logical
   1

返回值 h = 1 表明 kstest 在默认的 5% 显著性水平上拒绝了原假设。

加载样本数据。创建包含学生考试成绩的第一列的向量。

load examgrades;
x = grades(:,1);

创建一个概率分布对象来检验数据是否来自某 Student t 分布,其位置参数为 75,尺度参数为 10,自由度为 1。

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

在 1% 的显著性水平上检验原假设,即数据来自假设分布。

[h,p] = kstest(x,'CDF',test_cdf,'Alpha',0.01)
h = logical
   1

p = 
0.0021

返回值 h = 1 表示 kstest 在 1% 显著性水平上拒绝了原假设。

加载样本数据。创建一个包含股票收益数据矩阵第三列的向量。

load stockreturns;
x = stocks(:,3);

检验原假设,即数据来自标准正态分布;对立的备择假设为数据的总体 cdf 大于标准正态 cdf。

[h,p,k,c] = kstest(x,'Tail','larger')
h = logical
   1

p = 
5.0854e-05
k = 
0.2197
c = 
0.1207

返回值 h = 1 表明 kstest 在默认的 5% 显著性水平上拒绝了原假设,而支持备择假设。

绘制经验 cdf 和标准正态 cdf,以便进行直观比较。

[f,x_values] = ecdf(x);
J = plot(x_values,f);
hold on;
K = plot(x_values,normcdf(x_values),'r--');
set(J,'LineWidth',2);
set(K,'LineWidth',2);
legend([J K],'Empirical CDF','Standard Normal CDF','Location','SE');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Empirical CDF, Standard Normal CDF.

绘图显示数据向量 x 的经验 cdf 和标准正态分布的 cdf 之间的差异。

输入参数

全部折叠

样本数据,指定为向量。

数据类型: single | double

名称-值参数

全部折叠

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'Tail','larger','Alpha',0.01 指定使用备择假设的检验,即抽取样本数据的总体的 cdf 大于假设分布的 cdf(在 1% 的显著性水平上进行)。

假设检验的显著性水平,指定为以逗号分隔的对组,其中包含 'Alpha' 和范围 (0,1) 内的一个标量值。

示例: 'Alpha',0.01

数据类型: single | double

假设连续分布的 cdf,指定为名称-值参量(由 'CDF' 和两列矩阵或连续概率分布对象组成)。当 CDF 是矩阵时,第 1 列包含一组可能的 x 值,第 2 列包含对应的假设累积分布函数值 G(x)。如果指定了 CDF,使得第 1 列包含数据向量 x 中的值,则计算效率最高。如果 x 中有在 CDF 的第 1 列中找不到的值,则 kstest 通过插值逼近 G(x)。x 中的所有值都必须位于 CDF 的第一列中最小值和最大值之间的区间内。默认情况下,kstest 检验标准正态分布。

单样本柯尔莫哥洛夫-斯米尔诺夫检验仅对连续累积分布函数有效,并且需要预先确定 CDF。如果根据数据估计 CDF,则结果不准确。要在不指定分布参数的情况下检验 x 是否遵循正态分布、对数正态分布、极值分布、威布尔分布或指数分布,请改用 lillietest

数据类型: single | double

要计算的备择假设的类型,指定为以逗号分隔的对组,其中包含 'Tail' 和下列各项之一。

'unequal'检验备择假设,即从中抽取 x 的总体的 cdf 不等于假设分布的 cdf。
'larger'检验备择假设,即从中抽取 x 的总体的 cdf 大于假设分布的 cdf。
'smaller'检验备择假设,即从中抽取 x 的总体的 cdf 小于假设分布的 cdf。

如果数据向量 x 中的值趋向于大于假设分布的预期值,则 x 的经验分布函数趋向于较小,反之亦然。

示例: 'Tail','larger'

输出参量

全部折叠

假设检验结果,以逻辑值形式返回。

  • 如果 h = 1,这表明在 Alpha 显著性水平上拒绝原假设。

  • 如果 h = 0,这表明未能在 Alpha 显著性水平上拒绝原假设。

检验的 p 值,以 [0,1] 范围内的标量值形式返回。p 是观测到的检验统计量与原假设下观测到的值一样极端或更极端的概率。较小的 p 值表示原假设可能无效。

假设检验的检验统计量,以非负标量值形式返回。

临界值,以非负标量值形式返回。

详细信息

全部折叠

算法

kstest 通过比较 pp 与显著性水平 Alpha(而不是通过比较检验统计量 ksstat 与临界值 cv)决定拒绝原假设。由于 cv 是逼近值,因此将 ksstatcv 进行比较,得出的结论有时不同于将 pAlpha 进行比较得出的结论。

参考

[1] Massey, F. J. “The Kolmogorov-Smirnov Test for Goodness of Fit.” Journal of the American Statistical Association. Vol. 46, No. 253, 1951, pp. 68–78.

[2] Miller, L. H. “Table of Percentage Points of Kolmogorov Statistics.” Journal of the American Statistical Association. Vol. 51, No. 273, 1956, pp. 111–121.

[3] Marsaglia, G., W. Tsang, and J. Wang. “Evaluating Kolmogorov’s Distribution.” Journal of Statistical Software. Vol. 8, Issue 18, 2003.

版本历史记录

在 R2006a 之前推出

另请参阅

| |