R语言学习记录:主成分分析的R实现

时间: 2018-08-09
教程:知乎:Learn R | 数据降维之主成分分析(上)Learn R | 数据降维之主成分分析(下) 作者:Jason
数据来源:《应用多元统计分析》 王学民 编著 P228-P230 习题7.6、7.7


主成分分析

1.主成分分析

使用psych包对数据进行主成分分析。
其中,principal函数进行主成分分析,fa.parallel函数生成碎石图。

principal(r, nfactors = 1, residuals = FALSE, rotate = “varimax”,
n.obs = NA, covar = FALSE, scores = TRUE,missing = FALSE, impute =
“median”, oblique.scores=TRUE, method = “regression”,…)
r:指定输入的数据,如果输入的是原始数据,R将自动计算其相关系数矩阵 nfactors:指定主成分个数
residuals:是否显示主成分模型的残差,默认不显示 rotate:指定模型旋转的方法,默认为最大方差法
n.obs:如果输入的数据是相关系数矩阵,则必须指定观测样本量
covar:逻辑参数,如果输入数据为原始数据或方阵(如协方差阵),R将其转为相关系数矩阵 scores:是否计算主成分得分
missing:缺失值处理方式,如果scores为TRUE,且missing也为TRUE,缺失值将被中位数或均值替代
impute:指定缺失值的替代方式,默认为中位数替代; method:指定主成分得分的计算方法,默认使用回归方法计算。
(摘自教程)

如:
导入数据:

> library(openxlsx)
> data1 <- read.xlsx("E:\\Learning_R\\主成分分析\\exec7.6.xlsx", rowNames = TRUE, rows = 1:51, cols = 1:8)
> head(data1)
           杀人罪 强奸罪 抢劫罪 伤害罪 夜盗罪 盗窃罪 汽车犯罪
Alabama      14.2     25     97    278   1136   1882      281
Alaska       10.8     52     97    284   1332   3370      753
Arizona       9.5     34    138    312   2346   4467      440
Arkansas      8.8     28     83    203    973   1862      183
California   11.5     49    287    358   2139   3500      664
Colorado      6.3     42    171    293   1935   3903      477

生成碎石图:

> library(psych)
> fa.parallel(data1, fa = 'pc', n.iter = 100, show.legend = FALSE)
Parallel analysis suggests that the number of factors =  NA  and the number of components =  1 

这里写图片描述
从图中可以看出,保留两个主成分即可。

主成分分析:

> data1_pca <- principal(data1, nfactors = 2, rotate = "none")
> data1_pca
Principal Components Analysis
Call: principal(r = data1, nfactors = 2, rotate = "none")
Standardized loadings (pattern matrix) based upon correlation matrix
          PC1   PC2   h2   u2 com
杀人罪   0.61 -0.70 0.86 0.14 2.0
强奸罪   0.88 -0.19 0.80 0.20 1.1
抢劫罪   0.81  0.05 0.65 0.35 1.0
伤害罪   0.80 -
  • 35
    点赞
  • 372
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值