R语言主成分分析(PCA)

数据的导入

> data=read.csv('F:/R语言工作空间/pca/data.csv') #数据的导入
>
> ls(data) #ls()函数列出所有变量
[1] "X" "不良贷款率" "存贷款比率" "存款增长率" "贷款增长率" "流动比率" "收入利润率"
[8] "资本充足率" "资本利润率" "资产利润率"
> dim(data) # 维度
[1] 15 10

一.数据标准化

> std_data=scale(data[2:10])  #数据标准化
> 
> rownames(std_data)=data[[1]]  #数组各行名字定义为数据文件的的第一列
> 
> class(std_data)   #查看数据类型
[1] "matrix"
> df=as.data.frame(std_data)   #转化为数据框
> class(df)
[1] "data.frame"

习惯数据框格式

数据标准化

> std_data=scale(data[2:10])  #数据标准化
> 
> rownames(std_data)=data[[1]]  #数组各行名字定义为数据文件的的第一列
> 
> class(std_data)   #查看数据类型
[1] "matrix"
> df=as.data.frame(std_data)   #转化为数据框
> class(df)
[1] "data.frame"

  

二.主成分分析结果

> df.pr=princomp(df,cor=TRUE) #主成分分析 
> summary(df.pr,loadings=TRUE)  #列出结果 包含特征向量
Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9 Standard deviation 1.8895 1.3087 1.2365 0.9593 0.86553 0.46727 0.4168 0.293547 0.201641 Proportion of Variance 0.3967 0.1903 0.1699 0.1023 0.08324 0.02426 0.0193 0.009574 0.004518 Cumulative Proportion 0.3967 0.5870 0.7569 0.8591 0.94235 0.96661 0.9859 0.995482 1.000000 Loadings: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9 不良贷款率 0.425 0.188 0.288 0.423 0.173 0.695 资本充足率 -0.359 -0.521 0.234 0.546 0.127 -0.214 -0.426 存贷款比率 0.301 0.532 -0.142 -0.370 -0.324 0.248 -0.320 -0.438 流动比率 -0.192 0.429 -0.416 0.439 0.306 -0.384 -0.113 0.399 资产利润率 -0.392 0.332 -0.438 -0.178 0.452 0.494 0.238 资本利润率 -0.413 -0.185 0.259 -0.103 0.428 -0.562 0.167 -0.436 收入利润率 -0.299 -0.455 -0.116 0.299 -0.481 -0.159 0.432 -0.329 0.221 存款增长率 -0.243 0.249 0.387 0.636 -0.282 0.171 0.336 -0.309 贷款增长率 -0.300 0.342 0.518 -0.127 0.101 0.214 -0.620 0.260

  结果比较杂乱,接下来确定主成分个数

三.确定主因子个数

根据累计贡献率大于90%,确定

计算相关系数矩阵

> cor(df)  #相关系数矩阵
           不良贷款率 资本充足率 存贷款比率 流动比率 资产利润率 资本利润率 收入利润率 存款增长率
不良贷款率     1.0000   -0.57238    0.31761 -0.20055   -0.70121   -0.45662   -0.53825   -0.16790
资本充足率    -0.5724    1.00000   -0.33566  0.61749    0.51053    0.32931    0.37424    0.01208
存贷款比率     0.3176   -0.33566    1.00000  0.16576   -0.02387   -0.72464   -0.56974   -0.11599
流动比率      -0.2005    0.61749    0.16576  1.00000    0.31280    0.07588   -0.03629    0.27787
资产利润率    -0.7012    0.51053   -0.02387  0.31280    1.00000    0.44019    0.13002    0.24387
资本利润率    -0.4566    0.32931   -0.72464  0.07588    0.44019    1.00000    0.38484    0.26496
收入利润率    -0.5383    0.37424   -0.56974 -0.03629    0.13002    0.38484    1.00000    0.24963
存款增长率    -0.1679    0.01208   -0.11599  0.27787    0.24387    0.26496    0.24963    1.00000
贷款增长率    -0.2863    0.03398   -0.14413  0.08791    0.59245    0.55095   -0.09947    0.60455
           贷款增长率
不良贷款率   -0.28628
资本充足率    0.03398
存贷款比率   -0.14413
流动比率      0.08791
资产利润率    0.59245
资本利润率    0.55095
收入利润率   -0.09947
存款增长率    0.60455
贷款增长率    1.00000

 求特征值和特征向量

>y=eigen(cor(df)) #求出cor(df)的特征值和特征向量
> y$values#输出特征值
[1] 3.57008 1.71263 1.52895 0.92033 0.74914 0.21834 0.17370 0.08617 0.04066

 输出前五个累计贡献率 

> sum(y$values[1:5])/sum(y$values)   #求前5个主成分的累计方差贡献率
[1] 0.9423
> 

 

输出前5个主成分的载荷矩阵
> df.pr$loadings[,1:5]#输出前5个主成分的载荷矩阵
            Comp.1   Comp.2   Comp.3   Comp.4  Comp.5
不良贷款率  0.4245  0.03196  0.18753  0.28824  0.4226
资本充足率 -0.3595  0.02955 -0.52091  0.04673  0.2341
存贷款比率  0.3013  0.53170 -0.14155 -0.09645 -0.3697
流动比率   -0.1923  0.42903 -0.41595  0.43880  0.3061
资产利润率 -0.3916  0.33239 -0.04543 -0.43786 -0.1780
资本利润率 -0.4134 -0.18527  0.25918 -0.10322  0.4280
收入利润率 -0.2990 -0.45539 -0.11566  0.29949 -0.4810
存款增长率 -0.2432  0.24926  0.38706  0.63621 -0.2824
贷款增长率 -0.3000  0.34207  0.51768 -0.12671  0.1011

  画出碎石图

screeplot(df.pr,type='lines')  #画出碎石图

  

 

画出散点图

 

biplot(df.pr)     #画出主成分散点图

  

 

 

四.获取相关系数矩阵的特征值和特征向量

> y=eigen(cor(df)) #求出cor(df)的特征值和特征向量
> y$values#输出特征值
[1] 3.57008 1.71263 1.52895 0.92033 0.74914 0.21834 0.17370 0.08617 0.04066

  

五.计算主成分总得分

.

> s=df.pr$scores[,1:5]#输出前5个主成分的得分
> #s[,1]
> #计算综合得分
> 
> scores=0.0
> for (i in 1:5)
   scores=(y$values[i]*s[,i])/(sum(y$values[1:5]))+scores
> 
> 
> cbind(s,scores)#输出综合得分信息
                          Comp.1  Comp.2    Comp.3   Comp.4  Comp.5   scores
北京农商银行             -0.9927 -0.4565 -0.773341  0.72371  0.5357 -0.52362
上海农商银行              0.5461 -0.4069  0.228600 -0.05691 -1.1411  0.08196
广州农商银行             -1.7680 -0.5058  0.091704  0.46582  0.4301 -0.74130
天津农商银行              0.8670 -1.0680 -0.118665 -1.13960 -0.2242 -0.01556
(宁波)慈溪农村商业银行 -0.9713  2.0909 -2.590721  0.44416  0.7692 -0.33751
江阴农商银行              0.6533  0.3486 -1.678249  0.47363 -0.4051  0.05848
成都农商银行             -2.5372 -3.2477  0.008494  0.24227  1.2955 -1.58158
重庆农村商业银行         -1.0099 -0.1061  1.753280  0.23145 -0.6871 -0.16602
(宁夏)黄河农村商业银行 -0.5903  0.7269  1.227349  0.59878 -1.1312  0.08463
(陕西)旬阳农村商业银行  0.1928  1.7666 -0.273642 -1.29087  0.7258  0.31262
太仓农村商业银行          3.1937 -1.4905 -1.089861 -1.17931 -0.6266  0.66358
武汉农村商业银行         -0.8349  0.1686 -0.119553 -1.63283 -0.4856 -0.55902
安徽合肥科技农商银行     -0.2713  0.3084 -0.273867  1.79049 -1.2170 -0.01448
福州农商银行             -1.5557  1.6844  2.185117 -0.80662  0.7243  0.05566
沈阳农商银行              5.0781  0.1871  1.423354  1.13584  1.4374  2.68217

  

 

转载于:https://www.cnblogs.com/jin-liang/p/9064020.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在R语言中,成分分析PCA)是一种常用的数据降维方法,可以将高维数据转换成低维空间,从而方便数据的可视化和分析。下面以鸢尾花数据集为例,介绍如何使用R语言进行PCA分析。 1. 导入数据 首先需要导入鸢尾花数据集,该数据集包含150个样本,每个样本有4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。 ```R # 导入鸢尾花数据集 data(iris) head(iris) ``` 2. 数据预处理 PCA分析通常需要对数据进行标准化处理,以确保不同特征的单位和尺度对结果的影响。 ```R # 标准化处理 iris_std <- scale(iris[,1:4]) ``` 3. 计算成分 使用prcomp函数计算成分,其中参数center和scale分别表示是否对数据进行中心化和标准化处理。 ```R # 计算成分 pca <- prcomp(iris_std, center = TRUE, scale. = TRUE) summary(pca) ``` 4. 解释成分 PCA分析的结果包括每个成分的方差贡献率和累计方差贡献率,可以用来评估每个成分的重要性。 ```R # 解释成分 pca_var <- pca$sdev^2 pca_var_ratio <- pca_var/sum(pca_var) pca_var_ratio_cumsum <- cumsum(pca_var_ratio) # 绘制方差贡献率图 library(ggplot2) df <- data.frame(PC = 1:4, Variance_Ratio = pca_var_ratio) ggplot(df, aes(x = PC, y = Variance_Ratio)) + geom_col(fill = "steelblue") + geom_line(aes(y = pca_var_ratio_cumsum), color = "red") + labs(title = "PCA Variance Ratio", x = "Principal Components", y = "Variance Ratio") ``` 5. 成分可视化 可以将鸢尾花数据集映射到前两个成分的平面上进行可视化,观察不同类别的鸢尾花在成分空间中的分布情况。 ```R # 成分可视化 iris_pca <- as.data.frame(pca$x[,1:2]) iris_pca$class <- iris$Species ggplot(iris_pca, aes(x = PC1, y = PC2, color = class)) + geom_point(size = 3) + labs(title = "Iris PCA", x = "PC1", y = "PC2") ``` 综上所述,以上就是使用R语言进行成分分析的简单案例。通过PCA分析,可以将高维数据转换成低维空间,并且保留了大部分原始数据的信息,方便进行数据可视化和分析

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值