Kolmogorov-Smirnov检验置信带在Matlab中的实现

更新时间:2023-10-03 03:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Kolmogorov-Smirnov检验置信带在Matlab中的实现

张三

(北京交通大学土木建筑工程学院,北京 100044)

摘要:K-S检验是非参数检验的一个十分精确的方法,构造高精度的基于K-S统计量的置信带可以更加直观的判断某随机变量是否服从某一分布。本文首先介绍了K-S检验的统计量,构造了K-S检验置信带,进而采用Matlab软件分析所构造的置信带的准确性,最终得到了较好的结果。 关键词:K-S检验;置信带;Matlab

Implementation of Kolmogorov-Smirnov Test Confidence

Belt in Matlab

ZHANG San

(School of Civil Engineering, Beijing Jiaotong University, Beijing 100044, China)

Abstract: K-S test is a very accurate method of non-parametric test. High-precision K-S confidence belt based on K-S statistics can be used to tell whether some random variables are submitting to a certain distribution. This paper introduced the K-S test statistics, constructed the K-S test confidence belts, and then used Matlab to analyze the accuracy of confidence belts which were constructed on the basis of different distributions, and ultimately get satisfied results. Key words: K-S test; confident belts; Matlab

在可靠性分析过程中,常需要估计一些随机变量服从的分布,再对假设的分布函数进行非参数检验,常用的非参数检验方法有很多种,比如卡方检验、Kolmogorov-Smirnov检验(以下简称K-S检验)等。卡方检验的结果受分组的影响较大,因而容易受到人为因素的影响,故相比而言K-S检验结果更为精确[1]。利用K-S法检验某种分布类型无非有两种形式,一是已知参数估计分布类型,二是未知参数,先估计参数再检验分布类型[2],由于缺乏实际数据,故本文进行已知参数的K-S检验。

K-S检验较卡方检验的先进之处在于,K-S检验认为当样本容量??很大时,经验分布??即K-S检验是对样本每一??(??)与总体分布函数??(??)二者的偏差不应太大,点的检验。因此K-S检验的统计量可记为????=max?∞

1???应用时,可以采用比较K-S统计量与分位点????的方式(其中??为置信水平),也

可以构造高精度的置信带得到更加直观的判断[3]。 1 K-S置信带的构造

对于来自分布????(??)的样本??1、??2……????,所谓????(??)的置信带是指的存在函数

?? ?? 、??(??),使得?? ?? ?? ≤?? ?? ≤?? ?? ,?? ∈ ?? =1???,其中?? ?? 、??(??)都是

??1、??2……????的函数。

根据Dvoretzky-Kiefer-Wolfowitz(DKW)不等式[4],对于对???>0有,

?2????

P(max|?? ?? ?? ???(??)| >??)≤2??

令?? ?? =max{???? ?? ?????,0},?? ?? =min{???? ?? +????,1},其中????=

2

ln(α) ,则对所有的?? ?? 和所有的??,都有, 2n

P ?? ?? ≤?? ?? ≤?? ?? ≥1??? (?? ∈ ??)

1???

记K-S统计量的1???分位点为????=????,则由上述结论可得,

1???1???

?? ?? =max{??,0},?? ?? =min{??,1},?? ∈ ??,记?? ?? ??????? ?? +????

12

???1???1?????1=??????{???????,0},????1???=??????{??+????,1},可见事件max ???? ?? ???

???1????? ??

????

计量。假设处在??(???1)和??(??)之间的??成线性变化,则可得到下面的式子[3], 0 (??≤?? 1 )

1???????? ??

1???1??? (?? ??

?? ??+1 ??? ??

???

??1?? (??≥?? ?? ) ?? ??

1?????0 (??≤?? 1 )

????? ??

1???1???+ ??????????1 (?? ??

?? ??+1 ??? ??

1 (??≥?? ?? )

1???

=?????1

可见得到的置信带是关于??的分段函数。 2 K-S检验置信带在Matlab中的实现

可靠性分析中常见的分布主要有正态分布、对数正态分布、指数分布、Weibull分布及Gamma分布等,表1给出了这5种分布的密度函数和参数。

表1 常用分布密度函数及参数

Table 1 Common distribution density function and parameters

分布 密度函数 ?? ?? =1 2????(?????)2???2??2 参数 正态分布 ??,?? (?∞0)?? ?? = ?? 0 (??≤0)EX=?? DX=??2 1EX=??Γ(1+) ??Weibull分布 ???????1?(??)??()???? (??≥0)?? ?? = ???? 0 (??<0)2DX=??2[Γ 1+ ??1?(Γ(1+))2] ???? ?? =Gamma分布 ??1???1????? ????????(??)指数分布 EX=???? DX=????2 (0

function X=fun_rand(n,type,sigma,mu,a,b)

switch type %根据type的值进行判断,产生不同分布的随机数 case 1

t=randn(1,n);

X=sigma*t+mu; %产生正态分布随机数 case 2

mlg=log(mu/sqrt(1+(sigma/mu)^2));siglg=sqrt(log(1+sigma/mu)^2); X=lognrnd(mlg,siglg,1,n); %产生对数正态分布随机数 case 3

X=exprnd(mu,1,n); %产生指数分布随机数 case 4

X=wblrnd(a,b,1,n); %产生Weibull分布随机数 case 5

X=gamrnd(a,b,1,n); %产生Gamma分布随机数 end end

经验分布函数???? ?? 很容易得到,将产生的随机数组X进行从小到大的排序,

???

计算??1和????1???,进而计算置信带的分段函数?? ?? 和?? ?? 。相关代码如下, ??

X=sort(X); %将随机数组X从小到大排序

Fn=fun_Fn(n); %由函数fun_Fn生成经验分布函数

1???

Dlim=1.36/sqrt(n); %置信水平为5%的分位点????

for i=1:n+1

LX(i)=max(Fn(i)-Dlim,0);

??? HX(i)=min(Fn(i)+Dlim,1); %计算??1和????1??? ??

end

[LXX,HXX]=fun_LH(LX,HX,x,X,n); %由函数fun_LH计算?? ?? 和?? ?? 下面是函数fun_LH的代码,

function [LXX,HXX]=fun_LH(LX,HX,x,X,n) N=length(x);LXX=zeros(1,N);HXX=zeros(1,N); for i=1:N

LXX(i)=0*(x(i)<=X(1))+LX(n+1)*(x(i)>X(n)); HXX(i)=HX(1)*(x(i)<=X(1))+1*(x(i)>X(n)); for j=2:n

LXX(i)=LXX(i)+(LX(j)+(LX(j+1)-LX(j))*(x(i)-X(j-1))/(X(j)-X(j-1)))*(x(i

)>X(j-1)&x(i)<=X(j));

HXX(i)=HXX(i)+(HX(j-1)+(HX(j)-HX(j-1))*(x(i)-X(j-1))/(X(j)-X(j-1)))*

(x(i)>X(j-1)&x(i)<=X(j));

end end end 3 计算结果

利用上述程序和初始数据进行计算,计算结果见图1,2,3,4,5,其中红线均为置信上限,绿线均为置信下限,蓝线为概率累积分布函数图像。

图1 正态分布K-S检验置信带(α=5%)

Fig.1 The K-S test confident belt of normal distribution (α=5%)

图2 对数正态分布K-S检验置信带(α=5%)

Fig.2 The K-S test confident belt of lognormal distribution (α=5%)

图3 指数分布K-S检验置信带(α=5%)

Fig.3 The K-S test confident belt of exponential distribution (α=5%)

图4 Weibull分布K-S检验置信带(α=5%)

Fig.4 The K-S test confident belt of Weibull distribution (α=5%)

图5 Gamma分布K-S检验置信带(α=5%)

Fig.5 The K-S test confident belt of gamma distribution (α=5%)

4 结论和展望

由上述计算结果可以看出,K-S检验置信带具有良好的精度。对于实际工程来说,可以将上述的随机数组X由实际的随机变量代替进行计算,如果由实际的随机变量得出的概率累积分布函数值均位于置信上下限之内,说明可以有95%的把握认为随机变量服从某假设分布。

参考文献

[1] 葛素娟. 中原地区住宅建筑结构荷载调查与统计模型研究[D]. 郑州:郑州大学, 2004. 63-64

[2] 吴世伟, 叶军. 参数未知的K-S法检验临界值分析[J]. 港工技术, 1990, (1): 16-17

[3] 丁晓波, 徐兴忠. 基于Kolmogorov-Smirnov统计量的连续置信带[J]. 北京理工大学学报, 2008, 28(10): 927-928

[4] 刘薇. 经验分布函数的一个非参数置信带[J]. 天水师范学院学报, 2013, 33(5): 5-6

图5 Gamma分布K-S检验置信带(α=5%)

Fig.5 The K-S test confident belt of gamma distribution (α=5%)

4 结论和展望

由上述计算结果可以看出,K-S检验置信带具有良好的精度。对于实际工程来说,可以将上述的随机数组X由实际的随机变量代替进行计算,如果由实际的随机变量得出的概率累积分布函数值均位于置信上下限之内,说明可以有95%的把握认为随机变量服从某假设分布。

参考文献

[1] 葛素娟. 中原地区住宅建筑结构荷载调查与统计模型研究[D]. 郑州:郑州大学, 2004. 63-64

[2] 吴世伟, 叶军. 参数未知的K-S法检验临界值分析[J]. 港工技术, 1990, (1): 16-17

[3] 丁晓波, 徐兴忠. 基于Kolmogorov-Smirnov统计量的连续置信带[J]. 北京理工大学学报, 2008, 28(10): 927-928

[4] 刘薇. 经验分布函数的一个非参数置信带[J]. 天水师范学院学报, 2013, 33(5): 5-6

本文来源:https://www.bwwdw.com/article/zeod.html

Top