1. 引言
假设检验(Hypothesis Testing) [1] - [6] ,又称统计假设检验,是统计推断的一类重要问题,在日常生活生产和科学研究中应用极为广泛。假设检验是在总体的分布函数未知或只知道其形式但不知道其参数的情况下,为了推断总体的某些特性,提出某些关于总体的假设,然后给出一个合理的法则,根据这一法则,利用已知样本对所提出的假设作出决策,是接受还是拒绝。假设检验是作出这一决策的过程。常用的假设检验方法有Z检验、t检验、
检验、F检验等。本文用到的检验方法为
检验。假设检验的一般步骤如下:
(1) 根据实际问题的要求,提出原假设H0与备择假设H1;
(2) 给定显著性水平
及确定样本容量n;
(3) 选定合适的检验统计量以及拒绝域的形式;
(4) 根据P{当H0为真时拒绝H0}
求出拒绝域;
(5) 根据样本的观察值做出判断,是接受H0,还是拒绝H0。
MATLAB [4] - [10] 是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,是目前国际上最流行、应用最广泛的科学与工程计算软件。MATLAB主要应用于数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、深度学习等。它已经成为高等数学、线性代数、数理统计、数字信号处理等课程的基本工具。
假设检验是数理统计中的一类重要问题,对于单个正态总体均值的假设检验,MATLAB提供了两个函数:[h, sig, ci, zval] = ztest(x, mu, sigma, alpha, tail) (Z检验)和[h, sig, ci] = ttest(x, mu, alpha, tail) (t检验),其中输入参数x为样本,mu为假设检验中的
,sigma为总体标准差
,alpha为显著性水平
,alpha缺省值为0.05,tail为假设检验类型的标识,tail = 0为双边假设检验,tail = 1为右边假设检验,tail = −1为左边假设检验,tail缺省值为0。输出参数h = 0,表示接受原假设H0,h = 1表示拒绝原假设H0,sig为犯第一类错误的概率,即P{当H0为真时拒绝H0},当sig为小概率时则对原假设H0提出质疑,ci为置信水平为1 − alpha的均值
的置信区间,zval为统计量的观察值
。
而对于总体方差假设检验的函数MATLAB是没有提供的。本文旨在给出单个正态总体方差假设检验的MATLAB程序,并给出具体应用实例验证程序的可行性。
2. 单个正态总体方差假设检验的结论
设总体
,其中
,
未知,
是来自总体X的样本。在显著性水平
下检验假设:
a)
,
(双边假设检验)
b)
,
(右边假设检验)
c)
,
(左边假设检验)
以上三种假设检验的拒绝域分别为
a)
或
b)
c)
其中
。
3. MATLAB实现
根据单个正态总体方差假设检验的结论,编写相关的MATLAB程序。建立M文件并编写如下代码,保存为chi2test.m。利用此函数可以检验
未知情况下的关于
的三种假设检验问题。
function [h,chi2]=chi2test(x,sigma02,alpha,tail)
%卡方假设检验
% h=1拒绝原假设H0,h=0接受H0
% chi2为统计量的值
% x为样本
% sigma02为要检验的总体方差的值
% alpha为显著性水平,默认为0.05
% tail=0为双边检验,tail=1为右边检验,tail=-1为左边检验. 默认tail=0
if nargin<3||isempty(alpha)% 设置显著性水平alpha的缺省值
alpha=0.05;
end
if nargin<4% 设置假设检验类型的缺省值
tail=0;
end
n=length(x);% 样本容量
chi2=(n-1)*var(x)/sigma02;% 计算统计量的值
if tail==0
c1=chi2inv(1-alpha/2,n-1);% 计算分位点的值
c2=chi2inv(alpha/2,n-1);
if chi2>=c1||chi2<=c2% 判断统计量的值是否落入双边检验的拒绝域中
h=1;
else
h=0;
end
end
if tail==1
c1=chi2inv(1-alpha,n-1);
if chi2>=c1% 判断统计量的值是否落入右边检验的拒绝域中
h=1;
else
h=0;
end
end
if tail==-1
c2=chi2inv(alpha,n-1);
if chi2<=c2% 判断统计量的值是否落入左边检验的拒绝域中
h=1;
else
h=0;
end
end
end
4. 实例
例1 某公司生产的发动机部件的直径对应的随机变量X服从正态分布。该公司称X的标准差为
,现随机抽取5个部件,测得它们的直径分别为:1.32,1.55,1.36,1.40,1.44。问能否认为目前该公司生产这种直径的技术稳定性较以往有明显的改变?(显著性水平
)
解这是双边假设检验问题。在显著性水平
下提出检验假设
,
由题知,
,
,
,
,拒绝域为
或
经计算
,落入到了拒绝域中,所以拒绝H0。
编写代码如下:
x=[1.32,1.55,1.36,1.40,1.44]; % 样本
alpha=0.05;% 显著性水平
sigma02=0.048^2;
[h,chi2]=chi2test(x,sigma02,alpha)
运行结果为:h = 1;chi2 = 13.5069。
h = 1,所以拒绝H0,即认为目前该公司生产这种直径的技术稳定性较以往有明显改变。
例2 某工厂用自动生产线生产金属丝,假定金属丝的折断力为X (单位:N)服从正态分布
,其合格标准为方差不超过64。某日开工后,抽取9根作折断检测,测得结果如下:578,572,570,568,572,570,596,586,568。试问:此日自动生产线是否工作正常?(显著性水平
)
解这是右边假设检验问题。在显著性水平
下提出检验假设
,
由题知,
,
,
,拒绝域为
经计算
,没有落入拒绝域中,所以接受H0。
编写代码如下:
x=[578,572,570,568,572,570,596,586,568];% 样本
alpha=0.02;% 显著性水平
sigma02=64;
[h,chi2]=chi2test(x,sigma02,alpha,1)
运行结果为:h = 0;chi2 = 11.4722。
h = 0,所以接受H0,即认为此日自动生产线工作正常。
例3 假设某炼铁厂铁水中含碳量X (单位:kg)服从正态分布
,现对工艺进行了改进,从中抽取了7炉铁水,测得含碳量数据如下:4.421,4.052,4.357,4.394,4.326,4.287,4.683。试问:新工艺炼出的铁水含碳量的方差是否小于0.1122?(显著性水平
)
解这是左边假设检验问题。在显著性水平
下提出检验假设
,
由题知,
,
,
,拒绝域为
经计算
,没有落入拒绝域中,所以接受H0。
编写代码如下:
x=[4.421,4.052,4.357,4.394,4.326,4.287,4.683]; % 样本
alpha=0.01;% 显著性水平
sigma02=0.112^2;
[h,chi2]=chi2test(x,sigma02,alpha,-1)
运行结果为:h = 0;chi2 = 16.7860。
h = 0,所以接受H0,即新工艺炼出的铁水含碳量的方差不小于0.1122。
5. 结论
利用MATLAB语言编写了关于单个正态总体方差假设检验的程序,可以检验双边及单边检验问题,并给出了具体的应用实例,验证了程序的可行性。MATLAB没有关于单个正态总体方差假设检验的相关命令,因此函数chi2test可以作为MATLAB软件在假设检验问题命令上的一个有效补充。
基金项目
辽宁省普通高等教育本科教学改革研究项目(辽教办[2021] 254号)。