置信区间与假设检验matlab程序文件
- 格式:doc
- 大小:386.50 KB
- 文档页数:66
置信区间与假设检验matlab程序统计学专用程序---基于MATLAB 7.0开发---置信区间与假设检验7>2013年8月1日置信区间与假设检验程序【开发目的】众所周知,统计工作面对的数据量繁琐而且庞大,在统计的过程中和计算中容易出错,并统计决定着国民经济的命脉,开发此软件就是为了进行验证统计的准确性以及理论可行性,减少统计工作中的错误,使统计工作者更好地进行工作与学习;所以特意开发此程序来检验统计中的参数估计和假设检验。
【开发特色】本软件基于matlab7.0进行运算,对于样本的输入采用行矩阵的形式,并且开发了样本频数输入,对于多样本的输入可以减缓工作量,对于显著性水平本程序自带正态分布函数,t分布函数,F分布函数,分布函数的计算公式,不用再为查表和计算而苦恼,只需输入显著性水平即可,大大的简化了计算量。
【关键技术】矩阵输入进行频数判断条件循环语句的使用等【程序界面】【程序代码】此程序采用多文件结构,在建立文件时不能改变文件名;以下是各个文件的代码:(Zhucaidan.m :clc;disp '统计学专用' ;disp '1.假设检验' ;disp '2.置信区间' ;disp '3.使用说明' ;disp '4.打开代码' ;disp '0.退出程序' ;disp '请进行选择:' ;a input '' ;if a 0exit;else if a 1jiashejianyan ;else if a 2zhixinqujian ;else if a 3help1;else if a 4open 'zhucaidan' ;disp ' 菜单选项' ;disp '1.返回主菜单' ;disp '2.退出程序!' ;p input ' ' ;if p 1zhucaidan;else if p 2disp '正在退出,请稍候。
Matlab假设检验在统计学中,假设检验是用于确定一个样本是否具有特定性质的方法。
基于给定的数据和统计量,假设检验允许我们对一个或多个总体参数提出某种假设,并通过计算得到的统计量来判断该假设的可信度。
Matlab是一种强大的数值计算和编程环境,可以方便地进行假设检验。
本文将介绍如何在Matlab中执行常见的假设检验。
单样本 t检验单样本 t检验可以用于判断一个样本的平均值是否与给定的参考值有显著差异。
以下是使用Matlab进行单样本 t检验的步骤:1.导入数据。
首先,我们需要将样本数据导入Matlab中。
可以使用readmatrix或csvread等函数来读取文件中的数据。
2.计算平均值和标准差。
使用mean函数计算样本平均值,使用std函数计算样本标准差。
data = readmatrix('data.csv');sample_mean = mean(data);sample_std = std(data);3.假设检验。
使用ttest函数进行假设检验。
假设我们要检验的假设是样本平均值与参考值相等,可以使用ttest函数的默认参数进行检验。
[h, p] = ttest(data, reference_value);函数的输出h表示假设检验的结果,如果h=1则表示拒绝原假设,即样本平均值与参考值有显著差异;否则,接受原假设。
p是P值,用于衡量样本平均值与参考值之间的差异的显著性。
如果P值小于显著性水平(通常为0.05),则可以拒绝原假设。
双样本 t检验双样本t检验适用于比较两组样本的均值是否有显著差异。
以下是使用Matlab进行双样本 t检验的步骤:1.导入数据。
与单样本 t检验相似,首先需要将两组样本数据导入Matlab中。
2.假设检验。
使用ttest2函数进行假设检验。
[h, p] = ttest2(data1, data2);h和p的含义与单样本 t检验相同。
卡方检验卡方检验用于比较观察到的频数与期望的频数之间的差异。
Matlab进行假设检验程序Matlab进行假设检验程序:(以下均是m文件的程序)统计原理可以参考浙江大学第四版教程的假设检验这一章1 %单个总体均值的检验%function p1=T1_test(x,mu,alpha);x=input('输入x的值:');mu=input('输入mu的值:');%mu须检验的值%alpha=input('输入alpha的值:');%alpha为显著水平%n1=length(x);x1=mean(x);s1=std(x);t1=abs((x1-mu)/(s1/n1^0.5));p1=2*(1-tcdf(t1,n1-1));disp('单个总体均值的检验的p值为:'),disp(p1);2 %独立样本t检验%%这里均是用p值法进行双边检验%%条件:两总体方差相等,且总体样本x1,x2独立% function p=T_test2(x1,x2,alpha);x1=input('输入x1的值:');x2=input('输入x2的值:');alpha=input('输入alpha的值:');n1=length(x1);n2=length(x2);s1=std(x1);s2=std(x2);sw=((n1-1)*s1^2+(n2-1)*s2^2)/(n1+n2-2);t=mean(x1-x2)/(sw^0.5*(1/n1+1/n2)^0.5);p=2*(1-tcdf(t,n1+n2-2));disp('配对样本的t检验的p值为:'),disp(p);3 %配对样本T检验%function p=Paired_Samples_T est(x1,x2,alpha); x1=input('输入x1的值:');x2=input('输入x2的值:');alpha=input('输入alpha的值:');n=length(x1);d=x1-x2;d1=mean(d);t=abs(d1/(std(d)/n^0.5));p=2*(1-tcdf(t,n-1));disp('配对样本的t检验的p值为:'),disp(p);。
参数估计与假设检验1.常见分布的参数估计从某工厂生产的滚珠中随机抽取10个,测得滚珠的直径(单位mm)如下:15.14.8115.1115.2615.0815.1715.1214.9515.0514.87滚珠直径服从正太分布,但是N(, 2)不知道。
(90%的置信区间)x=[15.1414.8115.1115.2615.0815.1715.1214.9515.0514.87];[muhat,sigmahat,muci,sigmaci]=normfit(x,0.1)muhat =15.0560sigmahat =0.1397muci =14.975015.1370sigmaci =0.10190.2298二、总体标准差知道时的单个正态总体均值的U检验。
1.某切割机正常工作时,切割的金属棒的长度服从正态分布N(100,4)。
从该切割机的一批金属棒中随机抽取十五根,测得他们的长度如下:02100103.假设总体方差不变,试检验该切割机工作是否正常,及总体均值是否等于100mm?取显著水平=0.05.假设如下:H0:=0=100,H1:0利用MATLAB里面的ztest函数:x=[97 102 105 112 99 103 102 94 100 95 105 98 102 100 103];[h,p,muci,zval]=ztest(x,100,2,0.05)h =1 %h=1代表拒绝原假设p =0.0282%muci =100.12102.1455zval =2.1947那么是否H0:0,H1:0x=[97 102 105 112 99 103 102 94 100 95 105 98 102 100 103];[h,p,muci,zval]=ztest(x,100,2,0.05,’right’)h =1p =0.0141muci =100.2839Infzval =2.1947拒绝H0,接受H1。
即认为总体均值大于100.三、总体标准差未知时的单个正态总体的t检验(ttest)。
贝塔分布概率置信区间的程序matlab贝塔分布概率置信区间的程序matlab一、引言在统计学领域,贝塔分布(Beta Distribution)是一种连续型概率分布,它可以用来描述处于 [0,1] 区间内的随机变量的概率分布。
贝塔分布常被应用在可信度分析、风险评估以及贝叶斯统计中。
而在实际应用中,计算贝塔分布的概率置信区间是十分重要的,在本文中,我们将介绍在MATLAB中如何编写程序,实现贝塔分布概率置信区间的计算。
二、深度评估贝塔分布概率置信区间的理论基础在深入编写程序之前,我们先来深度评估贝塔分布概率置信区间的理论基础。
贝塔分布的概率密度函数可以表示为:<insert beta distribution formula>其中,α和β是分布的参数,而x是处于 [0,1] 区间内的随机变量。
根据统计学理论,一个随机变量的置信区间表示我们对该随机变量的估计值是多少置信。
对于贝塔分布而言,我们可以使用分位点的方法来计算概率置信区间。
通过计算得到的置信区间,我们可以对贝塔分布的概率分布进行更深入的理解和分析。
三、MATLAB编写贝塔分布概率置信区间的程序接下来,我们将介绍在MATLAB中如何编写程序,实现贝塔分布概率置信区间的计算。
以下是一个简单的MATLAB程序,用于计算贝塔分布的概率置信区间:<insert MATLAB code>通过以上的程序,我们可以输入贝塔分布的参数(α和β),以及所需的置信水平(例如95%置信水平),然后得到对应的概率置信区间。
这样的程序可以帮助我们在实际应用中更方便地进行贝塔分布的概率分析和统计推断。
四、总结与回顾通过本文的学习,我们深入探讨了贝塔分布概率置信区间的理论基础,并在MATLAB中编写了相应的程序。
贝塔分布作为一种重要的概率分布,在实际应用中具有广泛的应用价值。
而对于贝塔分布概率置信区间的计算,MATLAB提供了便捷和高效的解决方案。
使用Matlab进行统计分析和假设检验的步骤统计分析在科学研究和实际应用中起着重要的作用,可以帮助我们理解和解释数据背后的信息。
而Matlab作为一种强大的数据处理和分析软件,不仅可以进行常见的统计分析,还能进行假设检验。
本文将介绍使用Matlab进行统计分析和假设检验的步骤,具体内容如下:1. 数据准备和导入首先,我们需要准备待分析的数据,并将其导入到Matlab中。
可以使用Matlab提供的函数来读取数据文件,例如`csvread`或`xlsread`函数。
确保数据被正确导入,并查看数据的整体情况和结构。
2. 描述性统计在进行进一步的统计分析之前,我们需要对数据进行描述性统计,以了解数据的基本特征。
Matlab提供了一些常用的描述性统计函数,例如`mean`、`std`和`var`等,可以帮助计算均值、标准差和方差等统计量。
此外,还可以绘制直方图、箱线图和散点图等图形,以便更好地理解数据的分布和关系。
3. 参数估计和假设检验接下来,我们可以使用Matlab进行参数估计和假设检验,以验证对数据的猜测和假设。
参数估计可以通过最大似然估计或贝叶斯估计来实现,并使用Matlab 提供的相应函数进行计算。
在假设检验方面,Matlab还提供了一些常用的函数,例如`ttest`、`anova`和`chi2test`等,可以用于检验两个或多个总体间的均值差异、方差差异或相关性等。
在使用这些函数进行假设检验时,需要指定显著性水平(通常是0.05),以决定是否拒绝原假设。
4. 非参数统计分析除了参数估计和假设检验外,Matlab还支持非参数统计分析方法。
非参数方法不依赖于总体分布的具体形式,因此更加灵活和广泛适用。
在Matlab中,可以使用`ranksum`、`kstest`和`signrank`等函数来进行非参数假设检验,例如Wilcoxon秩和检验和Kolmogorov-Smirnov检验等。
5. 数据可视化最后,在完成统计分析和假设检验后,我们可以使用Matlab提供的数据可视化工具来展示分析结果。
作业一1.用matlab编写样本均值和方差的程序X=input('请输入样本值: \n');%以矩阵形式输入%a=mean(X) %求均值%b=var(X) %求方差%2.编写均值差的置信区间程序%两正态总体方差未知,但方差相等%X=input('请输入正态总体X的样本值: \n');Y=input('请输入正态总体Y的样本值: \n');S1=var(X); %求样本X的方差%S2=var(Y); %求样本Y的方差%n11=size(X); n22=size(Y);n1=n11(:,2); n2=n22(:,2);%计算样本X,Y的个数%Sw=sqrt(((n1-1)*S1+(n2-1)*S2)/(n1+n2-2)); %求Sw%a=mean(X); %求样本X的均值%b=mean(Y); %求样本Y的均值%L=input('请输入置信度: \n');alpha=1-L;t=tinv(1-alpha/2,n1+n2-2); %置信度为L的T值%d1=(a-b)-t*Sw.*sqrt(1./n1+1./n2); %置信区间下界%d2=(a-b)+t*Sw.*sqrt(1./n1+1./n2); %置信区间上界%c=[d1,d2] %均值差置信区间%%两正态总体方差已知,为sigma1,sigma2%X=input('请输入正态总体X的样本值: \n');Y=input('请输入正态总体Y的样本值: \n');a=mean(X); %求样本X的均值%b=mean(Y); %求样本Y的均值%n11=size(X); n22=size(Y);n1=n11(:,2); n2=n22(:,2); %计算样本X,Y的个数%L=input('请输入置信度: \n');alpha=1-L;u= norminv(1-alpha/2); %置信区间为1-alpha的U值% sigma1=input('请输入总体X的方差平方根:\n');sigma2=input('请输入总体Y的方差平方根:\n');d1=a-b-u*sqrt(sigma1.^2/n1+sigma2.^2/n2); %置信区间下界%d2=a-b+u*sqrt(sigma1.^2/n1+sigma2.^2/n2); %置信区间上界%c=[d1,d2] %均值差置信区间%3.编写两样本T检验程序%两样本t检验法,总体方差未知但相等%X=input('请输入正态总体X的样本值: \n');Y=input('请输入正态总体Y的样本值: \n');S1=var(X); %求样本X的方差%S2=var(Y); %求样本Y的方差%n11=size(X); n22=size(Y);n1=n11(:,2); n2=n22(:,2);%计算样本X,Y的个数%Sw=sqrt(((n1-1)*S1+(n2-1)*S2)/(n1+n2-2)); %求Sw%a=mean(X); %求样本X的均值%b=mean(Y); %求样本Y的均值%L=input('请输入置信度: \n');alpha=1-L;t=tinv(1-alpha/2,n1+n2-2); %置信度为L的T值%%% if (abs(a-b)>Sw.*t*sqrt(1/n1+1/n2)) %双侧检验,u1=u2%%% if ((a-b)>Sw.*t*sqrt(1/n1+1/n2)) %单侧检验,u1-u2<=0%%% if ((a-b)<-(Sw.*t*sqrt(1/n1+1/n2))) %单侧检验,u1-u2>=0%disp('拒绝假设')else disp('假设成立')end4.证明样本方差是总体方差的无偏估计量(详见概率课本P159)。
95%置信区间matlab95%置信区间在统计中是非常重要的,用于确定一个参数估计的可靠范围。
在MATLAB中,可以使用stats工具箱中的t检验来获得95%置信区间。
下面是一个简单的例子来说明如何在MATLAB中计算95%置信区间。
假设我们有一个样本数据集,我们想要计算该数据集均值的95%置信区间。
首先,我们需要计算t值,这可以使用以下MATLAB代码来实现:```matlabmean_value = 32; %假设我们已知总体均值为32sample_size = 100; %样本大小为100t_value = tcrit(0.05/2, sample_size-1)```其中,tcrit函数计算自由度的t值,在这个例子中,自由度是样本大小的1/2减1。
接下来,我们需要计算均值的95%置信区间上下限。
这可以通过使用以下MATLAB代码来实现:```matlabconfidence_interval = mean_value - 2 * t_value * sqrt((1/sample_size) *sum((data - mean_value).^2)) ...mean_value + 2 * t_value * sqrt((1/sample_size) * sum((data - mean_value).^2));```其中,data是包含样本数据的向量,sum函数计算数据集方差。
最后,我们可以使用以下MATLAB代码将置信区间表示为字符串:```matlabfprintf('95%置信区间为: [%f, %f]', ...confidence_interval(1), confidence_interval(2));```这将输出95%置信区间的上限和下限。
总结一下,在MATLAB中计算95%置信区间的方法包括:1)计算t值;2)计算置信区间上下限;3)将置信区间表示为字符串。
MATLAB参数估计与假设检验课型:新授课教具:多媒体教学设备,matlab教学软件一、目标与要求掌握matlab统计工具箱中的基本统计命令及其应用。
二、教学重点与难点本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用基本统计量的相关命令实现相应的功能。
三、教学方法本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。
四、教学内容上机内容回顾一、基本的统计量命令二、常见概率分布函数新授课统计推断:通过对样本的处理和分析,得出与总参数相关的结论。
统计推断包括参数估计和假设检验两部分内容。
示例:吸烟对血压有影响吗?对吸烟和不吸烟两组人群进行24小时动态监测,吸烟组66人,不吸烟组62人,分别测量24小时收缩压(24hSBP)和舒张压(24hDBP),白天(6Am-10Pm)收缩压(dSBP)和舒张压(dDBP ),夜间(10Pm-6Am)收缩压(nSBP)和舒张压(nDBP)。
然后分别计算每类的样本均值和标准差问题:1)任何一个考察的时段,吸烟和不吸烟群体的血压的真值分别是多少?(参数估计)2)吸烟和不吸烟群体的血压的真值是否有区别?(假设检验)概念:第一部分:一:点估计1 矩估计法2 似然函数法二、评价估计优劣的标准1 无偏性2 有效性3一致性三、区间估计参数估计的MATLAB实现:例题:50名17岁城市男性学生身高(单位:cm):170.1 179.0 171.5 173.1 174.1 177.2 170.3 176.2 163.7 175.4 163.3 179.0 176.5 178.4 165.1 179.4 176.3 179.0 173.9 173.7 173.2 172.3 169.3 172.8 176.4 163.7 177.0 165.9 166.6 167.4 174.0 174.3 184.5 171.9 181.4 164.6 176.4 172.4 180.3 160.5 166.2 173.5 171.7 167.9 168.7 175.6 179.6 171.6 168.1 172.2 运行结果标准差区间估计(4.4863,6.6926)标准差点估计5.3707均值区间估计(171.1777, 174.2303)均值点估计172.7040第二部分假设检验总体均值的假设检验•总体方差的假设检验•两总体的假设检验•0-1分布总体均值的假设检验•总体分布正态性检验•假设检验的MATLAB实现假设检验MATLAB的实现MATLAB命令使用说明输入参数x是样本(n维数组),mu是H0中的µ0,sigma是总体标准差σ,alpha是显著性水平α(缺省时设定为0.05),tail是对双侧检验和两个单侧检验的标识,用备选假设H1确定:H1为µ≠µ0时令tail=0(可缺省);H1为µ>µ0时令tail=1;H1为µ<µ0时令tail=-1。
假设检验的MATLAB 实现1. 方差已知时单个正态总体均值的U 检验函数:ztest ()语法:h = ztest (x, m, sigma)h = ztest (x, m, sigma, alpha)[h, sig, ci, zval] = ztest (x, m, sigma, alpha, tail)h = ztest (x, m, sigma) 进行显著水平为0.05的U 检验,以检验标准差为sigma 的正态总体的均值是否等于m .即总体2~(,sigm a )X N μ,样本12(,,,)n x x x x = 来自总体X ,欲检验假设0:H m μ=.返回参数h=0或1,如果h 为1,则在显著性水平为0.05时拒绝0H ;如果h 为0,则在显著性水平为0.05时接受0H .h = ztest (x, m, sigma, alpha) 给出了显著性水平控制参数alpha .[h, sig, ci, zval] = ztest (x, m, sigma, alpha, tail) 可以通过制定tail 的值来控制备择假设1H .tail 的取值及意义为:tail = 0表示备择假设为1:H m μ≠,即进行双侧检验; tail =1-表示备择假设为1:H m μ<,即进行左边单侧检验; tail = 1表示备择假设为1:H m μ>,即进行右边单侧检验. 返回值sig 是标准正态分布以统计量x U =的观测值为分位数的尾部概率,称为临界概率或显著性概率.即tail = 0时 {}sig P u U=>;tail =1-时 {}sig P u U =<; tail = 1时 {}sig P u U =>.其中~(0,1)u N .当sig < alpha (等价于h=1)时拒绝0H ,否则接受0H . 2. 方差未知时单个正态总体均值的t 检验函数:ttest ()语法:h = ttest (x, m)h = ttest (x, m, alpha)[h, sig, ci] = ttest (x, m, alpha, tail)h = ttest (x, m) 进行显著水平为0.05的t 检验,以检验标准差未知时正态分布样本的均值是否等于m .返回参数h=1表示在显著性水平为0.05时拒绝0H ,h=0表示在显著性水平为0.05时接受0H .h = ztest (x, m, alpha) 给出了显著性水平控制参数alpha .[h, sig, ci] = ttest (x, m, alpha, tail) 可以通过制定tail 的值来控制备择假设1H .tail的取值及意义与ztest 函数一致.返回值sig 是(1)t n -分布以统计量x m T -= 的观测值为分位数的临界概率,即tail = 0时 {}sig P t T=>;tail =1-时 {}sig P t T =<; tail = 1时 {}sig P t T =>.其中~(1)t t n -.当sig < alpha (等价于h=1)时拒绝0H ,否则接受0H . 3. 两个正态总体均值差的t 检验函数:ttest2 ()语法:[h, sig, ci] = ttest2 (x,y)[h, sig, ci] = ttest2 (x, y, alpha)[h, sig, ci] = ttest2 (x, y, alpha, tail)进行两正态总体均值是否相等的t 检验,使用的统计量为x y T =,各参数的含义与函数ttest 一致.。
MATLAB进⾏假设检验4.8.1 已知,单个正态总体的均值µ的假设检验(U检验法)函数 ztest格式 h = ztest(x,m,sigma) % x为正态总体的样本,m为均值µ0,sigma为标准差,显著性⽔平为0.05(默认值)h = ztest(x,m,sigma,alpha) %显著性⽔平为alpha[h,sig,ci,zval] = ztest(x,m,sigma,alpha,tail) %sig为观察值的概率,当sig为⼩概率时则对原假设提出质疑,ci为真正均值µ的1-alpha置信区间,zval为统计量的值。
说明若h=0,表⽰在显著性⽔平alpha下,不能拒绝原假设;若h=1,表⽰在显著性⽔平alpha下,可以拒绝原假设。
原假设:,若tail=0,表⽰备择假设:(默认,双边检验);tail=1,表⽰备择假设:(单边检验);tail=-1,表⽰备择假设:(单边检验)。
例4-74 某车间⽤⼀台包装机包装葡萄糖,包得的袋装糖重是⼀个随机变量,它服从正态分布。
当机器正常时,其均值为0.5公⽄,标准差为0.015。
某⽇开⼯后检验包装机是否正常,随机地抽取所包装的糖9袋,称得净重为(公⽄)0.497, 0.506, 0.518, 0.524, 0.498, 0.511, 0.52, 0.515, 0.512问机器是否正常?解:总体µ和σ已知,该问题是当为已知时,在⽔平下,根据样本值判断µ=0.5还是。
为此提出假设:原假设:备择假设:>> X=[0.497,0.506,0.518,0.524,0.498,0.511,0.52,0.515,0.512];>> [h,sig,ci,zval]=ztest(X,0.5,0.015,0.05,0)结果显⽰为h =1sig =0.0248 %样本观察值的概率ci =0.5014 0.5210 %置信区间,均值0.5在此区间之外zval =2.2444 %统计量的值结果表明:h=1,说明在⽔平下,可拒绝原假设,即认为包装机⼯作不正常。
我们需要了解什么是概率密度函数。
概率密度函数通常用于描述连续型随机变量的概率分布情况,它是对随机变量概率分布的一种描述方式。
在统计学和概率论中,我们经常需要根据样本数据来推断总体参数的范围,而置信区间就是用来估计总体参数的范围的一种方法。
在matlab中,我们可以利用已知的概率密度函数来求置信区间。
下面我们以正态分布为例进行讲解。
1. 理解正态分布正态分布是一种重要的连续型概率分布,它具有以均值为中心对称的特点。
正态分布的概率密度函数可以用数学公式表示为:\[f(x)=\frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]其中,μ为均值,σ为标准差。
在matlab中,我们可以使用normpdf函数来计算正态分布的概率密度函数值。
2. 求置信区间假设我们已知一组样本数据,我们想要根据这组样本数据来估计总体的均值。
我们可以利用已知的概率密度函数来求置信区间。
在matlab中,我们可以使用normfit函数来估计正态分布总体的均值和标准差。
利用norminv函数来计算置信区间的上下限。
假设我们有一组样本数据x,我们可以按照以下步骤来求置信区间:```matlab估计总体均值和标准差[mu, sigma] = normfit(x);设置置信水平alpha = 0.05;求置信区间ci = norminv([alpha/2 1-alpha/2], mu, sigma);```在上面的代码中,normfit函数用于估计总体均值和标准差,alpha表示置信水平,ci表示置信区间的上下限。
3. 示例下面我们通过一个简单的示例来演示如何利用matlab求正态分布的置信区间。
假设我们有一组随机变量x的样本数据:```matlabx = [65, 72, 68, 70, 74, 67, 71, 70, 72, 69];```我们想要根据这组样本数据来估计总体的均值,并计算置信区间。
假设检验及其MATLAB实现(wenjie调试,仅供参考) 在总体服从正态分布的情况下,可用以下命令进行假设检验. 1、总体方差sigma2已知时,总体均值的检验使用z-检验[h,sig,ci,zval] = ztest(x,mu,sigma,alpha,tail)检验数据x的关于均值的某一假设是否成立,其中sigma为已知方差,alpha为显著性水平,究竟检验什么假设取决于tail的取值:tail = 0 或'both',检验假设“x 的均值等于m ”为默认设置,双侧检验;tail = 1或'right',检验假设“x 的均值大于m ”,右侧检验;tail =-1或'left',检验假设“x 的均值小于m ”,左侧检验;tail的缺省值为0,alpha的缺省值为0.05.返回值h 为一个布尔值,h=1 表示可以拒绝假设,h=0 表示不可以拒绝假设,sig 为假设成立的概率,ci 为均值的1-alpha 置信区间,zval是z统计量的值.2、总体方差sigma2未知时,总体均值的检验使用t-检验[h,sig,ci,stats] = ttest(x,mu,alpha,tail)检验数据x 的关于均值的某一假设是否成立,其中alpha 为显著性水平,究竟检验什么假设取决于tail 的取值:tail = 0,检验假设“x 的均值等于m ”tail = 1,检验假设“x 的均值大于m ”tail =-1,检验假设“x 的均值小于m ”tail的缺省值为0,alpha的缺省值为0.05.返回值h 为一个布尔值,h=1 表示可以拒绝假设,h=0 表示不可以拒绝假设,sig 为假设成立的概率,ci 为均值的1-alpha 置信区间.stats:'tstat'为检验统计量的值,'df'为检验的自由度,'sd'为总体标准差的估计(对于配对样本的检验,此为x-y的标准差)3、两总体均值的假设检验使用t-检验[h,sig,ci,stats] = ttest2(x,y,alpha,tail)检验数据x ,y 的关于均值的某一假设是否成立,其中alpha 为显著性水平,究竟检验什么假设取决于tail 的取值:tail = 0,检验假设“x 的均值等于y 的均值”tail = 1,检验假设“x 的均值大于y 的均值”tail =-1,检验假设“x 的均值小于y 的均值”tail的缺省值为0,alpha的缺省值为0.05.返回值h 为一个布尔值,h=1 表示可以拒绝假设,h=0 表示不可以拒绝假设,sig 为假设成立的概率,ci 为与x与y均值差的的1-alpha 置信区间.4、非参数检验:总体分布的检验Matlab工具箱提供了两个对总体分布进行检验的命令:(1)h = normplot(x)此命令显示数据矩阵x的正态概率图.如果数据来自于正态分布,则图形显示出直线性形态.而其它概率分布函数显示出曲线形态. (2)h = weibplot(x)此命令显示数据矩阵x的Weibull概率图.如果数据来自于Weibull 分布,则图形将显示出直线性形态.而其它概率分布函数将显示出曲线形态.例1 某车间用一台包装机包装糖果。
统计学专用程序---基于MATLAB 7.0开发 ---置信区间与假设检验2013年8月1日置信区间与假设检验程序【开发目的】众所周知,统计工作面对的数据量繁琐而且庞大,在统计的过程中和计算中容易出错,并统计决定着国民经济的命脉,开发此软件就是为了进行验证统计的准确性以及理论可行性,减少统计工作中的错误,使统计工作者更好地进行工作与学习;所以特意开发此程序来检验统计中的参数估计和假设检验。
【开发特色】本软件基于matlab7.0进行运算,对于样本的输入采用行矩阵的形式,并且开发了样本频数输入,对于多样本的输入可以减缓工作量,对于显著性水平本程序自带正态分布函分布函数的计算公式,不用再为查表和计算而苦恼,只需输数,t分布函数,F分布函数,2入显著性水平即可,大大的简化了计算量。
【关键技术】矩阵输入进行频数判断条件循环语句的使用等【程序界面】【程序代码】此程序采用多文件结构,在建立文件时不能改变文件名;以下是各个文件的代码:(Zhucaidan.m):clc;disp('统计学专用');disp('1.假设检验');disp('2.置信区间');disp('3.使用说明');disp('4.打开代码');disp('0.退出程序');disp('请进行选择:');a=input('');if a==0exit;else if a==1jiashejianyan ;else if a==2zhixinqujian ;else if a==3help1;else if a==4open('zhucaidan');disp(' 菜单选项');disp('1.返回主菜单');disp('2.退出程序!');p=input(' ');if p==1zhucaidan;else if p==2disp('正在退出,请稍候。
');(exit);endendendendendendend(Zhixinqujian.m) :clc;disp(' 置信区间');disp(' 菜单选项');disp('0.退出程序!!!');disp('1.返回主菜单');disp('2.方差已知,待估参数为u');disp('3.方差未知,待估参数为u');disp('4.均值已知,待估参数为方差');disp('5.均值未知,待估参数为方差'); disp('请进行选择:');c=input('');if c==0exit;else if c==1zhucaidan;else if c==2uguji;else if c==3uguji1;else if c==4fguji;else if c==5fguji1;endendendendendend(Jiashejianyan.m):clc;disp('*********假设检验**********'); disp('*********菜单选项**********'); disp('********0.退出程序!!!******'); disp('********1.返回主菜单*******'); disp('***2.σ已知,对u进行检验***'); disp('***3.σ未知,对u进行检验***'); disp('***4.u已知,对σ进行检验***'); disp('***5.u未知,对σ进行检验***'); disp('******请进行选择:');c=input('');if c==0exit;else if c==1zhucaidan;else if c==2ujianyan;else if c==3ujianyan1;else if c==4fangcha;else if c==5fangcha1;endendendendendendHelp.m:clc;disp('--假设检验与置信区间--');disp('是否使用帮助(1/0)');c=input('');if c==1clc;disp(' --假设检验与置信区间--');disp('********************帮助与操作说明*************');disp('1.请严格按照说明与提示进行操作,否则可能会出现错误!!');disp('2.对于样本的输入,如果频数都为1时直接回车就可,不必输入!!'); disp('3.版权所有,仿冒必究!!');disp('0.退出说明进入主菜单!!');t=input('');if t==0zhucaidan;else if t~=0exit;endendelse if c==0zhucaidan;else if c~=1|c~=0exit;endendend(Help1.m):clc;disp(' --假设检验与置信区间--');disp('********************帮助与操作说明*************');disp('1.请严格按照说明与提示进行操作,否则可能会出现错误!!');disp('2.对于样本的输入,如果频数都为1时直接回车就可,不必输入!!'); disp('3.版权所有,仿冒必究!!');disp('0.退出说明进入主菜单!!');t=input('');if t==0zhucaidan;else if t~=0exit;endend(Ujianyan.m):clc;disp(' 菜单选项');disp('0.返回主菜单');disp('1.返回上一层');disp('2.退出程序!!!');disp('3.方差已知,单个母体,u检验');disp('4.方差已知,两个母体,t检验');disp('请进行选择: ');c=input('');if c==0zhucaidan;else if c==1jiashejianyan;else if c==2exit;else if c==3clc;disp('u检验,方差已知,服从N(0,1)');disp(' 检验假设选择');disp('0.返回主菜单');disp('1.返回上一层');disp('2.退出程序!!!');disp('3.H0:μ=μ0;H1:μ>μ0');disp('4.H0:μ=μ0;H1:μ<μ0');disp('5.H0:μ=μ0;H1:μ≠μ0');disp('请进行选择: ');c=input('');if c==0zhucaidan;else if c==1jiashejianyan;else if c==2exit;else if c==3clc;disp('H0:μ=μ0;H1:μ>μ0');disp('请输入子样样本,以行矩阵的形式输入');A=input('');disp('请输入各个子样样本的频数,以行矩阵的形式输入');B=input('');disp('请输入均值:');a=input('');disp('请输入标准差:');b=input('');disp('请输入显著性水平α:');d=input('');n=numel(A);sum=0;sun=0;o=numel(B);if n==ofor i=1:nsum=sum+A(1,i)*B(1,i);endfor j=1:nsun=sun+B(1,j);endu=(sum/sun-a)*sqrt(sun)/belse if o<nfor i=1:nsum=sum+A(1,i);endu=(sum/n-a)*sqrt(n)/bendendu1=norminv(1-d,0,1)if u>=u1disp('****该假设检验拒绝H0,接受H1****');else if u<u1disp('****该假设检验拒绝H1,接受H0****');endendelse if c==4clc;disp('H0:μ=μ0;H1:μ<μ0');disp('请输入子样样本,以行矩阵的形式输入');A=input('');disp('请输入各个子样样本的频数,以行矩阵的形式输入'); B=input('');disp('请输入均值:');a=input('');disp('请输入标准差:');b=input('');disp('请输入显著性水平α:');d=input('');n=numel(A);sum=0;sun=0;o=numel(B);if n==ofor i=1:nsum=sum+A(1,i)*B(1,i);endfor j=1:nsun=sun+B(1,j);endu=(sum/sun-a)*sqrt(sun)/belse if o<nfor i=1:nsum=sum+A(1,i);endu=(sum/n-a)*sqrt(n)/bendendu1=norminv(1-d,0,1)if u<=u1disp('****该假设检验拒绝H0,接受H1****');else if u>u1disp('****该假设检验拒绝H1,接受H0****');endendelse if c==5clc;disp('H0:μ=μ0;H1:μ≠μ0');disp('请输入子样样本,以行矩阵的形式输入');A=input('');disp('请输入各个子样样本的频数,以行矩阵的形式输入'); B=input('');disp('请输入均值:');a=input('');disp('请输入标准差:');b=input('');disp('请输入显著性水平α:');d=input('');n=numel(A);sum=0;sun=0;o=numel(B);if n==ofor i=1:nsum=sum+A(1,i)*B(1,i);endfor j=1:nsun=sun+B(1,j);endu=(sum/sun-a)*sqrt(sun)/belse if o<nfor i=1:nsum=sum+A(1,i);endu=(sum/n-a)*sqrt(n)/bendendu1=norminv(1-0.5*d,0,1);u1if abs(u)>=u1disp('****该假设检验拒绝H0,接受H1****');else if abs(u)<u1disp('****该假设检验拒绝H1,接受H0****');endendendendendendendendelse if c==4clc;disp('u检验,方差已知,服从N(0,1)');disp(' 检验假设选择');disp('0.返回主菜单');disp('1.返回上一层');disp('2.退出程序!!!');disp('3.H0:μ1=μ2;H1:μ1>μ2');disp('4.H0:μ1=μ2;H1:μ1<μ2');disp('5.H0:μ1=μ2;H1:μ1≠μ2');disp('请进行选择: ');c=input('');if c==0zhucaidan;else if c==1jiashejianyan;else if c==2exit;else if c==3clc;disp('H0:μ1=μ2;H1:μ1>μ2');disp('请输入子样样本1');A=input('');disp('请输入样本1的频数,以行矩阵的形式输入');C=input('');disp('请输入子样样本2');B=input('');disp('请输入样本2的频数,以行矩阵的形式输入');D=input('');disp('请输入标准差1:');a=input('');disp('请输入标准差2:');b=input('');disp('请输入显著性水平α:');d=input('');m=numel(A);n=numel(B);sum=0;sun=0;jiegua=0;jieguo=0;o=numel(C);z=numel(D);if m==o&&n==zfor i=1:msum=sum+A(1,i)*C(1,i);jieguo=jieguo+C(1,i);endfor j=1:nsun=sun+B(1,j)*D(1,j);jiegua=jiegua+D(1,j);endu=((sum/jieguo)-(sun/jiegua))/(sqrt(((a^2)/jieguo)+((b^2)/jiegua))) else if o<m&&n==zfor i=1:msum=sum+A(1,i);endfor j=1:nsun=sun+B(1,j)*D(1,j);jiegua=jiegua+D(1,j);endu=((sum/m)-(sun/jiegua))/(sqrt(((a^2)/m)+((b^2)/jiegua)))else if o==m&&z<nfor i=1:msum=sum+A(1,i)*C(1,i);jieguo=jieguo+C(1,i);endfor j=1:nsun=sun+B(1,j);endu=((sum/jieguo)-(sun/n))/(sqrt(((a^2)/jieguo)+((b^2)/n)))else if o<m&&z<nfor i=1:msum=sum+A(1,i);endfor j=1:nsun=sun+B(1,j);endu=((sum/m)-(sun/n))/(sqrt(((a^2)/m)+((b^2)/n)))endendendendu1=norminv(1-d,0,1)if u>=u1disp('****该假设检验拒绝H0,接受H1****');else if u<u1disp('****该假设检验拒绝H1,接受H0****');endendelse if c==4clc;disp('H0:μ1=μ2;H1:μ1<μ2');disp('请输入子样样本1');A=input('');disp('请输入样本1的频数,以行矩阵的形式输入');C=input('');disp('请输入子样样本2');B=input('');disp('请输入样本2的频数,以行矩阵的形式输入');D=input('');disp('请输入标准差1:');a=input('');disp('请输入标准差2:');b=input('');disp('请输入显著性水平α:');d=input('');m=numel(A);n=numel(B);sum=0;sun=0;jiegua=0;jieguo=0;o=numel(C);z=numel(D);if m==o&&n==zfor i=1:msum=sum+A(1,i)*C(1,i);jieguo=jieguo+C(1,i);endfor j=1:nsun=sun+B(1,j)*D(1,j);jiegua=jiegua+D(1,j);endu=((sum/jieguo)-(sun/jiegua))/(sqrt(((a^2)/jieguo)+((b^2)/jiegua))) else if o<m&&n==zfor i=1:msum=sum+A(1,i);endfor j=1:nsun=sun+B(1,j)*D(1,j);jiegua=jiegua+D(1,j);endu=((sum/m)-(sun/jiegua))/(sqrt(((a^2)/m)+((b^2)/jiegua)))else if o==m&&z<nfor i=1:msum=sum+A(1,i)*C(1,i);jieguo=jieguo+C(1,i);endfor j=1:nsun=sun+B(1,j);endu=((sum/jieguo)-(sun/n))/(sqrt(((a^2)/jieguo)+((b^2)/n)))else if o<m&&z<nfor i=1:msum=sum+A(1,i);endfor j=1:nsun=sun+B(1,j);endu=((sum/m)-(sun/n))/(sqrt(((a^2)/m)+((b^2)/n)))endendendendu1=norminv(1-d,0,1)if u<=u1disp('****该假设检验拒绝H0,接受H1****');else if u>u1disp('****该假设检验拒绝H1,接受H0****');endendelse if c==5clc;disp('H0:μ1=μ2;H1:μ1≠μ2');disp('请输入子样样本1');A=input('');disp('请输入样本1的频数,以行矩阵的形式输入');C=input('');disp('请输入子样样本2');B=input('');disp('请输入样本2的频数,以行矩阵的形式输入');D=input('');disp('请输入标准差1:');a=input('');disp('请输入标准差2:');b=input('');disp('请输入显著性水平α:');d=input('');m=numel(A);n=numel(B);sum=0;sun=0;jiegua=0;jieguo=0;o=numel(C);z=numel(D);if m==o&&n==zfor i=1:msum=sum+A(1,i)*C(1,i);jieguo=jieguo+C(1,i);endfor j=1:nsun=sun+B(1,j)*D(1,j);jiegua=jiegua+D(1,j);endu=((sum/jieguo)-(sun/jiegua))/(sqrt(((a^2)/jieguo)+((b^2)/jiegua))) else if o<m&&n==zfor i=1:msum=sum+A(1,i);endfor j=1:nsun=sun+B(1,j)*D(1,j);jiegua=jiegua+D(1,j);endu=((sum/m)-(sun/jiegua))/(sqrt(((a^2)/m)+((b^2)/jiegua))) else if o==m&&z<nfor i=1:msum=sum+A(1,i)*C(1,i);jieguo=jieguo+C(1,i);endfor j=1:nsun=sun+B(1,j);endu=((sum/jieguo)-(sun/n))/(sqrt(((a^2)/jieguo)+((b^2)/n))) else if o<m&&z<nfor i=1:msum=sum+A(1,i);endfor j=1:nsun=sun+B(1,j);endu=((sum/m)-(sun/n))/(sqrt(((a^2)/m)+((b^2)/n)))endendendendu1=norminv(1-0.5*d,0,1)if abs(u)>=u1disp('****该假设检验拒绝H0,接受H1****');else if abs(u)<u1disp('****该假设检验拒绝H1,接受H0****');endendendendendendendendendendendendenddisp('菜单选项');disp('1.继续运算');disp('2.返回主菜单');disp('3.打开代码');disp('4.退出程序!');p=input(' ');if p==1(ujianyan);else if p==2zhucaidan;else if p==3open('ujianyan');disp(' 菜单选项');disp('1.返回主菜单');disp('2.退出程序!');p=input(' ');if p==1zhucaidan;else if p==2disp('正在退出,请稍候。