当前位置:   article > 正文

因子分析及R使用_因子分析 r

因子分析 r

目录

什么是因子分析

因子分析与主成分分析区别

因子的特点

R语言实现

极大似然法

主成分法因子分析

因子旋转法

因子得分计算

因子排名与做图

 因子信息重叠图

例2


什么是因子分析

因子分析-factor analysis,就是寻找这些公共因子的模型分析方法,它是在主成分的基础上构筑若干意义较为明确的公因子,以他们为框架分解原变量,以此考察原变量间的联系与区别。因子分析就是从大量的数据中“由表及里”、“去粗取精”,寻找影响或支配变量的多变量统计方法。

因子分析的主要用途在于:
(1)减少分析变量个数

(2)通过对变量间相关关系的探测,将原始变量进行分类,即将相关性高的变量分为一组,用共性因子代替该组变量。

因子分析与主成分分析区别

就统计上而言,主成分分析所侧重的是如何转换原始变量使之成为一些综合性的新指标,其关键在于“变异数”的问题,与主成分分析不同的是,因子分析重视的是如何解决变量之间的“共变异数”问题,因为每一反应变量均为一些“公共因子变量”和”特殊性变量“的线性函数,其中“共同因子变量”可以反应变量间的共变量,而特殊性变量部分则只对其所属的变量之变异数有所贡献,所以主成分分析是“变异数”导向的方法,因子分析则是“共变异数”导向的方法。

因子分析也是数据缩减的一种多变量分析方法,它是基于信息损失最小化而提出的一种非常有效的方法。它把众多的指标综合成为减少的几个公共指标,这些指标即是因子,

因子的特点

(1)因子变量的数量远远少于原始变量个数

(2)因子变量并非原始变量的简单取舍,而是新的综合

(3)因子变量之间没有线性关系

(4)因子变量具有明确解释性,可最大限度的发挥专业分析的作用。

R语言实现

观测数据较多,所以指标之间不可避免存在多重共线性问题,因此有必要先计算观测数据的相关矩阵

  1. x1 x2 x3 x4 x5 x6
  2. 冀东水泥 33.8 34.75 0.67 59.77 15.49 16.35
  3. 大同水泥 27.54 28.04 2.36 35.29 -20.96 -46.45
  4. 四川双马 22.86 23.47 0.61 42.83 5.48 -49.22
  5. 牡丹江 19.05 19.95 1 48.51 -12.32 -65.99
  6. 西水股份 20.84 21.17 1.08 48.45 65.09 54.81
  7. 狮头股份 28.14 28.84 2.51 24.52 -6.43 -15.94
  8. 太行股份 30.45 31.13 1.02 46.14 6.57 -16.59
  9. 海螺水泥 36.29 36.96 0.27 58.31 70.85 117.59
  10. 尖峰集团 16.94 17.26 0.61 52.04 9.03 -94.05
  11. 四川金顶 28.74 29.4 0.6 65.46 -33.97 -55.02
  12. 祁连山 33.31 34.3 1.17 45.8 12.18 39.46
  13. 华新水泥 25.08 26.12 0.64 69.35 22.38 -10.2
  14. 福建水泥 34.51 35.44 0.38 61.61 23.91 -163.99
  15. 天鹅股份 25.52 26.73 1.1 47.02 -4.51 -68.79

复制数据,运行代码

  1. > X=read.table("clipboard",header=T)#读取例9.1数据
  2. > cor(X)
  3. x1 x2 x3 x4 x5 x6
  4. x1 1.00000000 0.9991983 -0.09974689 0.18850763 0.2010041 0.29778271
  5. x2 0.99919830 1.0000000 -0.10420434 0.19672979 0.1903570 0.28747808
  6. x3 -0.09974689 -0.1042043 1.00000000 -0.83715637 -0.4087603 0.01518741
  7. x4 0.18850763 0.1967298 -0.83715637 1.00000000 0.2585103 -0.02928244
  8. x5 0.20100410 0.1903570 -0.40876032 0.25851029 1.0000000 0.58029333
  9. x6 0.29778271 0.2874781 0.01518741 -0.02928244 0.5802933 1.00000000
  10. >

极大似然法

x1与x2高度正相关,x3与x4较强复相关,x5与x6呈中度相关。为消除各财务指标之间的相关性,采用因子分析法提取因子。

下面为极大似然法提取公因子:

  1. > (FA0=factanal(X,3,rot="none"))#极大似然法因子分析
  2. Call:
  3. factanal(x = X, factors = 3, rotation = "none")
  4. Uniquenesses:
  5. x1 x2 x3 x4 x5 x6
  6. 0.005 0.005 0.005 0.271 0.005 0.548
  7. Loadings:
  8. Factor1 Factor2 Factor3
  9. x1 0.950 -0.307
  10. x2 0.948 -0.310
  11. x3 -0.340 -0.782 0.517
  12. x4 0.363 0.561 -0.531
  13. x5 0.454 0.693 0.556
  14. x6 0.383 0.163 0.527
  15. Factor1 Factor2 Factor3
  16. SS loadings 2.402 1.623 1.140
  17. Proportion Var 0.400 0.271 0.190
  18. Cumulative Var 0.400 0.671 0.861
  19. The degrees of freedom for the model is 0 and the fit was 1.1422
  20. >

 由此可见,前三个因子所解释的方差占整个方差的86%以上,基本可以全面反映六项财务指标的信息,即是Cumulative Var的值。所以我们提取前三个因子作为公共因子,但各因子的经济含义不明显,还需进行进一步分析,即因子旋转法

主成分法因子分析

  1. > library(mvstats)
  2. 载入程辑包:‘mvstats’
  3. The following object is masked _by_ ‘.GlobalEnv’:
  4. H.clust
  5. > (Fac=factpc(X,3))#主成份法因子分析
  6. $`Vars`
  7. Vars Vars.Prop Vars.Cum
  8. Factor1 2.570 0.4283 42.83
  9. Factor2 1.713 0.2855 71.38
  10. Factor3 1.249 0.2082 92.19
  11. $loadings
  12. Factor1 Factor2 Factor3
  13. x1 0.7829 0.5029 -0.3624
  14. x2 0.7811 0.4964 -0.3756
  15. x3 -0.5786 0.7685 0.0802
  16. x4 0.5951 -0.6990 -0.2415
  17. x5 0.6317 -0.1457 0.6557
  18. x6 0.5084 0.3367 0.6943
  19. $scores
  20. Factor1 Factor2 Factor3
  21. 冀东水泥 1.10805 0.19287 -0.40233
  22. 大同水泥 -1.07195 1.46385 -0.37413
  23. 四川双马 -0.58577 -0.49848 0.24193
  24. 牡丹江 -1.17442 -0.77791 0.08986
  25. 西水股份 -0.05264 -0.46073 2.31615
  26. 狮头股份 -1.05007 2.04151 0.25174
  27. 太行股份 0.20807 0.48809 -0.23430
  28. 海螺水泥 2.20745 0.32524 1.16336
  29. 尖峰集团 -1.11541 -1.53235 0.39013
  30. 四川金顶 0.09714 -0.60602 -1.45691
  31. 祁连山 0.66096 1.03293 0.04173
  32. 华新水泥 0.41359 -1.08331 0.19805
  33. 福建水泥 0.86840 -0.53255 -1.82104
  34. 天鹅股份 -0.51340 -0.05315 -0.40422
  35. $Rank
  36. F Ri
  37. 冀东水泥 0.48359 3
  38. 大同水泥 -0.12910 8
  39. 四川双马 -0.37184 11
  40. 牡丹江 -0.76615 13
  41. 西水股份 0.35587 4
  42. 狮头股份 0.20127 5
  43. 太行股份 0.19490 6
  44. 海螺水泥 1.38882 1
  45. 尖峰集团 -0.90457 14
  46. 四川金顶 -0.47152 12
  47. 祁连山 0.63632 2
  48. 华新水泥 -0.09863 7
  49. 福建水泥 -0.17273 9
  50. 天鹅股份 -0.34622 10
  51. $common
  52. x1 x2 x3 x4 x5 x6
  53. 0.9971 0.9976 0.9318 0.9011 0.8502 0.8539
  54. >

 主因子法比极大似然估计发提取效果好一些92.19%,因极大似然法要求数据来自多元正态分布,这一点一般很难满足。

因子旋转法

建立因子模型,处理找出主因子,还要知道主因子的意义,如果因子代表的变量不是很突出,还需进行旋转,正交旋转和斜交旋转是因子旋转的两类方法,最常用的是最大方差正交旋转法-Varimax

  1. > (Fa1=factanal(X,3,rot="varimax")) #varimax法旋转因子分析
  2. Call:
  3. factanal(x = X, factors = 3, rotation = "varimax")
  4. Uniquenesses:
  5. x1 x2 x3 x4 x5 x6
  6. 0.005 0.005 0.005 0.271 0.005 0.548
  7. Loadings:
  8. Factor1 Factor2 Factor3
  9. x1 0.983 0.155
  10. x2 0.985 0.142
  11. x3 -0.990 -0.124
  12. x4 0.127 0.844
  13. x5 0.293 0.953
  14. x6 0.210 0.631
  15. Factor1 Factor2 Factor3
  16. SS loadings 1.998 1.800 1.367
  17. Proportion Var 0.333 0.300 0.228
  18. Cumulative Var 0.333 0.633 0.861
  19. The degrees of freedom for the model is 0 and the fit was 1.1422

 Loadings代表旋转后的因子载荷,可以看出旋转后的经济意义十分明显,F1在主营业务利润率x1上的载荷大道0.983,在销售毛利率x2上的载荷达到0.985,因此,因子F1代表企业的盈利能力,反应企业的投资收益情况,是资金周转营运能力的结果,也是资金流动偿债能力的基础。因子F2代表了企业的偿债能力,类似的,因子F3在主营业务收入增长率x5和营业利润率x6上的载荷值分别是0.953和0.631,所以因子F3代表了企业的发展能力,反应企业持续经营发展能力的指标。

因子得分计算

因子模型建立后,还有一个重要的作用是应用因子分析模型去评价每个样本在整个模型中的地位,即是进行综合评价,例如,地区经济发展的因子分析模型建立后,我们希望知道每个地区经济发展的情况,吧区域经济划分归类,那些地区发展较快,那些较慢,那些不快不慢等,这时需要将公共因子用变量的线性组合来表示,也即有地区经济的各项指标值来估计它的因子得分。

就冀东水泥来说,他的盈利能力建好,偿贷能力一般,发展能力中的偏下。

  1. > Fa1=factanal(X,3,scores="regression")#使用回归估计法的极大似然法因子分析
  2. > Fa1$scores
  3. Factor1 Factor2 Factor3
  4. 冀东水泥 1.0571 0.49858 -0.01932
  5. 大同水泥 0.2508 -1.97182 -0.55062
  6. 四川双马 -0.7619 0.61936 -0.35643
  7. 牡丹江 -1.2622 0.10831 -0.82490
  8. 西水股份 -1.4124 -0.36520 2.09840
  9. 狮头股份 0.2993 -2.28407 0.06540
  10. 太行股份 0.5368 -0.01725 -0.16548
  11. 海螺水泥 1.1383 0.86089 1.85549
  12. 尖峰集团 -1.7990 0.62143 -0.20236
  13. 四川金顶 0.4397 0.83905 -1.87521
  14. 祁连山 1.0220 -0.27756 0.10237
  15. 华新水泥 -0.4381 0.53317 0.26013
  16. 福建水泥 1.1144 0.91988 0.13561
  17. 天鹅股份 -0.1847 -0.08479 -0.52308
  18. >
  1. > Fac1=factpc(X,3,scores="regression")#使用回归估计法的主成份法因子分析
  2. > Fac1$scores
  3. Factor1 Factor2 Factor3
  4. 冀东水泥 1.10805 0.19287 -0.40233
  5. 大同水泥 -1.07195 1.46385 -0.37413
  6. 四川双马 -0.58577 -0.49848 0.24193
  7. 牡丹江 -1.17442 -0.77791 0.08986
  8. 西水股份 -0.05264 -0.46073 2.31615
  9. 狮头股份 -1.05007 2.04151 0.25174
  10. 太行股份 0.20807 0.48809 -0.23430
  11. 海螺水泥 2.20745 0.32524 1.16336
  12. 尖峰集团 -1.11541 -1.53235 0.39013
  13. 四川金顶 0.09714 -0.60602 -1.45691
  14. 祁连山 0.66096 1.03293 0.04173
  15. 华新水泥 0.41359 -1.08331 0.19805
  16. 福建水泥 0.86840 -0.53255 -1.82104
  17. 天鹅股份 -0.51340 -0.05315 -0.40422
  18. >

 因子排名与做图

下面是因子1的排名与做图,应力能力最高的就是海螺水泥,福建水泥,冀东水泥,祁连山

  1. > factanal.rank(Fa1,plot=T) #排名与做图
  2. $`Fs`
  3. Factor1 Factor2 Factor3
  4. 冀东水泥 1.0570974 0.49858291 -0.01931786
  5. 大同水泥 0.2508467 -1.97181549 -0.55061886
  6. 四川双马 -0.7618827 0.61936154 -0.35643016
  7. 牡丹江 -1.2621905 0.10831340 -0.82489689
  8. 西水股份 -1.4124102 -0.36519764 2.09839517
  9. 狮头股份 0.2992651 -2.28406622 0.06540023
  10. 太行股份 0.5367516 -0.01725097 -0.16547708
  11. 海螺水泥 1.1383136 0.86088890 1.85548532
  12. 尖峰集团 -1.7990483 0.62142573 -0.20235665
  13. 四川金顶 0.4396610 0.83905494 -1.87521145
  14. 祁连山 1.0220466 -0.27756182 0.10236965
  15. 华新水泥 -0.4381137 0.53317006 0.26012980
  16. 福建水泥 1.1143517 0.91988289 0.13560911
  17. 天鹅股份 -0.1846884 -0.08478822 -0.52308034
  18. $Ri
  19. F rank
  20. 冀东水泥 0.57762286 3
  21. 大同水泥 -0.73582797 14
  22. 四川双马 -0.17323177 9
  23. 牡丹江 -0.66885707 13
  24. 西水股份 -0.11845569 8
  25. 狮头股份 -0.66290875 12
  26. 太行股份 0.15786371 5
  27. 海螺水泥 1.23140339 1
  28. 尖峰集团 -0.53300988 11
  29. 四川金顶 -0.03369328 7
  30. 祁连山 0.32577583 4
  31. 华新水泥 0.08514207 6
  32. 福建水泥 0.78759236 2
  33. 天鹅股份 -0.23941579 10
  34. >

 在因子得分图中,综合排名靠前的在第一象限,排名靠后的大多在第四象限,总得来说,各企业间的差距非常明显,而且三种能力都好的企业很少,因此在水泥发展方面,各上市公司应该经常兼顾三种经营能力的协调发展,锐意改革,提供公司的业绩。

 因子信息重叠图

biplot(Fa1$scores,Fa1$loadings)#前2个因子信息重叠图 

例2

  1. X1 X2 X3 X4 X5 X6 X7 X8
  2. 北京 4934.05 1512.88 981.13 1294.07 2328.51 2383.96 1246.19 649.66
  3. 天津 4249.31 1024.15 760.56 1163.98 1309.94 1639.83 1417.45 463.64
  4. 河北 2789.85 975.94 546.75 833.51 1010.51 895.06 917.19 266.16
  5. 山西 2600.37 1064.61 477.74 640.22 1027.99 1054.05 991.77 245.07
  6. 内蒙古 2824.89 1396.86 561.71 719.13 1123.82 1245.09 941.79 468.17
  7. 辽宁 3560.21 1017.65 439.28 879.08 1033.36 1052.94 1047.04 400.16
  8. 吉林 2842.68 1127.09 407.35 854.8 873.88 997.75 1062.46 394.29
  9. 黑龙江 2633.18 1021.45 355.67 729.55 746.03 938.21 784.51 310.67
  10. 上海 6125.45 1330.05 959.49 857.11 3153.72 2653.67 1412.1 763.8
  11. 江苏 3928.71 990.03 707.31 689.37 1303.02 1699.26 1020.09 377.37
  12. 浙江 4892.58 1406.2 666.02 859.06 2473.4 2158.32 1168.08 467.52
  13. 安徽 3384.38 906.47 465.68 554.44 891.38 1169.99 850.24 309.3
  14. 福建 4296.22 940.72 645.4 502.41 1606.9 1426.34 1261.18 375.98
  15. 江西 3192.61 915.09 587.4 385.91 732.97 973.38 728.76 294.6
  16. 山东 3180.64 1238.34 661.03 708.58 1333.63 1191.18 1027.58 325.64
  17. 河南 2707.44 1053.13 549.14 626.55 858.33 936.55 795.39 300.19
  18. 湖北 3455.98 1046.62 550.16 525.32 903.02 1120.29 856.97 242.82
  19. 湖南 3243.88 1017.59 603.18 668.53 986.89 1285.24 869.59 315.82
  20. 广东 5056.68 814.57 853.18 752.52 2966.08 1994.86 1444.91 454.09
  21. 广西 3398.09 656.69 491.03 542.07 932.87 1050.04 803.04 277.43
  22. 海南 3546.67 452.85 519.99 503.78 1401.89 837.83 819.02 210.85
  23. 重庆 3674.28 1171.15 706.77 749.51 1118.79 1237.35 968.45 264.01
  24. 四川 3580.14 949.74 562.02 511.78 1074.91 1031.81 690.27 291.32
  25. 贵州 3122.46 910.3 463.56 354.52 895.04 1035.96 718.65 258.21
  26. 云南 3562.33 859.65 280.62 631.7 1034.71 705.51 673.07 174.23
  27. 西藏 3836.51 880.1 271.29 272.81 866.33 441.02 628.35 335.66
  28. 陕西 3063.69 910.29 513.08 678.38 866.76 1230.74 831.27 332.84
  29. 甘肃 2824.42 939.89 505.16 564.25 861.47 1058.66 768.28 353.65
  30. 青海 2803.45 898.54 484.71 613.24 785.27 953.87 641.93 331.38
  31. 宁夏 2760.74 994.47 480.84 645.98 859.04 863.36 910.68 302.17
  32. 新疆 2760.69 1183.69 475.23 598.78 890.3 896.79 736.99 331.8
  1. > X=read.table("clipboard",header=T)#读取例7.2数据
  2. > library(mvstats)
  3. > Fac0=factpc(X,3)#因子分析
  4. > Fac0$Vars#方差及贡献率
  5. Vars Vars.Prop Vars.Cum
  6. Factor1 5.7012 0.71265 71.26
  7. Factor2 1.0287 0.12858 84.12
  8. Factor3 0.5043 0.06304 90.43
  9. >

 公因子F1几乎占据了所有重要指标,F2的x2相对较大,这两个因子即可代表该城市的发达程度和消费水平。

  1. > Fac1=factpc(X,3,rot="varimax")#运用旋转因子分析
  2. Factor Analysis for Princomp in Varimax:
  3. > Fac1$Vars#方差及贡献率
  4. Vars Vars.Prop Vars.Cum
  5. Factor1 4.016 50.20 50.20
  6. Factor2 1.680 21.00 71.20
  7. Factor3 1.538 19.22 90.43
  8. > Fac0$loadings#因子载荷
  9. Factor1 Factor2 Factor3
  10. X1 0.8429 -0.43524 0.12432
  11. X2 0.5956 0.68671 0.37005
  12. X3 0.8926 -0.09008 -0.05094
  13. X4 0.7202 0.47829 -0.44596
  14. X5 0.8979 -0.32885 0.08740
  15. X6 0.9647 -0.07045 0.06403
  16. X7 0.8858 -0.05691 -0.31385
  17. X8 0.8939 0.12018 0.20046
  18. > Fac1$loadings#因子载荷
  19. Factor1 Factor2 Factor3
  20. X1 0.9463 0.1159 0.08084
  21. X2 0.1527 0.2499 0.93676
  22. X3 0.7580 0.4145 0.24728
  23. X4 0.2249 0.8743 0.36250
  24. X5 0.9231 0.2125 0.15722
  25. X6 0.8252 0.3638 0.35547
  26. X7 0.6864 0.6337 0.11656
  27. X8 0.6843 0.2980 0.54462
  1. > Fac1$scores#因子得分
  2. Factor1 Factor2 Factor3
  3. 北京 1.18092 1.74118 2.0290303
  4. 天津 0.20460 2.96179 -0.7387309
  5. 河北 -0.92649 1.20877 -0.4632058
  6. 山西 -0.78973 0.43269 -0.0522166
  7. 内蒙古 -0.62006 -0.18964 2.1005492
  8. 辽宁 -0.51315 1.07679 -0.1140626
  9. 吉林 -1.04765 1.15843 0.4542682
  10. 黑龙江 -1.16020 0.29219 0.2627968
  11. 上海 3.25451 -0.50217 1.4096665
  12. 江苏 0.60518 0.14247 -0.2101378
  13. 浙江 1.38897 -0.19508 1.4370242
  14. 安徽 -0.15415 -0.44702 -0.3504643
  15. 福建 1.14760 -0.30179 -0.7812963
  16. 江西 -0.08324 -1.25789 -0.1147615
  17. 山东 -0.26270 0.28871 0.7222037
  18. 河南 -0.75769 -0.09266 0.3236384
  19. 湖北 -0.18783 -0.59587 0.0211735
  20. 湖南 -0.24456 0.06551 0.0408756
  21. 广东 2.50339 0.69802 -1.7414243
  22. 广西 0.01884 -0.23030 -1.5152172
  23. 海南 0.43204 -0.14803 -2.7440469
  24. 重庆 -0.16768 0.43917 0.2490205
  25. 四川 0.05602 -1.08548 -0.0581755
  26. 贵州 -0.11095 -1.47558 -0.1667687
  27. 云南 -0.61547 -0.42528 -0.8159804
  28. 西藏 0.01200 -2.46313 -0.0009129
  29. 陕西 -0.42416 0.17032 -0.2713572
  30. 甘肃 -0.45628 -0.46636 0.0892125
  31. 青海 -0.66054 -0.42814 -0.0065357
  32. 宁夏 -0.78567 0.27927 -0.1067207
  33. 新疆 -0.83587 -0.65089 1.1125557
  1. > Fac1$Rank#排名
  2. F Ri
  3. 北京 1.49132 2
  4. 天津 0.64435 5
  5. 河北 -0.33214 18
  6. 山西 -0.34907 20
  7. 内蒙古 0.05826 10
  8. 辽宁 -0.05908 11
  9. 吉林 -0.21606 13
  10. 黑龙江 -0.52041 29
  11. 上海 1.98992 1
  12. 江苏 0.32440 7
  13. 浙江 1.03133 4
  14. 安徽 -0.26389 17
  15. 福建 0.40095 6
  16. 江西 -0.36273 21
  17. 山东 0.07473 8
  18. 河南 -0.37337 23
  19. 湖北 -0.23816 15
  20. 湖南 -0.11187 12
  21. 广东 1.18174 3
  22. 广西 -0.36514 22
  23. 海南 -0.37786 24
  24. 重庆 0.06183 9
  25. 四川 -0.23334 14
  26. 贵州 -0.43972 27
  27. 云南 -0.61393 31
  28. 西藏 -0.56553 30
  29. 陕西 -0.25362 16
  30. 甘肃 -0.34266 19
  31. 青海 -0.46754 28
  32. 宁夏 -0.39403 26
  33. 新疆 -0.37870 25
  34. >
  1. par(mar=c(4,4,2,1)+0.1,cex=0.75) #
  2. plot(Fac1$scores,ylim=c(-3,3)); abline(h = 0, v = 0, lty = 3)
  3. text(Fac1$scores,label=rownames(X),pos=1,adj=0.5,cex=0.8)

 

> plot.text(Fac1$scores) #因子得分图

biplot(Fac1$scores,Fac1$loading) #信息重叠图   

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号