• 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
    

      

     

  • 相关阅读:
    数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权
    数据库/MySQL的安装
    Python并发编程06 /阻塞、异步调用/同步调用、异步回调函数、线程queue、事件event、协程
    Python并发编程05 /死锁现象、递归锁、信号量、GIL锁、计算密集型/IO密集型效率验证、进程池/线程池
    Python并发编程04 /多线程、生产消费者模型、线程进程对比、线程的方法、线程join、守护线程、线程互斥锁
    Python并发编程03 /僵孤进程,孤儿进程、进程互斥锁,进程队列、进程之间的通信
    python并发编程02 /多进程、进程的创建、进程PID、join方法、进程对象属性、守护进程
    Python并发编程01 /操作系统发展史、多进程理论
    java继承内部类问题(java编程思想笔记)
    递归遍历文件夹中的文件
  • 原文地址:https://www.cnblogs.com/jin-liang/p/9064020.html
Copyright © 2020-2023  润新知