分布拟合检验是统计分析中常常用到的方法,其检验方法比较多,如图示法、Jarque-Bera法、以及一些非参数法等。下面介绍两种比较简单的方法,即q-q图法和Jarque-Bera法。[大谦MATLAB,dqmatlab点com]
q-q图
q-q图用变量数据分布的分位数与所指定分布的分位数之间的关系曲线来检验数据的分布。如果两个样本来自同一个分布,则图中的数据点呈现直线关系,否则为曲线关系。该图中将样本数据用图形标记‘+’显示。在图中,将每一个分布的四分之一处和四分之三处进行连线(可以看成是两个样本次序统计量的稳健线性拟合),该线可用来评价数据的线性特征。
用qqplot函数可以生成两个样本的q-q图,其语法格式如下。
qqplot(X):显示X的样本值与服从正态分布的理论数据之间的q-q图。如果X的分布为正态分布,则图形接近直线。
qqplot(X,Y):显示两个样本的q-q图。若样本不是来自于相同的分布,则图形将是线性的。对于矩阵X和Y,q-q图为每一个配对列显示分隔线。
h = qqplot(X, Y, pvec):返回直线的句柄到h中。
生成具有不同均值和标准差的两个正态样本。然后绘制两个样本的q-q图。
>> x = normrnd(0,1,100,1);
>> y = normrnd(0.5,2,50,1);
>> z=wblrnd(2,0.5,100,1);
>> subplot(2,2,1)
>> qqplot(x)
>> hold on
>> subplot(2,2,2)
>> qqplot(x,y)
>> hold on
>> subplot(2,2,3)
>> qqplot(z)
>> hold on
>> subplot(2,2,4)
>> qqplot(x,z)
>> hold off
生成结果如图1-7所示。图中第1个子图用x的数据绘图,因为服从正态分布,图中数据点呈直线分布;第2个子图显示了x数据和y数据是同分布的,数据点的主体部分呈直线分布;第3个子图用z数据绘图,由于它服从韦伯分布,所以数据点不在一条直线上;第4个子图是用x数据和z数据绘制的,因为它们不是同分布的,故图中数据点不呈直线分布。
图1-7 q-q图
用q-q图的直线关系来确定两个样本是否来自相同分布是不完全正确的。但是,从满足样本服从同分布假设的角度讲,q-q图中的直线关系所提供的证据应该是足够了。
Jarque-Bera检验
Jarque-Bera检验评价给定数据服从均值和方差未知的正态分布的假设是否成立。
注意:Jarque-Bera检验不能用于小样本的检验。
可用jbtest函数进行Jarque-Bera检验,测试数据对正态分布的拟合程度,其语法格式如下。
H = jbtest(X):对输入数据向量X进行Jarque-Bera检验,返回检验结果H。如果拒绝X服从正态分布的假设,则H=1;否则H=0。如果检验在5%的水平上显著,则拒绝假设。
H = jbtest(X, alpha):在100alpha%的水平上进行Jarque-Bera检验,而不是在5%的水平上。其中alpha值必须界于0和1之间。
[H, P, JBSTAT, CV] = jbtest(X, alpha):返回3个其他输出。P为检验的p值,JBSTAT为检验的统计量,CV为确定是否拒绝零假设的临界值。
下面列出了84个伊特拉斯坎(Etruscan)人男子头颅的最大宽度(mm),下面试检验这些数据是否是正态分布。
141 148 132 138 154 142 150 146 155 158
150 140 147 148 144 150 149 145 149 158
143 141 144 144 126 140 144 142 141 140
145 135 147 146 141 136 140 146 142 137
148 154 137 139 143 140 131 143 141 149
148 135 148 152 143 144 141 143 147 146
150 132 142 142 143 153 149 146 149 138
142 149 142 137 134 144 146 147 140 142
140 137 152 145
在命令窗口中输入下面的命令行进行检验:
>> X=[141 148 132 138 154 142 150 146 155 158…
150 140 147 148 144 150 149 145 149 158…
143 141 144 144 126 140 144 142 141 140…
145 135 147 146 141 136 140 146 142 137…
148 154 137 139 143 140 131 143 141 149…
148 135 148 152 143 144 141 143 147 146…
150 132 142 142 143 153 149 146 149 138…
142 149 142 137 134 144 146 147 140 142…
140 137 152 145];
>> [H,P,JBSTAT,CV] = jbtest(X)
H =
0
P =
0.7610
JBSTAT =
0.5461
CV =
5.9915
此时H=0,接受零假设,认为上面的数据服从正态分布。检验统计量为(JBSTAL)0.5461,拒绝零假设的临界值(CV)为5.9915,检验统计量的值比临界值小。