使用PCA分析美国城市的生活质量

这个例子展示了如何执行加权主成分分析并解释结果。

加载样本数据。

加载样本数据。数据包括329名美国城市的9种不同指标的评级。这些是气候,住房,健康,犯罪,运输,教育,艺术,娱乐和经济学。对于每个类别,更高的评级更好。例如,犯罪率更高的评级意味着犯罪率较低。

显示类别多变的。

加载城市类别
类别=气候住房健康犯罪运输教育艺术娱乐经济学

总共,城市数据集包含三个变量:

  • 类别,一个包含索引名称的字符矩阵

  • 的名字,一个包含329个城市名称的字符矩阵

  • 评级,数据矩阵有329行和9列

图数据。

制作一个boxplot来看看分配的评级数据。

图()箱线图(评级,“定位”“水平”“标签”、类别)

在犯罪和气候的评级中,艺术和住房的评级有更多的可变性。

检查成对相关性。

检查变量之间的成对相关性。

C = corr(评级,评级);

一些变量之间的相关性高达0.85。主成分分析构建独立的新变量,其是原始变量的线性组合。

计算主组件。

当所有的变量都在同一个单位时,计算原始数据的主成分是合适的。当变量的单位不同或不同列的方差差异很大时(如本例所示),数据的缩放或使用权重往往是可取的。

使用评级的逆方差作为权重来执行主成分分析。

w = 1. / var(评级);[wcoeff,分数,潜伏,tsquared解释]= pca(评级,......“VariableWeights”,w);

或等效:

[wcoeff,分数,潜伏,tsquared解释]= pca(评级,……“VariableWeights”、“方差”);

以下部分解释了五个产出PCA.

组件系数。

第一个输出,wcoeff,包含主成分的系数。

前三个主成分系数向量为:

c3 = wcoeff (: 1:3)
C3 = WCOEFF(:,1:3)C3 = 1.0E + 03 * 0.0249 -0.0263 -0.0834 0.8504 -0.5978 -0.4965 0.4616 0.3004 -0.0073 0.1005 -0.1269 0.0661 0.5096 0.2606 0.2124 0.2606 0.2124 0.0883 0.151 0.0737 2.1496 0.043 -0.1229 0.26490.3-0.1229 0.26490.3-0.1229 0.0411 0.04110.0411.04110.1469 -0.5111 0.6586

这些系数是加权的,因此系数矩阵不是标准正交的。

变换系数。

变换这些系数使它们是正交的。

cofforth = inv(diag(std(routings)))* wcoeff;

注意,如果使用权重向量,W.,同时进行PCA., 然后

coefforth = diag(sqrt(w))* wcoeff;

检查系数是否正交。

变换后的系数现在是标准正交的。

我= Coefforth'* cofforport;我(1:3,1:3)
Ans = 1.000 -0.000 -0.000 -0.000 1.000 -0.000

组件的分数。

第二个输出,分数,包含由主组件定义的新坐标系中原始数据的坐标。的分数矩阵与输入数据矩阵相同。您还可以使用正交系数和标准化额度获得组件分数,如下所示。

* coefforth cscores = zscore(评级);

cscores.分数是相同的矩阵。

情节部分分数。

创建第一列的第一个列分数

图()绘图(得分(:,1),得分(:,2),“+”)包含(第一主成分的) ylabel (第二主成分的

这幅图显示了投射到前两个主要成分上的中心和比例评级数据。PCA.计算分数的平均值为零。

交互式地探索情节。

注意右半部分的孤立点。你可以用图表把这些点识别如下。

GNAME.

将光标移到绘图上,在最右边的七个点附近单击一次。如下图所示,用行号标记这些点。

标签点后,按返回

提取观测的名字。

创建包含您选择的所有城市的行号的索引变量,并获得城市的名称。

地铁= [43 65 179 213 234 270 314];名(地铁:)
ans =波士顿,马芝加哥,il洛杉矶,长滩,加利福尼亚州纽约,纽约费城,Pa-nj旧金山,加州华盛顿,DC-MD-VA

这些标记的城市是美国的一些最大的人口中心,它们看起来比数据的其余部分更极端。

组件差异。

第三个输出,潜在的,是一个包含由相应主成分解释的方差的向量。每一列的分数具有等于​​相应行的示例方差潜在的

潜在的
潜伏期= 3.4083 1.2140 1.1415 0.9209 0.7533 0.6306 0.4930 0.3180 0.1204

百分比方差解释。

第五产量,解释,是包含相应主组件解释的百分比v百分比的载体。

解释
解释= 37.8699 13.4886 12.6831 10.2324 8.3698 7.0062 5.4783 3.5338 1.3378

创建小石子阴谋。

制作每个主组件解释的百分比变异性的碎片曲线图。

图()帕累托(解释)Xlabel(主成分的) ylabel (的方差解释(%)

这个小石子图只显示了解释总方差95%的前7个成分(而不是总共9个)。每个分量所解释的方差数量中唯一清晰的中断是在第一个分量和第二个分量之间。然而,第一个组件本身只能解释不到40%的方差,所以可能需要更多的组件。你可以看到前三个主要成分解释了标准化评分中大约三分之二的总可变性,所以这可能是一个合理的减少维度的方法。

Hotelling的T平方统计。

最后的输出PCA.tsquared,这是热身的t2,是对每个观测结果与数据集中心之间的多变量距离的统计度量。这是一种找出数据中最极端点的分析方法。

[ST2,索引] =排序(Tsquared,“下”);%按降序排序extreme =索引(1);名字(极端,:)
ans =纽约,纽约

纽约的评级是来自美国城市的平均城市最远的。

可视化结果。

将每个变量的标准正交主成分系数和单个图中每个观测值的主成分得分可视化。

biplot (coefforth (:, 1:2),'分数',得分(:,1:2),“Varlabels”、类别);轴([-。26 0.6 -.51 .51]);

在这个双图中,所有9个变量都由一个向量表示,向量的方向和长度表明每个变量对图中的两个主成分的作用。例如,在横轴上的第一个主分量对所有9个变量都是正的系数。这就是为什么这九个向量都指向右半部分的原因。第一个主成分的系数最大的是第三和第七元素,对应变量健康艺术

第二个主分量,在纵轴上,变量的系数为正教育健康艺术,运输,其余5个变量为负。这表明第二部分区分了第一组变量值高而第二组变量值低的城市和相反的城市。

图中的变量标签有些拥挤。您可以排除VarLabels名称 - 值对参数在制作绘图时,或选择并将某些标签拖动到更好的位置,从图窗口工具栏中使用编辑绘图工具。

该2-D双曲线还包括329个观察中的每一个的点,其中坐标表示曲线中两个主要成分的每个观察的分数。例如,该图左边缘附近的点具有第一主组件的最低分数。该点相对于最大得分值和最大系数长度缩放,因此只能从曲线确定它们的相对位置。

您可以通过选择来识别情节中的项目工具>数据指针在图形窗口中。通过单击一个变量(向量),您可以读取每个主组件的变量标签和系数。通过单击一个观察点,您可以读取每个主组件的观察名和得分。您可以指定“Obslabels”,名字在数据游标显示中显示观察名称而不是观察数字。

创建三维双图。

您还可以在三维空间中绘制双图。

图()biplot (coefforth (:, 1:3),'分数',得分(:,1:3),'obslabels'、名称);轴([-。26 0.8 -.51 .51 -.61 .81]); view([30 40]);

如果前两个主坐标不能充分解释数据中的方差,则此图是有用的。也可以通过选择工具>三维旋转

也可以看看

|||||

相关的话题