2.1基本统计量与数据可视化
1.均值、中位数、分位数、三均值
均值、中位数:mean(A)、media(A)
分位数:prctile(A,P),P∈[0,100]
prctile(A,[25,50,75]) %求A的下、中、上分位数
三均值:
w=[0.25,0.5,0.75];
SM=w*prctile(A,[25,50,75])
%例:计算安徽16省市森林资源统计量
A=xlsread('senlin.xls','sheet1')
M=mean(A); %均值,
MD=median(A); %中位数
SM=[0.25,0.5,0.25]*prctile(A,[25,50,75]); %三均值
[M;MD;SM]
2.方差、标准误、变异系数
方差:var(A,flag),flag默认0表示修正的方差,取1为未修正
标准差:std(A,flag),同上
变异系数:v=std(A)./abs(mean(A))
k阶原点矩、中心距:
ak=mean(A.^k)
bk=mean((A-mean(A)).^k)
%中心距系统命令bk=moment(A,k)
3.极差、四分位极差(上、下分位数之差)
R=rangr(A)
R1=iqr(A)
4.异常点判别(截断点)
XJ=parctile(A,[25])-1.5*R1
SJ=parctile(A,[75])+1.5*R1
5.偏度、峰度
偏度:sk=skewness(A,flag),默认1,取0为样本数据修正的偏度
峰度:ku=kurtosis(A,flg)-3,同上
2.1.2多维样本数据
协方差:cov(A)
相关系数:corr(A)
标准化:zscore(A)
2.1.3样本数据可视化
1.条形图
bar(x)%样本数据x的条形图,横坐标为1:length(x)
bar(x,y)%先把x和y一一对应,然后将x从小到大排序画图
2.直方图
hist(x,n)%数据x的直方图,n为组数,确省时n=10
[h,stats]=cdfplot(x)%x的经验分布函数图,stats给出数据最大最小值、中位数、均值、标准差
直方图基础上附加正态密度曲线
histfit(x)
histfit(x,nbins)%nbins指定bar个数,缺省时为x中数据个数的平方根
3.盒图,五个数值点组成:最小值、下四分位数、中位数、上四分位数、最大值。中间的盒子从Q1延申到Q3,盒子的直线标出中位数位置,盒子两端有直线往外延伸到最小数与最大数
boxplot(x)%矩阵x的每一列的盒图和“须”图,
4.阶梯图
stairs(x)%x的阶梯图
5.火柴棒图
stem(x)%离散数据的火柴棒图
%例:随机150个服从标准正态分布随机数,做出柱形图、直方图、阶梯图、火柴棒图
x = random('normal',0,1,[1,150]); %产生服从标准正态分布随机数150个
subplot(2,3,1),bar(x),title('柱形图')
subplot(2,3,2),hist(x),title('直方图')
subplot(2,3,3),stairs(x),title('阶梯图')
subplot(2,3,4),stem(x),title('火柴棒图')
subplot(2,3,5),histfit(x),title('附正态密度曲线')
subplot(2,3,6),boxplot(x),title('盒图')
例:(X,Y)服从二维正态分布N(2,1;3,3;sqrt(3)/2),生成100对数据做出三点图画出二维正态分布的密度函数,绘制密度曲面图形
mu = [2 3]; %输入均值向量
sa = [1 1.5; 1.5 3]; %输入协方差矩阵
Nr = mvnrnd(mu,sa,100); %随机生成n=100的样本数据
scatter(Nr(:,1),Nr(:,2),'*'); %作样本数据平面散点图
%绘制密度曲面
figure(2)
v=sqrt(3)/2; %输入相关系数
x=-1:0.05:5; %横坐标的取值向量
y=-2:0.05:8; %纵坐标的取值向量
[X,Y]=meshgrid(x,y); %生成网格点
T=((X-mu(1)).^2/sa(1,1)-2*v/sqrt(sa(1,1)*sa(2,2))*(X-mu(1)).*(Y-mu(2))+(Y-mu(2)).^2/sa(2,2));
Z=1/(2*pi)/sqrt(det(sa))*exp(-1/2/(1-3/4)*T); %计算密度函数值
mesh(X,Y,Z) %绘制密度曲面图形
3.正态概率图和Q-Q图
(1)正态概率图:normplot(x)%样本数据对应图中的+,若+大都集中在红色参考线上则说明服从正态分布
若总体是非正态分布,可以类似绘制概率图(威布尔分布概率图)
weibplot(x)%若样本数据点基本散布在一条直线上,则数据服从该分布
(2)Q-Q图:
PD=fitdist(x,distname)%distname为Beta、Binomial、Exponential、Normal、Weibull
qqplot(x,PD)% PD省略时为标准正态分布
%例:自由度为8的卡方分布数据300个,绘制其正态概率图与卡方分布的Q-Q图
clear
s=rng;rng(s);
c1=chi2rnd(8,[300,1]); c2=sort(c1); %模拟生成卡方分布样本
plot(c2,chi2pdf(c2,8), '+-'); %绘制卡方分布的密度曲线
title('卡方分布的密度曲线') ;legend('自由度n=8');
grid on %打开网格
figure
pd=makedist('Gamma','a',4,'b',0.5) %创建参数a=4,b=0.5的伽马分布
%pd=gamrnd(4,0.5,[300,1]);
subplot(1,2,1),normplot(c1); %绘制样本的正态概率图
subplot(1,2,2),qqplot(c1,pd); %按指定分布绘制样本的Q-Q图
grid on
左图可看出是左偏,中图偏离参考线故不服从正态分布,右图贴合直线故服从伽马分布(自由度为8的卡方分布就是参数a=n/2,b=0.5的伽马分布)
2.2数据分布及其检验
1.经验分布函数
[h,stats]=cdfplot(x)%x的经验分布函数图,h表示曲线的环柄,stats给出数据最大值、最小值、中位数、均值、标准差
%例:生成服从标准正态分布的50个样本点,画出样本的经验分布函数图,并与理论分布函数比较
clear
X=normrnd (0,1,50,1); %生成服从标准正态分布的50行1列样本点
[h,stats]=cdfplot(X); %样本的经验分布函数图
hold on %保持上图,后续图层叠加在上图
plot(-3:0.01:3, normcdf(-3:0.01:3,0,1), 'r') %理论分布函数图
legend('样本经验分布函数Fn(x)', '理论分布函数Φ(x)','Location','NorthWest')
2.总体分布正态性检验
(1)JB检验:显著性水平alpha默认0.05
%以下两种方法均可,输出的H=0无法拒绝X服从正态分布;H=1拒绝。P为接受假设的概率值,P<alpha,则拒绝正态分布原假设。JBSTAT为测试统计量,CV是拒绝临界值,JBSTAT>CV拒绝。
H=jbtest(x,alpha)
[H,PJBSTAT,CV]=jbtest(x,alpha)
(2)KS检验:
h=kstest(x)
h= kstest(x,cdf)
[h,p,ksstat,cv]=kstest(x,cdf,alpha)
%h=0无法拒绝X服从正态分布
(3)Lilliefors检验(改进的KS检验):
H=lillietest(x,alpha)
[H,P,LSTAT,CV]=lillietest(x,alpha)
%判断方法同(1)
%例:检验“中国银行”的股票的收盘价是否服从正态分布。
clear
a=xlsread('yhgspj.xls'); %读取收盘价数据
h1=jbtest(a(:,1)) %JB检验
h2=kstest(a(:,1)) %KS检验
h3=lillietest(a(:,1)) %改进KS检验
qqplot(a(:,1))
h1=1,h2=1,h3=1,三种检验均拒绝正态分布原假设,Q-Q图显示偏离参考线,不服从正态分布
2.2.2多维数据的正态分布检验
%例:三组数据有4项指标,三组视为一个总体,是否服从四维正态分布
clear
A=xlsread('jibing.xls','sheet1')
X=[A(:,1:4);A(:,5:8);A(:,9:12)];
[N,p]=size(X);
d=mahal(X,X); % 计算马氏距离
d1=sort(d); % 从小到大排序
pt=[[1:N]-0.5]/N; % 计算分位数
x2=chi2inv(pt,p); % 计算X2t
plot(d1,x2','*',[0:12],[0:12],'-r') % 作图
数据点基本落在直线上,不能拒绝正态分布原假设
3.多个总体协方差矩阵相等性检验
(1)两总体
%例:蠓虫分类
clear
apf=[1.14,1.78; 1.18,1.96;1.20,1.86;1.26,2.;1.28,2;1.30,1.96];
af=[1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];
n1=6;n2=9;p=2;
s1=cov(apf);s2=cov(af);
s=((n1-1)*s1+(n2-1)*s2)/(n1+n2-2); % 计算混合样本方差
Q1=(n1-1)*(log(det(s))-log(det(s1))-p+trace(inv(s)*s1));
Q2=(n2-1)*(log(det(s))-log(det(s2))-p+trace(inv(s)*s2));% 计算检验统计量观测值
ch2inv(0.95,3) %计算X2(3)临界值
Q1=2.5784<7.8145,Q2=0.7418<7.8145,无法拒绝两类总体协差阵相同的原假设
(2)多总体
%例:上上个例子三组数据的协方差矩阵是否相等?...
clear,clc
A=xlsread('jibing.xls','sheet1'); %输入样本数据
G1=A(:,1:4); %提取总体1的样本
G2=A(:,5:8);
G3=A(:,9:12);
n=size(G1,1)+ size(G2,1)+ size(G2,1); %计算总的样本容量
[n1,p]= size(G1);
k=3;
f=p*(p+1)*(k-1)/2; %统计量自由度
d=(2*p^2+3*p-1)*(k+1)/(6*(p+1)*(n-k));
s1=cov(G1); %协方差矩阵
s2=cov(G2); %协方差矩阵
s3=cov(G3); %协方差矩阵
s=(n1-1)*(s1+s2+s3)/(n-k); %总体协方差估计
M=(n-k)*log(det(s))-19*(log(det(s1))+log(det(s2))+log(det(s3)));
T=(1-d)*M
P0=1-chi2cdf(T,f) % 卡方分布概率
P=0.4374>0.1故无法拒绝三个总体协方差矩阵相等的原假设
本文用到的三个excel文件如下
链接:https://pan.baidu.com/s/1oKCsLTsU99CjQciIKmPRKw
提取码:nj03