Matlab中的数据分析之概率分布与检验实例讲解
今日学习
分布拟合检验
在实际问题中,有时不能预知总体服从什么类型的分布,这时就需要根据样本来检 验关于分布的假设。下面介绍 χ2 检验法和专用于检验分布是否为正态的“偏峰、峰度检验法”。
χ 2 检验法
H0 :总体x 的分布函数为F(x)
H1 : 总体 x 的分布函数不是 F(x)
在用下述 χ2 检验法检验假设 H0 时,若在假设 H0 下 F(x) 的形式已知,但其参数值未知,这时需要先用极大似然估计法估计参数,然后作检验。
χ2 检验法的基本思想如下:将随机试验可能结果的全体Ω 分为k 个互不相容的事件A1,A2,A3,...,AK
于是在假设 H0 下, 我们可以计算
n 次试验中,事件 Ai 出 现的频率 f i / N与pi ( pi ˆ )往往有差异,但一般来说,若 H0为真,且试验的次数又甚多时, 则这种差异不应该很大。基于这种想法,皮尔逊使用
作为检验假设 H0 的统计量。并证明了以下定理。
定理
若n 充分大,则当 H0 为真时(不论 H0 中的分布属什么分布),统计量总是近似地服从自由度为k − r −1的 χ2 分布,其中 r 是被估计的参数的个数。
于是,若在假设 H0 下算得上式有
则在显著性水平α 下拒绝 H0 ,否则就接受。
注意:在使用 χ2 检验法时,要求样本容量n 不小于 50,以及每个npi 都不小于 5, 而且npi 最好是在 5 以上。否则应适当地合并 Ai ,以满足这个要求。
【例】
下面列出了 84 个伊特拉斯坎(Etruscan)人男子的头颅的最大宽度(mm), 试检验这些数据是否来自正态总体(取α = 0.1) 。
解 编写 Matlab 程序如下:
clc 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];
mm=minmax(x) %求数据中的最小数和最大数
hist(x,8) %画直方图
fi=[length(find(x<135)),...
length(find(x>=135&x<138)),...
length(find(x>=138&x<142)),...
length(find(x>=142&x<146)),...
length(find(x>=146&x<150)),...
length(find(x>=150&x<154)),...
length(find(x>=154))] %各区间上出现的频数mu=mean(x),sigma=std(x) %均值和标准差
fendian=[135,138,142,146,150,154] %区间的分点p0=normcdf(fendian,mu,sigma) %分点处分布函数的值p1=diff(p0) %中间各区间的概率 p=[p0(1),p1,1-p0(6)] %所有区间的概率
chi=(fi-84*p).^2./(84*p)
chisum=sum(chi) %皮尔逊统计量的值 x_a=chi2inv(0.9,4) %chi2分布的0.9分位数
求得皮尔逊统计量chisum= 2.2654,
故在 水平0.1下接受 H0 ,即认为数据来自正态分布总体。
其它非参数检验
Matlab还提供了一些非参数方法。
Wilcoxon秩和检验
在Matlab中,秩和检验由函数ranksum实现。
命令为:
[p,h]=ranksum(x,y,alpha)
其中x,y可为不等长向量,alpha为给定的显著水平,它必须为0和1之间的数量。p返回产生两独立样本的总体是否相同的显著性概率,h返回假设检验的结果。如果x和y的总 体差别不显著,则h为零;如果x和y的总体差别显著,则h为1。如果p接近于零,则可对 原假设质疑。
【例】
某商店为了确定向公司 A 或公司 B 购买某种产品,将 A,B 公司以往各次进 货的次品率进行比较,数据如下所示,设两样本独立。问两公司的商品的质量有无显著 差异。设两公司的商品的次品的密度最多只差一个平移,取α = 0.05 。
A :
7.0 3.5 9.6 8.1 6.2 5.1 10.4 4.0 2.0 10.5
B :5.7 3.2 4.2 11.0 9.7 6.9 3.6 4.8 5.6 8.4 10.1 5.5 12.3
解 分别以 μ A、μ B 记公司 A、B 的商品次品率总体的均值。所需检验的假设是
Matlab实现如下:
a=[7.0 3.5 9.6 8.1 6.2 5.1 10.4 4.0 2.0 10.5];
b=[5.7 3.2 4.2 11.0 9.7 6.9 3.6 4.8 5.6 8.4 10.1 5.5 12.3]; [p,h]=ranksum(a,b)
求得p=0.8041,h=0,表明两样本总体均值相等的概率为0.8041,并不很接近于零, 且h=0说明可以接受原假设,即认为两个公司的商品的质量无明显差异。
中位数检验
在假设检验中还有一种检验方法为中位数检验,在一般的教学中不一定介绍,但在实际中也是被广泛应用到的。在Matlab中提供了这种检验的函数。函数的使用方法简单, 下面只给出函数介绍。
signrank函数
signrank Wilcoxon符号秩检验 [p,h]=signrank(x,y,alpha)
其中p给出两个配对样本x和y的中位数相等的假设的显著性概率。向量x,y的长度必须相同,alpha为给出的显著性水平,取值为0和1之间的数。h返回假设检验的结果。如果 这两个样本的中位数之差几乎为0,则h=0;若有显著差异,则h=1。
signtest函数
signtest 符号检验
[p,h]= signtest(x,y,alpha) 其中p给出两个配对样本x和y的中位数相等的假设的显著性概率。x和y若为向量,二者的长度必须相同;y亦可为标量,在此情况下,计算x的中位数与常数y之间的差异。alpha和h同上。
END