多元统计分析:主成分分析

简介 (Principal Component Analysis, PCA) n 行 = 样本数 p 列 = 指标数 = 变量数 = 特征数 PCA 目标: 用 一组较少的不相关变量 代替 大量原相关变量,同时尽可能 保留原变量的信息,这些推导所得的变量称为 主成分 由于主成分有多个,有p 列,就有p个主成分,此时就还未达到降维效果,所以需要选择其中的一些留下作为最后的主成分 毫无疑问,希望保留尽可能多原变量信息,而方差大就意味着信息量大, 所以,我们可以按主成分对应的方差贡献率对主成分进行排序,并算出累积方差贡献率, 一般,当k 处 累积方差贡献率>80时,我们就可以选择前 k 个主成分 主成分之间彼此不相关 -> 协方差cov = 0 (相关系数 cor=0)-> 两两 正交:正交:当 p = 2 即二维图时,表现为线线垂直 步骤 假设 n * p ,即 n 样本,p 特征 有 p 特征,就有 p 主成分,但最后并不选择这么多,而是 按 各个主成分 方差递减,包含的信息量递减,只选取前 k 个 按 方差贡献率(方差占比)(某个主成分的方差占全部方差的比重)大小 先 对主成分 排序 排序后,算 累积方差贡献率(Cumulative Proportion),前k个位置达到 >80%,就选取前k个作为最后的主成分,用于之后的主成分表达式 R语言内置函数中有 2种(princomp()和 prcomp)实现PCA,因为 PCA 的实现一般有 2 种, PCA 的实现:
    特征值(correlation和covariance)分解 奇异值(svd)分解
princomp() : cor参数:决定是 通过 cor 还是 cov 来计算
    原始数据标准化(均值0,方差1)
R语言中 scale()
    计算 样本协方差矩阵(标准化后协方差等于相关系数,所以,此处等同相关系数矩阵) 计算 协方差矩阵 的 特征值 和 特征向量 按 特征值 从大到小 排序 保留 最大 k 个特征向量 写出 主成分表达式,将数据转换到 特征向量 构建的新空间中 计算 主成分得分 根据得分数据,进一步统计分析
案例 电信业发展的主成分分析
1
2
3
4
library(openxlsx)

Case8 = read.xlsx("../Res/mvcase5.xlsx", "Case8", rowNames = T)
head(Case8)
1
plot(hclust(dist(scale(Case8)))) # 系统聚类图
1
2
3
source("../Res/msaR.r")

msa.pca(Case8, cor = T) # 主成分分析
运行后,发现可以提取两个主成分(Comp.1, Comp.2),这两个成分占全部的 96.14%,可以说是基本代表了全部指标的信息量 第一个主成分(Comp.1) 主要由 \(x_1\) 电信业务总量,\(x_4\) 国际互联网络用户,\(x_5\) 互联网用户使用时长,\(x_6\) 长途电话通话量,\(x_7\) 长途电话通话时长 决定, 这5个指标是总量指标,说明一个城市的电信业务规模和电信通信业务发展水平 第二个主成分(Comp.2) 主要由 \(x_2\) 每百人拥有固定电话数,\(x_3\) 每百人拥有移动电话数 决定, 这两个指标 是 平均量成分,反映了 电信行业中的电话人均普及情况 降维:7个经济指标 用 2个综合指标 代替,而综合指标的信息没有损失多少 利用线性加权方法,以各主成分的贡献率为权数, 按公式 计算 各城市 电信业发展水平的 综合得分 并据此排名:
\[ score = \frac { 0.738 \times PC1 + 0.223 \times PC2 } { 0.738 + 0.223 } \]
举例:广州得分:
\[ score_{广州} = \frac { 0.738 \times 5.9068 + 0.223 \times -2.5597 } { 0.738 + 0.223 } \] 由广州在PC1上得分,PC2上得分 根据公式得出综合得分 TODO: 综合得分应该是这么算的,计算了下,只有一点误差 Q&A Q: 为什么要对数据做标准化(均值0,方差1)? A: 当不同特征量纲相差较大时,由于方差对于量纲,均值的敏感,将会导致量纲大的特征 对于 方差的影响很大,而我们认为这是不对的,不应当因为 公里数几千几万,相较于几元钱,而过分的影响最后方差 这也是相关系数的体现,相关性不应当受量纲影响 Q : 标准化后服从 正态分布(高斯分布)? A: 标准化(均值0,方差1) 后 服从标准正态分布(均值0,方差1) Q: 标准化是不是有多种实现?看到一种: \((x-x_{mean})/'均方根'\) A : TODO: 标准化实现公式 Q: 标准化 和 归一化 异同? A: TODO: 标准化 和 归一化 异同? Q: 如何对PCA结果主成分赋予新意义?即解释最后的主成分 A:根据PCA表达式的系数结合定性分析,主成分是原来变量的线性组合(原有变量 ---组合形成了--->最后的主成分) (PS:这点和因子分析正好相反,因子分析的 公共因子用于 解释/组合 原有变量)(数据背后隐藏的公共因子----形成解释了--->原有变量) 补充 standard deviation, $sdev:标准差 Proportion of Variance:方差的占比 Cumulative Proportion:累计贡献率 参考 感谢帮助! 主成分分析(PCA)原理及R语言实现 | 降维dimension reduction | Principal component analysis 《多元统计分析及R语言建模》(第五版)王斌会 《R语言实战》[美]卡巴斯夫 初识R语言——PCA的实现 主成分分析(PCA)原理及R语言实现 R语言 PCA分析 R语言手动计算主成分分析(PCA)及其在R函数的实现