多元统计分析multivariatedataanalysisOutlines•介绍多元统计特征,包括多元数据之间的距离描述、多元数据图形表达(可视化)、多元正态分布、统计量及显著性检验。•结合主成分分析和因子分析,探讨线性维度减小方法。以多维标度分析为基础,讨论非线性维度减小方法。•介绍判别分布、聚类分析等多元数据分类和聚类方法。•X=3+randn(100,1)•Y=5+6*X+2*randn(100,1)•Z=8-3*X+4*X.^2+3*randn(100,1)•X1=X(1:50)•X2=X(51:100)•Y2=Y(51:100)•Y1=Y(1:50)•Z1=Z(1:50)•Z2=Z(51:100)•B=[X1X2Y1Y2Z1Z2]•saveB.matB多元数据距离测量•度量空间距离公理论。数学上,距离的真实测量,称为度量(metric)。它遵守三个公理:设dxy表示对象x和对象y之间的距离,则•公理1:dxy=dyx。•公理2:dxy≥0,当且仅当x=y时,dxy=0。•公理3:dxy≤dxo+doy,o为任意第三个对象,即满足三角形任意两边长度和大于第三边长度。多元数据之间的距离:观测之间的距离(1)欧几里得距离(Euclidiandistance)但是在异质性的环境中,样本之间并不能直接可比。•标准化欧几里得距离(standardizedEuclideandistance)非欧几里得距离(non-Euclideandistance)•欧几里得距离是一种具体的距离,因为它与我们距离的物理概念一致。非欧几里得距离则有不同方式,用于满足数学度量空间的测量。流行的非欧几里得距离包括:Bray-Curtis差异(dissimilarity),L1距离(即曼哈顿距离),Jaccard指数(用于数据元素的有-无测量)。非欧几里得距离是异质环境数据之间差异测量的基础。Bray-Curtis差异有-无数据(presence-absencedata)的差异测量两总体或两样本之间距离总体与观测之间的距离基于比率的距离多元数据可视化指标变量制图•采用2、3个指标变量(indexvariable),以投影图形方式描述4个以上的变量,称为投影寻踪(projectionpursuit)。事实上,主成分分析等多元统计分析就是生成指标变量,以指标变量描述整个变量。指标变量制图优点是在二维或三维上,可绘制更多变量。其潜在缺陷是损失或模糊对象之间的可能差别。•MATLAB中,提供一组函数scatter3、gscatter、plot3和rotate3d等,用于绘制3D散点图。•x=2+rand(20,1)•y=3-rand(20,1)•z=5+rand(20,1)•subplot(1,2,1);plot3(x,y,z,'*b');gridon•subplot(1,2,2);scatter3(x,y,z,'*r')多元散点图•多元散点图(draftsman’splot)显示包含一组数值图,是一个变量与其它变量之间对应的二维制图。它包括一组图形矩阵,也称散点图矩阵(scatterplotmatrix)。每个图形足够小,所以在一个空间可以同时查看所有图形。这种制图优点是在二维空间绘制图形,适合显示变量对之间关系。缺陷是难以表达一个变量与其它多个变量之间关系,不适合显示多变量之间关系。•MATLAB中,采用函数plotmatrix、gplotmatrix绘制散点图矩阵•x=randn(50,3);•y=x*[-121;201;1-23]';•plotmatrix(y,'*b')单个数据点表示•这种图形显示每个对象的多元数据,每个变量是一个具有大小和方向的符号。不同变量有不同的符号特征,这些符号组合为人脸或星形玫瑰图。这种方法是1979年Fienberg提出的。它的优点是可以同时显示全部变量情形,缺陷是图形显示可能依赖对象获取的顺序,而且只适合于小数据量的多元数据(样本数小于10,变量数小于15)。•以MATLAB数据carsmall.mat为例,采用glyphplot函数,直接绘出多元数据的星形玫瑰图或Chernoff脸部图•loadcarsmall•X=[AccelerationCylindersDisplacementHorsepowerMPGWeight];•glyphplot(X,'grid',[2,5])•Chernoff脸谱图用于说明多元数据的趋势,广泛用于聚类、判别和时间序列分析。选择face参数,可绘制出脸谱图。不同部位有不同参数值,它们决定脸型,如描述耳可以有耳的水平面位置和半径;眼眉有高度、坡度和长度;眼睛有高度、大小、分隔距离、偏心率等;脸有宽度、半脸高度、偏心率;嘴有中心位置、曲率、长度和张开程度;鼻有宽度和长度。采用不同变量表达脸谱参数,比较脸谱,显示出样本数据类型:•glyphplot(X,'Glyph','face','grid',[2,5])变量剖面图•变量剖面图是以横轴为变量组,逐个表示变量;变量数值是纵轴,连接对象或以顺序条形图表示每个对象。该图优点是每个对象连接成一个折线。缺陷是不同量纲的变量不具有可比性,容易误导读者。•MATLAB中,还提供一个函数slice,可以选择坐标位置,完成3维实体的切片表示。首先,创建一个3D栅格:•[x,y,z]=meshgrid(-3:.1:3,-3:.1:3,-3:.1:3);•[n,d]=size(x(:));建立一个3D分布的数据:•a=(2*pi)^(3/2);•si=(x.^2+y.^2+z.^2);•prob=exp((-.5)*si)/a;选择x=0,y=0,z=0的平面位置进行切片:•slice(x,y,z,prob,0,0,0)•xlabel('X'),ylabel('Y'),zlabel('Z')Andrews曲线•X=[715515295;773242553;525761592]•t=linspace(-pi,pi)•f1=7/sqrt(2)+15*sin(t)+5*cos(t)+15*sin(2*t)+2*cos(2*t)+9*sin(3*t)+5*cos(3*t)•f2=7/sqrt(2)+7*sin(t)+3*cos(t)+24*sin(2*t)+25*cos(2*t)+5*sin(3*t)+3*cos(3*t)•f3=5/sqrt(2)+25*sin(t)+7*cos(t)+6*sin(2*t)+15*cos(2*t)+9*sin(3*t)+2*cos(3*t)•plot(t,f1,'.',t,f2,'*',t,f3,'o')•legend('F1','F2','F3');xlabel('t')平行坐标制图•MATLAB中,平行坐标制图函数parallelcoords也可绘制n×p的多元数据矩阵X。在笛卡儿坐标系中,坐标轴是正交的,如此可以表达3D。扩展笛卡儿坐标系,以一组平行坐标轴,则能够可视化多元数据。•以MATLAB中的carsmall.mat数据为例,取其中部分变量和观测结果,parallelcoords函数的运行结果…•loadcarsmall•X=[AccelerationCylindersDisplacementHorsepowerMPGWeight];•X1=X(30:40,:)•parallelcoords(X1)合成数据表达与饼图•合成数据是一种特定数据,表示一个样本可能由多个成分组合而成。MATLAB中,pie、pie3函数用于表达合成数据。•X=[19.322.151.6;34.270.382.4;61.482.990.8;50.554.959.1]•x=sum(X)•A=zeros(size(x))•[c,offset]=max(x)•A(offset)=1•h=pie(x,A);colormapsummer•得出一个饼图,其最大比例部分与其它部分分离。以下给它增加注释:•textObjs=findobj(h,'Type','text');•oldStr=get(textObjs,{'String'});•val=get(textObjs,{'Extent'});•oldExt=cat(1,val{:});•Names={'X:';'Y:';'Z:'};•newStr=strcat(Names,oldStr);•set(textObjs,{'String'},newStr)•val1=get(textObjs,{'Extent'});•newExt=cat(1,val1{:});•offset=sign(oldExt(:,1)).*(newExt(:,3)-oldExt(:,3))/2;•pos=get(textObjs,{'Position'});•textPos=cat(1,pos{:});textPos(:,1)=textPos(:,1)+offset;•set(textObjs,{'Position'},num2cell(textPos,[3,2]))•读者可以自己尝试pie3函数绘制3维饼图。•此外,MATLAB还提供bar,bar3,bar3h,barh,comet,comet3,contour,contour3,contourf,cylinder,errorbar,feather,fill,fill3,loglog,mesh,meshc,meshz,pie,pie3,plot,plot3,polar,quiver,quiver3,ribbon,scatter,scatter3,semilogx,semilogy,stairs,stem,stem3,surf,surfc,surfl,surfnorm和waterfall函数,它们适合于不同制图情形,读者可以根据需要,借助它们合理地完成数据可视化。2009年版的MATLAB统计工具库,还有scatterhist等图形函数。多元数据分布•多元分布不是新概念,只是单变量概率分布的扩展。对应单变量的二项分布、正态分布和beta分布,多元分布中有多项式分布(multinomialdistribution)、多元正态分布(multivariatenormaldistribution)和Dirichlet分布。多元正态分布:也称为多元高斯分布(multivariateGaussiandistribution)或矩阵正态分布•多元正态分布是多元统计学中最受欢迎的分布,常常通过数学变换将数据拟合为正态模型。注意,这种变换依然有争议,因为有时变换是由于方便和简化计算,结果却可能误导或难以反回原始变量。尽管如此,多数推断性多元统计学利用多元正态分布。•从单变量正态分布,到两变量正态分布的扩展过程,是理解多元正态分布的基础。单变量X的正态分布函数:22221)(xexf•MATLAB中的多元正态分布:MATLAB中,函数mvnrnd产生多元正态分布的随机矩阵。mvnpdf用于计算多元正态概率密度函数。2009年版的MATLAB中,提供gmdistribution函数,它采用期望最大化(ExpectationMaximization,EM)算法拟合数据,由高斯混合模型生成一个多元正态分布的混合成分集。•以下是一个MATLAB的多元正态概率密度函数实例•mu=[00];•sigma=[.25.3;.31];•x1=-3:.2:3;x2=-3:.2:3;•[X1,X2]=meshgrid(x1,x2);•F=mvnpdf([X1(:)X2(:)],mu,sigma);•F=reshape(F,length(x2),length(x1));•surf(x1,x2,F);•caxis([min(F(:))-.5*range(F(:)),max(F(:))]);•axis([-33-330.4])•xlabel('x1');ylabel('x2');zlabel('概率密度')•2009年版的MATLAB中,提供函数mvncdf计算多元正态分布的累积分布。Dirichle