分布的拟合与检验的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%--------------------------------------------------------------------------
% 分布的拟合与检验
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
% 描述性统计量和统计图
%--------------------------------------------------------------------------
%读取文件中数据
% 读取文件examp02_14.xls的第1个工作表中的G2G52中的数据,即总成绩数据score = xlsread('examp02_14.xls','Sheet1','G2G52');
% 去掉总成绩中的0,即缺考成绩
score = score(score 0);
%计算描述性统计量
score_mean = mean(score) % 计算平均成绩
s1 = std(score) % 计算(5.1)式的标准差
s1 = std(score,0) % 也是计算(5.1)式的标准差
s2 = std(score,1) % 计算(5.2)式的标准差
score_max = max(score) % 计算样本最大值
score_min = min(score) % 计算样本最小值
score_range = range(score) % 计算样本极差
score_median = median(score) % 计算样本中位数
score_mode = mode(score) % 计算样本众数
score_cvar = std(score)mean(score) % 计算变异系数
score_skewness = skewness(score) % 计算样本偏度
score_kurtosis = kurtosis(score) % 计算样本峰度
%绘制箱线图
figure; % 新建图形窗口
boxlabel = {'考试成绩箱线图'}; % 箱线图的标签
% 绘制带有刻槽的水平箱线图
boxplot(score,boxlabel,'notch','on','orientation','horizontal')
xlabel('考试成绩'); % 为X轴加标签
%绘制频率直方图
% 调用ecdf函数计算xc处的经验分布函数值f
[f, xc] = ecdf(score);
figure; % 新建图形窗口
% 绘制频率直方图
ecdfhist(f, xc, 7);
xlabel('考试成绩'); % 为X轴加标签
ylabel('f(x)'); % 为Y轴加标签
%绘制理论正态分布密度函数图
% 产生一个新的横坐标向量x
x = 400.5100;
% 计算均值为mean(score),标准差为std(score)的正态分布在向量x处的密度函数值
y = normpdf(x,mean(score),std(score));
hold on
plot(x,y,'k','LineWidth',2) % 绘制正态分布的密度函数曲线,并设置线条为黑色实线,线宽为2
% 添加标注框,并设置标注框的位置在图形窗口的左上角
legend('频率直方图','正态分布密度曲线','Location','NorthWest');
%绘制经验分布函数图
figure; % 新建图形窗口
% 绘制经验分布函数图,并返回图形句柄h和结构体变量stats,
% 结构体变量stats有5个字段,分别对应最小值、最大值、平均值、中位数和标准差[h,stats] = cdfplot(score)
set(h,'color','k','LineWidth',2); % 设置线条颜色为黑色,线宽为2
%绘制理论正态分布函数图
x = 400.5100; % 产生一个新的横坐标向量x
% 计算均值为stats.mean,标准差为stats.std的正态分布在向量x处的分布函数值
y = normcdf(x,stats.mean,stats.std);
hold on
% 绘制正态分布的分布函数曲线,并设置线条为品红色虚线,线宽为2
plot(x,y,'k','LineWidth',2);
% 添加标注框,并设置标注框的位置在图形窗口的左上角
legend('经验分布函数','理论正态分布','Location','NorthWest');
%绘制正态概率图
figure; % 新建图形窗口
normplot(score); % 绘制正态概率图
%--------------------------------------------------------------------------
% 分布的检验
%--------------------------------------------------------------------------
%读取文件中数据
% 读取文件examp02_14.xls的第1个工作表中的G2G52中的数据,即总成绩数据score = xlsread('examp02_14.xls','Sheet1','G2G52');
% 去掉总成绩中的0,即缺考成绩
score = score(score 0);
%调用chi2gof函数进行卡方拟合优度检验
% 进行卡方拟合优度检验
[h,p,stats] = chi2gof(score)
% 指定各初始小区间的中点
ctrs = [50 60 70 78 85 94];
% 指定'ctrs'参数,进行卡方拟合优度检验
[h,p,stats] = chi2gof(score,'ctrs',ctrs)
[h,p,stats] = chi2gof(score,'nbins',6) % 指定'nbins'参数,进行卡方拟合优度检验
% 指定分布为默认的正态分布,分布参数由x进行估计
[h,p,stats] = chi2gof(score,'nbins',6);
% 求平均成绩ms和标准差ss
ms = mean(score);
ss = std(score);
% 参数'cdf'的值是由函数名字符串与函数中所含参数的参数值构成的元胞数组
[h,p,stats] = chi2gof(score,'nbins',6,'cdf',{'normcdf', ms, ss});
% 参数'cdf'的值是由函数句柄与函数中所含参数的参数值构成的元胞数组
[h,p,stats] = chi2gof(score,'nbins',6,'cdf',{@normcdf, ms, ss});
% 同时指定'cdf'和'nparams'参数
[h,p,stats] = chi2gof(score,'nbins',6,'cdf',{@normcdf,ms,ss},'nparams',2)
[h,p] = chi2gof(score,'cdf',@normcdf) % 调用chi2gof函数检验数据是否服从标准正态分布
% 指定初始分组数为6,检验总成绩数据是否服从参数为ms = 79的泊松分布
[h,p] = chi2gof(score,'nbins',6,'cdf',{@poisscdf, ms})
% 指定初始分组数为6,最小理论频数为3,检验总成绩数据是否服从正态分布
h = chi2gof(score,'nbins',6,'cdf',{@normcdf, ms, ss},'emin',3)