用PCA分析美国城市的生活质量
这个例子展示了如何执行加权主成分分析和解释结果。
加载示例数据
加载样例数据。该数据包括对美国329个城市生活质量的9项不同指标的评级。它们是气候、住房、健康、犯罪、交通、教育、艺术、娱乐和经济。对于每个类别,评分越高越好。例如,犯罪率越高意味着犯罪率越低。
显示类别
变量。
负载城市类别
类别=9 x14 char数组“气候”“住房”“健康”“犯罪”“交通”“教育”“艺术”“娱乐”“经济”
在总,城市
数据集包含三个变量:
类别
,是一个包含索引名称的字符矩阵的名字
,是一个包含329个城市名称的字符矩阵评级
为329行9列的数据矩阵
图数据
做一个箱线图来看看的分布评级
数据。
图()箱线图(评级,“定位”,“水平”,“标签”、类别)
对艺术和住房的评级比对犯罪和气候的评级更具可变性。
检查两两相关
检查变量之间的成对相关性。
C = corr(评级,评级);
一些变量之间的相关性高达0.85。主成分分析构造独立的新变量,这些新变量是原变量的线性组合。
计算主成分
当所有变量在同一单位内时,对原始数据计算主成分是合适的。当变量的单位不同或不同列的方差差异很大时(如本例),数据的缩放或使用权重通常是可取的。
使用评级的逆方差作为权重,执行主成分分析。
w = 1. / var(评级);[wcoeff,分数,潜伏,tsquared解释]= pca(评级,...“VariableWeights”, w);
或者说:
[wcoeff,分数,潜伏,tsquared解释]= pca(评级,...“VariableWeights”,“方差”);
的五种输出主成分分析
.
分量系数
第一个输出wcoeff
包含主成分的系数。
前三个主成分系数向量为:
c3 = wcoeff (: 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 =诊断接头(std(评级))\ wcoeff;
注意,如果使用权重向量,w
,同时进行主成分分析
,然后
coefforth =诊断接头(sqrt (w)) * wcoeff;
检查系数
变换后的系数现在是标准正交的。
我= coefforth ' * coefforth;我(1:3,1:3)
ans =3×31.000 -0.0000 -0.0000 -0.0000 1.000 -0.0000 -0.0000 1.000
组件的分数
第二个输出分数
在主成分定义的新坐标系中包含原始数据的坐标。的分数
矩阵的大小与输入数据矩阵的大小相同。还可以使用标准正交系数和标准化评级获得组件得分,如下所示。
* coefforth cscores = zscore(评级);
cscores
而且分数
是相同的矩阵。
情节部分分数
的前两列画一个图分数
.
图绘制(分数(:1),得分(:,2),“+”)包含(第一主成分的) ylabel (第二主成分的)
这个图显示了投射到前两个主成分上的居中和缩放的收视率数据。主成分分析
计算分数的平均值为零。
探索情节交互
注意图右半部分的外围点。您可以像下面这样图形化地识别这些点。
gname
将光标移到图上,在最右边的七个点附近单击一次。这将按行号标记这些点,如下图所示。
贴点后按返回.
提取观测的名字
创建一个索引变量,其中包含所选择的所有城市的行号,并获取城市的名称。
Metro = [43 65 179 213 234 270 314];名(地铁:)
ans =7 x43 char数组“波士顿,马萨诸塞州”“芝加哥,伊利诺伊州”“洛杉矶,长滩,加利福尼亚州”“纽约,纽约州”“费城,PA-NJ”“旧金山,加利福尼亚州”“华盛顿,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
创建小石子的阴谋
制作一个由每个主成分解释的变化百分比的碎石图。
图帕累托(解释)包含(主成分的) ylabel (的方差解释(%))
这个碎石图只显示了解释95%总方差的前七个(而不是全部九个)分量。每个分量的方差中唯一明显的间隔是在第一个和第二个分量之间。然而,第一个成分本身解释了不到40%的方差,所以可能需要更多的成分。您可以看到,前三个主要成分解释了标准化评级中大约三分之二的总可变性,因此这可能是一个减少维度的合理方法。
霍特林的丁字尺统计
的最后一个输出主成分分析
是tsquared
这是霍特林的店
,是对每个观测点到数据集中心的多元距离的统计度量。这是一种找到数据中最极端点的分析方法。
[st2,指数]=排序(tsquared,“下”);%按降序排序极端=指数(1);名称(极端,:)
ans = '纽约,NY '
纽约的评分与美国城市平均水平相差最远。
可视化的结果
将每个变量的标准正交主成分系数和每个观察的主成分得分可视化在一个单一的图中。
图biplot (coefforth (:, 1:2),“分数”分数(:1:2),“Varlabels”、类别)轴([-。0.6 - 26日。51 .51]);
在这个双标图中,所有9个变量都用一个矢量表示,矢量的方向和长度表示每个变量对图中两个主要成分的贡献。例如,横轴上的第一个主成分对所有9个变量的系数都是正的。这就是为什么这九个向量都指向图的右半部分。第一主成分中系数最大的是第三和第七元素,对应于变量健康
而且艺术
.
第二个主成分,在纵轴上,变量的系数为正教育
,健康
,艺术
,运输
,其余5个变量为负系数。这表明第二个组成部分区分了第一组变量值高、第二组变量值低的城市和相反的城市。
这个图中的变量标签有些拥挤。你可以排除VarLabels
name-value参数,或者使用图窗口工具栏中的Edit plot工具选择并拖动一些标签到更好的位置。
这个二维双线图还包括329个观测值的每个点,用坐标表示每个观测值在图中两个主要组成部分的得分。例如,靠近图左边缘的点的第一主成分得分最低。这些点按照最大分数值和最大系数长度进行缩放,因此只能从图中确定它们的相对位置。
您可以通过选择来识别图中的项目工具>数据提示在图窗口。通过单击一个变量(矢量),可以读取每个主成分的变量标签和系数。通过单击一个观察点(点),您可以读取每个主成分的观察名称和分数。您可以指定“ObsLabels”,名字
在数据游标显示中显示观测名称而不是观测编号。
创建三维Biplot。
你也可以制作一个三维的双线图。
图biplot (coefforth (: 1:3),“分数”分数(:1:3),“ObsLabels”、名称)轴([-。0.8 - 26日。51 .51 -。61 .81]) view([30 40])
如果前两个主坐标不能充分解释数据中的方差,则此图是有用的。还可以旋转图形以从不同角度查看工具>三维旋转.
另请参阅
主成分分析
|pcacov
|pcares
|车牌提取
|箱线图
|biplot