主要内容

可视化多元数据

这个例子展示了如何使用各种统计图可视化多元数据。许多统计分析只涉及两个变量:预测变量和响应变量。这些数据很容易用二维散点图、二元直方图、箱形图等可视化。也可以用3D散点图来可视化三变量数据,或者用第三个变量(例如颜色)编码的2D散点图。然而,许多数据集涉及大量变量,使得直接可视化更加困难。这个例子探索了一些在MATLAB®中可视化高维数据的方法,使用统计和机器学习工具箱™。

在本例中,我们将使用carbig数据集,这个数据集包含了70年代和80年代大约400辆汽车的各种测量变量。我们将使用燃油效率(每加仑英里数,MPG)、加速度(从0到60英里每小时的时间,单位是秒)、发动机排量(单位是立方英寸)、重量和马力的值来演示多元可视化。我们用圆柱体的数量来分组观察。

负载carbigX = [MPG,加速度,位移,重量,马力];varNames = {“英里”“加速”“位移”“重量”“马力”};

散点图矩阵

通过低维子空间查看切片是部分解决二维或三维限制的一种方法。例如,我们可以使用gplotmatrix函数显示五个变量之间所有双变量散点图的数组,以及每个变量的单变量直方图。

图gplotmatrix (X,[],气缸,“c”“b”“米”‘g’“r”],[][],假);文本([。08 .24 .43 .66 .83], repmat(- 0.1,1,5), varNames,“字形大小”8);文本(repmat(点1 5),(。86 . 82 . 82], varNames,“字形大小”8“旋转”, 90);

每个散点图中的点根据圆柱体的数量进行颜色编码:蓝色代表4个圆柱体,绿色代表6个,红色代表8个。也有少数5缸汽车,旋转发动机汽车被列为3缸。这组图很容易在变量对之间的关系中找出模式。然而,在高维中可能存在重要的模式,而这些模式在这个图中不容易识别。

平行坐标图

散点图矩阵只显示二元关系。但是,还有其他方法可以同时显示所有变量,允许您研究变量之间的高维关系。最直接的多元图是平行坐标图。在这个图中,坐标轴都是水平布置的,而不是像通常的笛卡尔图那样使用正交轴。每个观察结果在图中表示为一系列相连的线段。例如,我们可以绘制所有拥有4、6或8个气缸的汽车的图形,并按组进行颜色观察。

Cyl468 = ismember(气缸,[4 68]);parallelcoords (X (Cyl468:)“集团”气缸(Cyl468),...“标准化”“上”“标签”varNames)

图中的水平方向表示坐标轴,垂直方向表示数据。每个观测值由五个变量的测量值组成,每个测量值表示为对应直线与每个坐标轴相交的高度。由于这五个变量的范围差异很大,所以这个图是用标准化的值制作的,其中每个变量都被标准化为均值和单位方差为零。例如,通过颜色编码,图中显示,8缸汽车的MPG和加速度值通常较低,而排量、重量和马力值较高。

即使按组进行颜色编码,具有大量观测值的平行坐标图也很难阅读。我们还可以制作一个平行坐标图,其中只显示每个组的中位数和四分位数(25%和75%点)。这使得群体之间的典型差异和相似之处更容易区分。另一方面,每个群体的异常值可能是最有趣的,而这张图根本没有显示它们。

parallelcoords (X (Cyl468:)“集团”气缸(Cyl468),...“标准化”“上”“标签”varNames,分位数的或25)

安德鲁斯情节

另一种类似的多元可视化是安德鲁斯图。该图将每个观测值表示为区间[0,1]上的平滑函数。

andrewsplot (X (Cyl468:)“集团”气缸(Cyl468),“标准化”“上”

每个函数都是傅立叶级数,其系数等于相应的观测值。在这个例子中,级数有五个项:一个常数,两个周期为1和1/2的正弦项,以及两个相似的余弦项。在Andrews图中,前三个变量对函数形状的影响最为明显,因此前三个变量的模式往往是最容易识别的。

在t = 0时,各组之间有明显的差异,这表明第一个变量MPG是4缸、6缸和8缸汽车的区别特征之一。更有趣的是三组在t = 1/3左右的差异。将这个值代入安德鲁斯图函数的公式中,我们得到了一组系数,这些系数定义了区分不同组的变量的线性组合。

T1 = 1/3;(1 /√(2)罪(2 *π* t1)因为(2 *π* t1)罪(4 *π* t1)因为(4 *π* t1))
Ans = 0.7071 0.8660 -0.5000 -0.8660 -0.5000

从这些系数可以看出,4缸汽车和8缸汽车的区别之一是前者的MPG和加速度值较高,排量、马力、特别是重量值较低,而后者则相反。这和我们从平行坐标图中得到的结论是一样的。

字形的情节

可视化多元数据的另一种方法是使用“符号”来表示维度。这个函数glyphplot金宝app支持两种类型的字形:星星和切尔诺夫面。例如,这是汽车数据中前9个模型的星形图。星形中的每个辐条代表一个变量,辐条长度与该变量在该观测中的值成正比。

h = glyphplot(X(1:9,:),“字形”“星”“varLabels”varNames,“obslabels”、模型(1:9,:));集(h (:, 3),“字形大小”8);

在实时MATLAB图形窗口中,此图将允许使用数据游标对数据值进行交互式探索。例如,单击Ford Torino星号的右边点,将显示它的MPG值为17。

字形图和多维尺度

在一个网格上绘制恒星,没有特定的顺序,可能会导致一个令人困惑的数字,因为相邻的恒星可能最终看起来完全不同。因此,眼睛可能无法捕捉到平滑的图案。将多维缩放(MDS)与字形图结合使用通常很有用。为了说明问题,我们将首先选择1977年的所有汽车,并使用zscore函数将五个变量中的每一个标准化,使其具有零平均值和单位方差。然后,我们将计算这些标准化观测之间的欧几里得距离,作为衡量差异的标准。在实际应用程序中,这种选择可能过于简单,但在这里用于说明。

models77 = find((Model_Year==77));dissimilarity = pdist(zscore(X(models77,:)));

最后,我们使用mdscale在二维空间中创建一组位置,其点间距离近似于原始高维数据之间的差异,并使用这些位置绘制符号。这个2D图中的距离可能只是粗略地再现了数据,但对于这种类型的图来说,这已经足够了。

Y = mdscale(dissimilarity,2);glyphplot (X (models77:)“字形”“星”“中心”, Y,...“varLabels”varNames,“obslabels”模型(models77:),“半径”5);标题(“1977车型年”);

在这个图中,我们使用MDS作为降维方法,创建一个2D图。通常这意味着信息的丢失,但是通过绘制符号,我们已经在数据中包含了所有高维信息。使用MDS的目的是使数据的变化具有一定的规律性,以便更容易看到字形之间的模式。

就像之前的情节一样,交互式探索将可能在实时图形窗口中进行。

另一种类型的字形是切尔诺夫脸。该字形将每次观察的数据值编码为面部特征,如脸的大小、脸的形状、眼睛的位置等。

glyphplot (X (models77:)“字形”“脸”“中心”, Y,...“varLabels”varNames,“obslabels”模型(models77:));标题(“1977车型年”);

在这里,两个最明显的特征,脸的大小和前额/下巴的相对大小,编码MPG和加速度,而前额和下巴的形状编码位移和重量。两眼之间的宽度意味着马力。值得注意的是,前额宽而下巴窄的面孔很少,反之亦然,说明位移和体重变量之间存在正线性相关。这也是我们在散点图矩阵中看到的。

特征与变量的对应关系决定了哪些关系是最容易看到的glyphplot允许选择更改容易。

关闭