统计图
1 箱线图
箱线图,又称作箱须图(box-whiskerplot)是利用数据中的五个特征值——最小值、第一四分位点、中值、第三四分位点、最大值来描述数据的图形。箱线图可以粗略的估计数据是否具有对称性,粗略观察数据的分散程度,特别可用于对几个样本的比较。
箱线图的做法:
(1)画一个箱子,其左侧线为样本0.25分位数m0.25位置,右侧线为样本0.75分位数m0.75位置,在样本中位数(即0.5分位数m0.5)位置上画一条数线,画在箱子内。这个箱子包含了样本中50%的数据
(2)在箱子左右两侧各引出一条水平线,左侧画直max{min(x),m0.25-1.5(m0.75-m0.25)},右侧画值min(max(x),m0.25+1.5(m0.75-m0.25)),落在左右边界之外的样本点被称为异常点,用红色‘+’号标出。
箱线图非常直观地反映了样本数据的分散程度以及总体分布的对称性,利用箱线图可以直观的识别样本中的异常值。
MATLAB统计工具箱中提供了boxplot函数绘制箱线图。
调用格式:
boxplot(X,‘Name’,value);
‘Name’是箱线图的一些属性,value是该属性的值
例如:
Name为‘notch’,当value为on时,产生的是凹盒图(有切口的box图),off时产生矩箱图(无切口的box图)。
Name为‘orientatiaon’,当value为horizontal时,箱图是水平画的,vertical时为垂直箱图
score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
score=score(score>0); %只把成绩不为0的数据取出来,即去掉缺考成绩
figure;
boxlabel={'考试成绩箱线图'}; %箱线图的标签
boxplot(score,boxlabel,'notch','on','orientation','horizontal');
% boxplot(score)
xlabel('考试成绩');
2 频数(频率)直方图
频数(频率)直方图的做法如下:
(1)将样本观测值x1,x2,......,xn从小到大排序并去除多余的重复值,得到x(1)<x(2)<......<x(l).
(2)适当选取略小于与x(1)的数a和略大于x(l)的数b,将区间(a,b)随意分为k个不想交的小区间,记第i个小区间为Ii,其长度为hi。
(3)把样本观测值逐个分到各区间内,并计算样本观测值落在各区间内的频数ni,及频率fi=ni/n.
(4)在x轴上截取各区间,并以各区间为底,以ni为高左小矩形,就得到频数直方图;如果以fi=ni/n为高做小矩形,就得到频率直方图。
MATLAB统计工具箱中提供了hist函数用来绘制频数直方图,用法
hist(x,n): x是要统计的数据,n表示用多少个小矩形(默认10个)
还提供了ecdf和ecdfhist函数,用来绘制频率直方图
[f,xc]=ecdf(x) : 调用ecdf函数计算xc处的经验分布函数值f,返回值作为ecdfhist函数的参数绘制频率直方图
ecdfhist(f,xc,n) :n表示用多少个小矩阵(默认10个)
例:
score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
score=score(score>0); %只把成绩不为0的数据取出来,即去掉缺考成绩
figure;
hist(score);
xlabel('考试成绩')
ylabel('频数')
title('频数直方图');
figure;
[f,xc]=ecdf(score);
ecdfhist(f,xc);
xlabel('考试成绩')
ylabel('频率');
title('频率直方图');
3 经验分布函数图
根据2.2中直方图的做法,可以得到样本频数和频率分布表如下所示
观测值 x(1) x(2) ........ x(l) 总计
频数 n1 n2 ........ nl n
频率 f1 f2 ......... fl 1
样本分布函数(经验分布函数)到定义为
经验分布函数图是阶梯状态,反映了样本观测数据分布情况。
MATLAB统计工具箱中提供了cdfplot函数来绘制样本经验分布函数图,ecdf函数计算各点处的经验分布函数值
用法:
[h,stats]=cdfplot(x): x是输入的数据,返回值h为图形句柄,stats为结构变量,stats中有5个字段,分别对应最小值、最大值、平均值、中位数和标准差
[f,xc]=ecdf(x) : x是输入数据,返回xc处的经验分布函数值f,xc向量的长度为length(x)+1
例:
score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52'); score=score(score>0); %只把成绩不为0的数据取出来,即去掉缺考成绩
figure;
[h,stats]=cdfplot(score)
set(h,'color','k','linewidth',2); %设置一下图形h的属性,便于观察
% [f,xc]=ecdf(score)
% figure;
% plot(xc,f)
4 正态概率图
正态概率图用于正态分布的检验,正态分布的概率图描绘的是一条直线(参考线),每一个样本观测值对应上的一个‘+’号,如果图中的‘+’号都集中在参考线附加,说明样本观测数据近似服从正态分布;若果偏离参考线的‘+’号越多,说明样本观测数据不服从正态分布。
MATLAB统计工具箱中提供了normplot函数,用来绘制正态概率图。
调用格式:
normplot(x):x是输入的数据
score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
score=score(score>0); %只把成绩不为0的数据取出来,即去掉缺考成绩
figure;
normplot(score)
从图中可以发现,处理左下角两个异常点之外,其余的‘+’号均在参考线附加,说明输入的数据近似服从正态分布。
5 p-p图
p-p图用来检测数据是否服从指定的分布,和normplot定义类似,normplot函数是检测是否服从正态分布,而normplot不仅可以检测是否服从正态分布,还可以检测是否服从其他指定的分布,只需在调用函数的时候指定一下是哪种分布。
调用格式:
probplot('name',x) :x是输入检验的数据,‘name’指定检验哪种分布,name可以取
name 说明
exponential 指数分布
extreme value 极值分布
lognormal 对数分布
normal 正态分布
rayleigh 瑞利分布
weibull 韦伯分布
例:
score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
score=score(score>0); %只把成绩不为0的数据取出来,即去掉缺考成绩
figure;
probplot('normal',score)
和用normplot函数检验结果是一样的。
6 q-q图
q-q图不仅能检验样本是否服从指定分布,还能检测两个样本是否服从相同的分布。
MATLAB统计工具箱中提供了qqplot函数绘制q-q图。
下面调用qqplot函数绘制两个班级成绩数据的q-q图,观测这两个班级的成绩数据是否服从相同的分布。
%读取Excel中的班级数据即B2:B52
banji=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','B2:B52');
%读取总成绩数据,即G2:G52中的数据
score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
%去除缺考的数据
banji=banji(score>0);
score=score(score>0);
%提取两个班级的总成绩
score1=score(banji==60101);
score2=score(banji==60102);
%绘制两个班级成绩数据的q-q图
qqplot(score1,score2);
图中可以看,偏离参考线的‘+’号比较多,可以认为两个班的成绩不服从相同的分布