资源描述
班级:信计1502组号:35 组员:何芝芝、吕瑞杰、陈彦睿
专业: 信息与计算科学
班级: 信计1502(35组)
学生姓名: 吕瑞杰 陈炎睿 何芝芝
指导教师: 张志刚
完成时间: 2024年5月11日
概率论与数理统计
第三次上机报告
- 1 -
Matlab 概率论与数理统计上机练习(3)
五、 假设检验
【例】(离散型分布检验)
某工厂近五年发生了63起事故,按星期几可以分为[9 10 11 8 13 12],问该厂发生的事故数是有与星期几有关?
clear all
mi=[9 10 11 8 13 12]; % 周一到周六的事故数
n=sum(mi); % 总的事故数
r=0; % 总体中没有未知参数
k=length(mi); % 天数
pii=1/6; % 事故的概率
kai2=0;
kai2=sum((mi-n*pii).^2)./(n*pii); % k2统计量的值
alpha1=0.05; % 显著性水平
alpha2=0.01; % 显著性水平
alpha3=0.001; % 显著性水平
la1=chi2inv(1-alpha1,k-r-1); % kai2分布的累计概率,即临界值
la2=chi2inv(1-alpha2,k-r-1); % kai2分布的累计概率,即临界值
la3=chi2inv(1-alpha3,k-r-1); % kai2分布的累计概率,即临界值
pz=1-chi2cdf(kai2,k-r-1);%右侧概率
if kai2>la2
xzx='**';
elseif kai2>la1
xzx='*';
else
xzx='-';
end
x=0:0.1:la3;
y=chi2pdf(x,k-r-1);
plot(x,y);
x1=kai2:0.1:la3;
y1=chi2pdf(x1,k-r-1);
hold on
if kai2<la3
fill([kai2,x1,la3],[0,y1,0],'m')
end
fprintf(' ---------------------------------------------------------------------------\n');
fprintf(' 样本数\t\t区间数\t\t未知参数\t\t自由度\t\t开方和\t\t 右侧概率\t\t显著性\n');
fprintf(' ---------------------------------------------------------------------------\n');
fprintf(' %4d\t\t%4d\t\t%4d\t\t%4d\t\t%.6f\t\t%.4f\t\t%4s\n',n,k,r,k-r-1,kai2,pz,xzx);
fprintf(' ---------------------------------------------------------------------------\n');
fprintf('\n\n');
hold off
离散型分布正态性检验
-------------------------------------------------------------------------------------
样本数 区间数 未知参数 自由度 开方和 临界值 右侧概率 显著性
-------------------------------------------------------------------------------------
63 6 0 5 1.6667 11.0705 0.8931 -
-------------------------------------------------------------------------------------
【练习3.1】(基本计算,两个正态总体的假设检验,检验水平),对数学分析I
(1) 求课程中“专业(数学、信计)””的考试人数、平均分、最小值、最大值、极差、标准差、及格人数、及格率、优良人数(大于等于80)、优良率;写出标准差的计算公式。
(2) 对“专业(数学、信计)”,检验方差、平均分是否相等。
(3) 对“专业(数学、信计)”,检验及格率、优秀率是否相等。
(4) 对“全体成绩”的分布进行检验,首先估计期望和方差,画出正态分布的密度函数曲线以及样本密度散点,对假设的正态分布进行检验。
Matlab程序实现:
sy=[60 60 63 63 40 69 65 60 72 67 62 78 82 90 69 60 72 76 78 93 69 68 95 71 83 60 73 73 60 74 77 71 85 70 89 60 61 77 62 68 60 70 66 84 74 69 61 60 86 73 69 74 71 74];
se=[50 81 67 65 77 71 76 62 89 65 65 62 62 60 78 81 66 70 80 53 69 66 61 48 66 69 61 60 60 85 52 68 60 74 60 62 43 61 60 60 64 70 74 65 73 79 60 43 76 66 63 60 60 68 60 60 60 67 74 64];
alpha=0.05; %取显著水平为0.05
sy1=length(sy);se1=length(se);%人数
sy2max=max(sy);sy2min=min(sy);se2max=max(se);se2min=min(se);%最大值,最小值
sy3=range(sy);se3=range(se);%极差
sy4=mean(sy);se4=mean(se);%平均分
sy5=sqrt(sum((sy-sy4).^2)/(sy1));se5=sqrt(sum((se-se4).^2)/(se1));%标准差
%sy5=std(sy);se5=std(se);或
sy6=length((find(sy>=60)));se6=length((find(se>=60)));%及格人数
sy7=length((find(sy>=80)));se7=length((find(se>=80)));%优秀人数
sy8=sy6/sy1;se8=se6/se1;%及格率
sy9=sy7/sy1;se9=se7/se1;%优秀率
fprintf('\t人数\t 平均分\t 最小值\t 最大值 \t极差\t\t标准差\t\t及格人数 及格率\t优秀人数 优秀率\n');
fprintf(' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n');
fprintf('数学 %4d\t%10.4f\t%4d\t\t%4d\t\t%4d\t\t%10.4f\t%4d\t %10.4f\t%4d\t%10.4f\n',sy1,sy4,sy2min,sy2max,sy3,sy5,sy6,sy8,sy7,sy9)
fprintf('信计 %4d\t%10.4f\t%4d\t\t%4d\t\t%4d\t\t%10.4f\t%4d\t %10.4f\t%4d\t%10.4f\n',se1,se4,se2min,se2max,se3,se5,sy6,sy8,se7,se9)
fprintf('\n');
%方法一
fprintf('检验数学和信计的方差是否相等\n');
[h1,p1,varci1,stats1]=vartest2(sy,se,alpha,'both');
if(h1==0)
disp('结果:方差相等');
else
disp('结果:方差不相等');
end
fprintf('\n');
% %方法二
% F=sy5^2/se5^2;%统计量F,满足F分布
% alpha=0.05; %取显著水平为0.05
% Fla1=finv(alpha/2,sy1-1,se1-1);Fla2=finv(1-alpha/2,sy1-1,se1-1);%求F的临界值
% if (F>Fla1 && F<Fla2)
% MM='数学分析1和数学分析2的方差无显著差异';
% else
% MM='数学分析1和数学分析2的方差有显著差异';
% end
% fprintf('检验数学分析1和数学分析2的方差是否相等\n');
% fprintf('统计量F的值\t\t\t显著性水平\t\t临界值\t\t\t\t\t检验结果\n');
% fprintf(' %.4f\t\t\t\t%.4f\t\t\t%.4f\t\t\t%15s\n',F,alpha,Fla1,MM);
% fprintf('\n\n');
%方法一
fprintf('检验数学和信计的平均分是否相等\n');
[h2,p2,muci2,stats2]=ttest2(sy,se,alpha,'both');
if(h2==0)
disp('结果:平均分相等');
else
disp('结果:平均分不相等');
end
fprintf('\n');
%%方法二
% %%%%方法三
% sw=((sy1-1)*sy5^2+(se1-1)*se5^2)/(sy1+se1-2);
% T=(sy4-se4)/sw/sqrt(1/sy1+1/se1);%统计量T,满T分布
% Tla1=tinv(alpha/2,sy1+se1-2);Tla2=tinv(1-alpha/2,sy1+se1-2);%求出T的临界值
% if (abs(T)<tinv(1-alpha/2,sy1+se1-2))
% XX='数学分析1和数学分析2的平均分无显著差异';
% else
% XX='数学分析1和数学分析2的平均分有显著差异';
% end
% fprintf('检验数学分析1和数学分析2的平均分是否相等\n');
% fprintf('统计量T的值\t\t\t显著性水平\t\t临界值\t\t\t\t\t检验结果\n ');
% fprintf(' %.4f\t\t\t\t%.4f\t\t\t%.4f??%.4f\t\t%15s\n',T,alpha,Tla1,Tla2,XX);
% fprintf('\n\n');
p=(sy7+se7)/(sy1+se1);
U=(sy9-se9)/sqrt((sy9+se9)*p*(1-p));
Ua=norminv(1-alpha/2);
if(abs(U)>Ua)
disp('优秀率无显著差异');
else
disp('优秀率有显著差异');
end
p=(sy6+se6)/(sy1+se1);
U=(sy8-se8)/sqrt((sy8+se8)*p*(1-p));
Ua=norminv(1-alpha/2);
if(abs(U)>Ua)
disp('及格率无显著差异');
else
disp('及格率有显著差异');
end
[h3,p3,kstat3,critval3]=lillietest(sy,alpha);
if(h3==1)
disp('数学不是正态分布')
else
disp('数学是正态分布')
end
[h4,p4,kstat4,critval4]=lillietest(se,alpha);
if(h4==1)
disp('信计不是正态分布')
else
disp('信计是正态分布')
end
%
%hist(sy)%直方图
%[h5,p5,stats5]=chi2gof(sy)%可以检验分布
%cdf=[sy,normcdf(sy,sy4,sy5)]
%[h5,p5,ksstat,cv5]=kstest(sy,cdf)
% a=0:1:100;
% a=a';
% CDF=[a,cdf(a,sy4,sy5)];
% h = kstest(sy,CDF,0.05);
S=[65 65 68 81 74 76 68 69 82 77 74 66 73 72 77 60 62 81 66 68 76 60 74 80 90 69 60 63 68 67 69 62 60 60 60 67 60 77 67 60 60 60 71 72 60 66 61 86 64 60 60 89 73 74 43 40 61 95 69 70 62 66 63 62 78 74 60 50 76 62 65 84 70 69 83 73 43 71 70 73 71 69 74 60 61 60 70 74 78 48 93 64 61 79 71 53 60 60 52 63 60 61 65 62 78 60 65 60 85 85 89 69 66 60];
[h,p,jbstat,critval]=jbtest(S,alpha);
if(h==0)
disp('服从正态分布');
else
disp('不服从正态分布');
end
savg=mean(S);
svar=var(S);
x=20:130;
y=normpdf(x,savg,sqrt(svar));
d=5;
a=20:d:130;
pdf=hist(S,a)./length(S)./d;
plot(x,y,'r');
hold on
scatter(a,pdf,'filled');
hold off
输出:
>> lx3_1_lrj_41521335
人数 平均分 最小值 最大值 极差 标准差 及格人数 及格率 优秀人数 优秀率
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数学 54 70.6667 40 95 55 10.0885 53 0.9815 9 0.1667
信计 60 65.5167 43 89 46 9.2313 53 0.9815 5 0.0833
检验数学和信计的方差是否相等
结果:方差相等
检验数学和信计的平均分是否相等
结果:平均分不相等
优秀率有显著差异
及格率有显著差异
数学不是正态分布
Warning: P is less than the smallest tabulated value, returning 0.001.
> In lillietest (line 206)
In lx3_1_lrj_41521335 (line 99)
信计不是正态分布
服从正态分布
六、 方差分析
【例1】(单因素方差分析)
考虑温度对某化工产品得率的影响,选择五种不同温度进行试验,每一温度各做三次试验。
方法一:自编程序
clear all
X=[90,92,88;97,93,92;96,96,93;84,83,88;84,86,82];
a=5;
ni=[3,3,3,3,3]; %每个因素的样本数
n=sum(ni); %样本总数
%T=sum(sum(X)); %先求每列的和,再求总和
%求所有样本的和T,平方和,及ST,SA,SE
T=0; ST=0; SA=0; SE=0;
for i=1:a
Ti=0;
for j=1:ni(i)
T=T+X(i,j);
Ti=Ti+X(i,j);
ST=ST+X(i,j)^2;
end
SA=SA+Ti^2/ni(i);
end
ST=ST-T^2/n; % 总偏差平方和
SA=SA-T^2/n; % 效应平方和
SE=ST-SA; % 误差平方和
F=(SA/(a-1))/(SE/(n-a)); % F比
alpha1=0.05; % 显著性水平
la1=finv(1-alpha1,a-1,n-a); %由F分布的累积概率,求临界值,P{F<la}=1-alpha
alpha2=0.01; % 显著性水平
la2=finv(1-alpha2,a-1,n-a); %由F分布的累积概率,求临界值,P{F<la}=1-alpha
p=1-fcdf(F,a-1,n-a); %计算F比值做为临界点的右侧概率 p=1-P{X<F}
if F>la2
xzx='**';
elseif F>la1
xzx='*';
else
xzx='-';
end
fprintf(' 来源\t\t平方和\t\t自由度\t\t均方和\t\tF比\t\t显著性\n');
fprintf(' 效应A\t\t%.2f\t\t%4d\t\t%.2f\t\t%.2f\t\t%.4f\n',SA,a-1,SA/(a-1),F,p);
fprintf(' 误差\t\t%.2f\t\t%4d\t\t%.2f\t\t\t\t%4s\n',SE,n-a,SE/(n-a),xzx);
fprintf(' 总和\t\t%.2f\t\t%4d\t\t临界值=%.2f(%.2f),%.2f(%.2f)\n',ST,n-1,la1,alpha1,la2,alpha2);
fprintf('\n\n');
运行结果为:
来源 平方和 自由度 均方和 F比 显著性
效应A 303.60 4 75.90 15.18 **
误差 50.00 10 5.00 0.000299
--------------------------------------------------------------------------------
总和 353.60 14 临界值=3.48(0.05),5.99(0.01)
--------------------------------------------------------------------------------
方法二:调用matlab工具anova1(X'),其中矩阵X’表示X的转置,即该函数每一列为一个因素。
运行结果为
【例7.2】(没有交互作用的多因素方差分析)
一火箭使用了四种燃料,三种推进器,作射程试验。
X=[58.2,56.2,65.3;49.1,54.1,51.6;60.1,70.9,39.2;75.8,58.2,48.7];
方法一:自编程序,运行结果为
58.2000 56.2000 65.3000
49.1000 54.1000 51.6000
60.1000 70.9000 39.2000
75.8000 58.2000 48.7000
来源 平方和 自由度 均方和 F比 显著性
效应A 157.59 3 52.53 0.4306 ×(0.738747)
效应B 223.85 2 111.92 0.9174 ×(0.449118)
误差 731.98 6 122.00
总和 1113.42 11 临界值=4.76(0.05),5.14(0.05)
--------------------------------------------------------------------------------------------------------------------------
方法二:调用matlab工具anova2(X)
【练习3.2】单因素方差分析
(1) 对四个班的 “数学分析一”进行方差分析;
(2) 对全体学生的数学类的课进行方差分析。
Matlab程序实现:
X=[60, 60, 63, 63, 40, 69, 65 ,60 ,72 ,67, 62, 78, 82, 90 ,69 ,60, 72 ,76, 78 ,93 ,69 ,68, 95, 71 ,83, 60; 73, 73, 60 ,74 ,77 ,71 ,85, 70, 89, 60 ,61 ,77 ,62 ,68 ,60, 70 ,66 ,84, 74 ,69 ,61 ,60 ,86, 73 ,69 ,74; 50, 81, 67, 65, 77, 71 ,76 ,62 ,89, 65 ,65, 62, 62 ,60 ,78 ,81, 66, 70 ,80, 53, 69, 66 ,61 ,48,66, 69;68 ,60 ,74 ,60, 62, 43, 61, 60 ,60 ,64 ,70 ,74, 65 ,73, 79, 60 ,43 ,76, 66, 63, 60, 60 ,68,60, 60, 60];
anova1(X')
a=4;
ni=[26,26,26,26]; %每个因素的样本数
n=sum(ni); %样本总数
%T=sum(sum(X)); %先求每列的和,再求总和
%求所有样本的和T,平方和,及ST,SA,SE
T=0; ST=0; SA=0; SE=0;
for i=1:a n
Ti=0;
for j=1:ni(i)
T=T+X(i,j);
Ti=Ti+X(i,j);
ST=ST+X(i,j)^2;
end
SA=SA+Ti^2/ni(i);
end
ST=ST-T^2/n; % 总偏差平方和
SA=SA-T^2/n; % 效应平方和
SE=ST-SA; % 误差平方和
F=(SA/(a-1))/(SE/(n-a)); % F比
alpha1=0.05; % 显著性水平
la1=finv(1-alpha1,a-1,n-a); %由F分布的累积概率,求临界值,P{F<la}=1-alpha
alpha2=0.01; % 显著性水平
la2=finv(1-alpha2,a-1,n-a); %由F分布的累积概率,求临界值,P{F<la}=1-alpha
p=1-fcdf(F,a-1,n-a); %计算F比值做为临界点的右侧概率 p=1-P{X<F}
if F>la2
xzx='**';
elseif F>la1
xzx='*';
else
xzx='-';
end
fprintf('\t\t\t对四个班的数学分析一\n\n')
fprintf(' 来源\t\t平方和\t\t\t自由度\t\t\t均方和\t\t\tF比\t\t显著性\n');
fprintf(' 效应A\t\t%.2f\t\t\t\t%4d\t\t%.2f\t\t%.2f\t\t%.4f\n',SA,a-1,SA/(a-1),F,p);
fprintf(' 误差\t\t%.2f\t\t%4d\t\t%.2f\t\t\t\t\t%4s\n',SE,n-a,SE/(n-a),xzx);
fprintf(' 总和\t\t%.2f\t\t%4d\t\t临界值=%.2f(%.2f),%.2f(%.2f)\n',ST,n-1,la1,alpha1,la2,alpha2);
fprintf('\n\n');
x=[60 60 74 72 75 64 81
60 76 73 76 78 73 95
63 73 81 84 85 95 85
63 48 66 74 60 50 74
40 40 32 46 25 54 39
69 96 98 84 77 91 93
65 61 72 70 60 60 73
60 76 73 89 75 80 67
72 87 89 87 94 97 94
67 85 84 90 85 94 93
62 80 78 64 67 80 78
78 100 96 93 92 97 97
82 89 88 80 90 90 92
90 87 94 85 93 97 85
69 76 79 69 81 86 85
60 61 82 74 60 71 65
72 71 81 70 66 67 78
76 60 83 80 63 51 84
78 85 83 78 84 92 83
93 99 97 84 90 85 96
69 60 75 77 67 72 72
68 61 63 72 74 85 85
95 99 84 91 87 95 89
71 94 93 81 94 87 96
83 77 77 75 85 90 86
60 63 77 68 68 79 85
73 92 88 75 82 88 79
73 85 84 87 88 90 96
60 78 78 80 76 88 89
74 99 91 87 90 92 92
77 96 92 90 91 94 96
71 72 87 87 85 80 88
85 99 98 96 95 94 97
70 84 87 83 81 83 89
89 91 82 90 91 91 96
60 69 77 89 60 73 82
61 72 81 85 75 92 88
77 80 84 75 86 85 91
62 71 77 73 66 80 87
68 88 82 82 89 81 89
60 60 66 69 66 50 73
70 60 71 80 72 92 90
66 64 70 86 71 78 93
84 100 84 87 90 95 94
74 87 81 85 91 84 81
69 81 81 82 88 78 92
61 64 60 63 70 81 73
60 65 65 73 61 66 74
86 100 98 87 96 90 88
73 64 77 81 86 83 92
69 60 72 73 75 78 78
74 74 86 85 95 90 91
71 73 75 83 82 80 78
74 71 78 77 76 76 93
50 62 67 70 68 78 74
81 90 94 86 91 90 91
67 90 91 85 88 85 90
65 52 43 56 65 62 76
77 99 93 90 90 95 96
71 45 64 72 63 83 66
76 73 93 88 92 74 90
62 85 77 77 87 87 89
89 94 93 93 91 92 95
65 52 39 85 68 82 60
65 61 40 85 76 74 68
62 37 45 53 64 55 71
62 85 63 91 77 91 88
60 49 39 68 50 71 49
78 92 80 91 93 78 92
81 99 98 88 95 91 99
66 87 83 93 82 85 91
70 71 82 83 78 87 90
80 99 89 92 96 94 96
53 66 75 74 69 62 78
69 81 78 91 91 75 94
66 77 85 82 84 95 79
61 60 44 61 60 61 66
48 34 63 64 41 66 60
66 50 36 72 60 71 63
69 63 63 72 66 60 71
61 49 32 72 53 78 60
60 60 63 79 60 70 81
60 71 67 89 83 68 82
85 86 80 80 60 82 65
52 36 45 53 46 48 52
68 71 89 69 61 86 83
60 45 45 83 39 75 60
74 60 80 83 88 90 81
60 87 75 89 93 90 89
62 50 30 73 64 76 71
43 60 65 68 62 70 60
61 68 69 72 76 79 77
60 64 67 86 70 77 79
60 86 78 75 75 83 83
64 60 67 71 46 73 60
70 69 67 79 64 77 80
74 69 76 66 65 80 68
65 79 80 87 83 80 85
73 92 89 84 86 84 96
79 74 83 82 74 85 90
60 60 62 83 73 87 73
43 60 67 83 80 90 70
76 77 96 89 96 91 96
66 60 70 72 61 74 72
63 77 89 88 77 92 87
60 48 68 56 68 71 71
60 61 63 66 65 60 63
68 76 82 75 81 84 77
60 51 63 67 39 73 69
60 67 82 83 78 86 86
60 64 73 79 72 81 86
67 87 89 87 87 88 97
74 73 69 86 90 95 95
64 62 64 82 79 91 85
];
X=x';
a=7;
ni=[114,114,114,114,114,114,114]; %每个因素的样本数
n=sum(ni); %样本总数
%T=sum(sum(X)); %先求每列的和,再求总和
%求所有样本的和T,平方和,及ST,SA,SE
T=0; ST=0; SA=0; SE=0;
for i=1:a
Ti=0;
for j=1:ni(i)
T=T+X(i,j);
Ti=Ti+X(i,j);
ST=ST+X(i,j)^2;
end
SA=SA+Ti^2/ni(i);
end
ST=ST-T^2/n; % 总偏差平方和
SA=SA-T^2/n; % 效应平方和
SE=ST-SA; % 误差平方和
F=(SA/(a-1))/(SE/(n-a)); % F比
alpha1=0.05; % 显著性水平
la1=finv(1-alpha1,a-1,n-a); %由F分布的累积概率,求临界值,P{F<la}=1-alpha
alpha2=0.01; % 显著性水平
la2=finv(1-alpha2,a-1,n-a); %由F分布的累积概率,求临界值,P{F<la}=1-alpha
p=1-fcdf(F,a-1,n-a); %计算F比值做为临界点的右侧概率 p=1-P{X<F}
if F>la2
xzx='**';
elseif F>la1
xzx='*';
else
xzx='-';
end
fprintf('\t\t\t全体数学课程\n\n')
fprintf(' 来源\t\t平方和\t\t\t自由度\t\t均方和\t\t\tF比\t\t显著性\n');
fprintf(' 效应A\t\t%.2f\t\t%4d\t\t%.2f\t\t%.2f\t\t%.4f\n',SA,a-1,SA/(a-1),F,p);
fprintf(' 误差\t\t%.2f\t\t%4d\t\t%.2f\t\t\t\t\t%4s\n',SE,n-a,SE/(n-a),xzx);
fprintf(' 总和\t\t%.2f\t\t%4d\t\t临界值=%.2f(%.2f),%.2f(%.2f)\n',ST,n-1,la1,alpha1,la2,alpha2);
fprintf('\n\n');
输出:
方法一:
对四个班的数学分析一
来源 平方和 自由度 均方和 F比 显著性
效应A 906.26 3 302.09 3.13 0.0289
误差 9636.27 100 96.36 *
总和 10542.53 103 临界值=2.70(0.05),3.98(0.01)
全体数学课程
来源 平方和 自由度 均方和 F比 显著性
效应A 15804.93 6 2634.15 15.34 0.0000
误差 135824.95 791 171.71 **
总和 151629.87 797 临界值=2.11(0.05),2.82(0.01)
方法二:
七、回归分析
【例1】(一元线性回归)
以三口之家为单位,某食品在某年中平均月消费量(kg)与其价格(元/kg)之间的关系。
方法一:自编程序
clear all
x=[2,2,
展开阅读全文