主要内容

多变量数据可视化

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

在本例中,我们将使用carbigDataset,这个数据集包含了20世纪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 .62 .41 .25 .02], 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左右的差异。将这个值代入Andrews图函数的公式中,我们得到一组系数,这些系数定义了区分不同组的变量的线性组合。

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万博1manbetx支持两种类型的字形:星形和切尔诺夫面。例如,下面是汽车数据中前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作为降维方法,来创建一个二维的图。通常情况下,这意味着信息的丢失,但是通过绘制符号,我们在数据中包含了所有的高维信息。使用MDS的目的是对数据中的变化施加一些规律性,以便更容易看到字形之间的模式。

就像之前的情节一样,互动探索将会出现在一个实时的人物窗口中。

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

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

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

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

关闭