使用PCA分析美国城市的生活质量
此示例显示了如何执行加权主组件分析并解释结果。
加载样本数据
加载样本数据。数据包括对美国329个城市生活质量的9种不同指标的评级。这些是气候,住房,健康,犯罪,运输,教育,艺术,娱乐和经济学。对于每个类别,更高的评分更好。例如,更高的犯罪评级意味着较低的犯罪率。
显示类别
多变的。
加载城市类别
类别=9x14字符阵列“气候”“住房”“健康”“犯罪”“运输”“教育”“艺术”“娱乐”“经济学”
总共城市
数据集包含三个变量:
类别
,一个包含索引名称的字符矩阵名称
,一个包含329个城市名称的角色矩阵评分
,具有329行和9列的数据矩阵
情节数据
做一个盒子图来查看评分
数据。
fige()boxplot(评分,'方向',,,,'水平的',,,,'标签',类别)
与犯罪和气候的评级相比,艺术和住房的评级有更多的可变性。
检查成对相关性
检查变量之间的成对相关性。
c = corr(评级,评级);
某些变量之间的相关性高达0.85。主组件分析构建独立的新变量,这些变量是原始变量的线性组合。
计算主组件
当所有变量都在同一单元中时,适合计算原始数据的主组件。当变量以不同的单位为单位或不同列的方差的差异是很大的(如在这种情况下)时,数据缩放或权重的使用通常是可取的。
通过使用评级的逆差异作为权重执行主成分分析。
w = 1./var(Ratings);[WCOEFF,得分,潜在,Tsquared,解释] = PCA(评分,...“可变重量”,w);
或等效:
[WCOEFF,得分,潜在,Tsquared,解释] = PCA(评分,...“可变重量”,,,,'方差');
以下各节解释了的五个输出PCA
。
组件系数
第一个输出Wcoeff
包含主要组件的系数。
前三个主要成分系数向量是:
c3 = wceeff(:,1:3)
C3 =9×3103× 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.0883 0.1551 0.0737 2.1496 0.9043 -0.1229 0.2649 -0.3106 -0.0411 0.1469 -0.5111 0.6586
这些系数是加权的,因此系数矩阵不是正顺序的。
转换系数
转换系数,使其正常出现。
coefforth = diag(std(评级))\ wceeff;
请注意,如果您使用权重矢量,w
,在执行PCA
, 然后
coefforth = diag(sqrt(w))*wceeff;
检查系数
转换的系数现在是正统的。
i = coefforth'*coefforth;我(1:3,1:3)
ans =3×31.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 -0.0000 -0.0000 1.0000
组件分数
第二个输出分数
包含由主组件定义的新坐标系中原始数据的坐标。这分数
矩阵与输入数据矩阵的大小相同。您还可以使用正顺式系数和标准化等级获得分量分数。
cscores = zscore(评分)*coefforth;
CScores
和分数
是相同的矩阵。
绘图组件分数
创建一个图的图分数
。
图图(得分(:,1),得分(:,2),'+')xlabel('第一主要组件')ylabel('第二主要组件')
该图显示了投影到前两个主要组件的中心和缩放评分数据。PCA
计算得分为零。
交互探索情节
请注意,情节的右半部分的偏远点。您可以以下图形地识别这些要点。
gname
将光标移到剧情上,然后单击一次右边的七个点。如下图所示,这将通过其行号标记。
标签点后,按返回。
提取观察名称
创建一个索引变量,其中包含您选择的所有城市的行号并获取城市名称。
Metro = [43 65 179 213 234 270 314];名称(地铁,:)
ans =7x43字符阵列'波士顿,马萨诸塞州,芝加哥,伊利诺伊州,洛杉矶,长滩,加利福尼亚州,纽约,纽约,费城,pa-nj''san Francisco,CA',加利福尼亚州,华盛顿特区,DC-MD-VA'
这些标记的城市是美国一些最大的人口中心,它们看起来比其余数据更为极端。
组件差异
第三个输出潜
是一个载体,包含由相应的主组件解释的方差。每一列分数
样品方差等于相应的行潜
。
潜
潜在=9×13.4083 1.2140 1.1415 0.9209 0.7533 0.6306 0.4930 0.3180 0.1204
差异百分比解释了
第五输出解释了
是包含由相应主组件解释的百分比方差的向量。
解释了
解释=9×137.8699 13.4886 12.6831 10.2324 8.3698 7.0062 5.4783 3.5338 1.3378
创建Scree情节
制作每个主要成分解释的百分比变异性图。
图帕累托(解释)Xlabel(“主组件”)ylabel(“差异解释(%)”)
该scree图仅显示前七个(而不是总共九个)组件,这些组件解释了总方差的95%。每个组件所解释的差异量的唯一明确断裂是在第一组件和第二个组件之间。但是,第一个组件本身解释了不到40%的方差,因此可能需要更多的组件。您可以看到,前三个主要组件大约解释了标准化评分总变异性的三分之二,因此这可能是减少尺寸的合理方法。
Hotelling的T方统计数据
最后的输出PCA
是Tsquared
,这是Hotelling的
,每个观测值与数据集中心的多元距离的统计度量。这是找到数据中最极端点的分析方法。
[st2,index] = sort(tsquared,“下降”);%按降序排序extreme = index(1);名称(极端,:)
ans ='纽约,纽约'
纽约的评级距离美国普通城市最远。
可视化结果
可视化每个变量的正顺序主成分系数和单个图中每个观察值的主成分得分。
图双翼飞机(coefforth(:,1:2),“得分”,得分(:,1:2),“瓦拉布尔”,类别)轴([ - 26 0.6 -.51 .51]);
所有九个变量均在该双号中表示,矢量和矢量的方向和长度表示每个变量如何贡献图中的两个主要成分。例如,在水平轴上的第一个主要成分对于所有九个变量都具有正系数。这就是为什么将九个向量引导到情节的右半。第一个主要组件中最大的系数是第三和第七元素,与变量相对应健康
和艺术
。
垂直轴上的第二个主要成分具有变量的正系数教育
,,,,健康
,,,,艺术
, 和运输
和其余五个变量的负系数和负系数。这表明第二个组件区分第一组变量具有较高值的城市,而第二个变量的值则是相反的城市。
该图中的变量标签有些拥挤。您可以排除瓦拉布尔
在制作绘图时,名称值参数,或者选择并将某些标签拖动到使用图窗口工具栏的“编辑图”工具以更好的位置。
该2-D双波电位还包括329个观测值的每个点,坐标表明该图中两个主要成分的每个观测值的得分。例如,该图的左边缘附近的点具有第一个主组件的最低分数。相对于最大得分值和最大系数长度缩放点,因此只能从图中确定其相对位置。
您可以通过选择图中识别图中的项目工具>数据提示在图形窗口中。通过单击变量(向量),您可以读取每个主组件的变量标签和系数。通过单击观察(点),您可以读取每个主要组件的观察名称和分数。您可以指定“粘贴标签”,名字
显示观察名称,而不是数据光标显示中的观察号。
创建三维双皮子。
您也可以在三个维度上制作双皮子。
图双翼飞机(coefforth(:,1:3),“得分”,得分(:,1:3),“粘贴标签”,名称)轴([ - 26 0.8 -.51 .51 -.61 .81])视图([30 40])
如果前两个主坐标不能解释数据中的差异,则此图很有用。您也可以通过选择“工具>旋转3D。
也可以看看
PCA
|PCACOV
|PCARES
|ppca
|箱形图
|双翼飞机