当前位置:   article > 正文

基于R语言的因子分析(附代码)_r语言因子分析

r语言因子分析

一、因子分析数学推导

        用少数几个不可观测的随机变量(因子)去描述许多随机变量之间的协方差关系。主义因子分析可以视作主成分分析的一种推广,但因子是不可观察且不必是相互正交的变量。其基本思想是:根据相关性大小将变量分组,每组变量代表一个基本结构,反映观测到的相关性。R型因子分析可以用来研究变量之间的相关关系,Q型因子分析研究样品之间的相关关系,二者知识形式上的不同数学处理上是一样的,本文以R型因子为例展开说明。

1.1正交因子模型

        假定P维期望为eq?%5Cmu_%7Bi%7D,协方差矩阵为eq?%5Csum的随机变量X线性地依赖于少数几个不可观测的随机变量eq?f_%7B1%7D%2C....%2Cf_%7Bm%7D(公因子)和附加的方差源eq?%5Cvarepsilon%20_%7B1%7D%2C...%2C%5Cvarepsilon%20_%7Bp%7D(特殊因子,误差),那么因子模型可表作

   eq?x_%7Bi%7D%3D%5Cmu%20_%7Bi%7D+%5Csum%20%7Ba_%7Bij%7D*f_%7Bj%7D%7D+%5Cvarepsilon%20_%7Bi%7D

其中eq?%5Cmu_%7Bi%7D%2Ci%3D1...p为数学期望,eq?a_%7Bij%7D为第i个变量在第j个因子上的载荷。

当以下条件成立时,我们称该模型为正交因子模型(F为公因子构成矩阵):eq?E%28F%29%3D0%2CVar%28F%29%3DI%2CE%28%5Cvarepsilon%20%29%3D0eq?Cov%28F%2C%5Cvarepsilon%29%3D0

可推导知eq?Var%28x_%7Bi%7D%29%3D%5Csigma%20_%7Bii%7D%3D%5Csum%7Ba_%7Bij%7D%5E2%7D+%5Cphi%20_%7Bi%7Deq?Cov%28x_%7Bi%7D%2Cj_%7Bj%7D%29%3Da_%7Bij%7D

也就是Xi有m个公因子和一个特殊因子构成。公因子的贡献总和称为共同度,特殊因子的方差贡献为特殊度。注意到,在非退化的情况下模型是不唯一的(缺少约束时模型是不可识别的)。

1.2 因子模型的估计

        建立因子模型首先要估计载荷矩阵和特殊方差,常用的估计方法有主成分发、主因子法和最大似然法。

1.2.1 主成分法

        设eq?%5Clambda%20_%7B1%7D%2C...%2C%5Clambda_%7Bp%7D%28%5Clambda_%7B1%7D%5Cgeq%20...%5Cgeq%5Clambda_%7Bp%7D%5Cgeq%200%29eq?%5Csum的特征值,eq?e_%7B1%7D%2C...e_%7Bp%7D为对应的标准正交化特征向量。这里可以对随机变量的协方差矩阵进行分解,并且假定特殊因子是可以在分解过程中忽略的。在实际中,常用样本的协方差矩阵来代替,考虑到变量的量纲差别,往往需要将数据标准化,这样求得的样本方差-协方差矩阵就是原来数据的相关系数矩阵R,并对R进行以上操作。而后根据各特征值的占比和阈值进行比较取定公因子。

1.2.2 主因子法

        作R的约相关矩阵并对此进行估计,具体过程不在文本赘述,其和主成分法的不同是:特殊方差汗的估计在不同步骤进行。如果我们希望求得拟合程度更高的节,可以采用迭代的方法,即将上一步中的特殊方差作为下一步的初始估计。

1.2.3极大似然法

   在模型假定下计算似然函数eq?L%28%5Cmu%2C%5Csum%29,记其极大似然估计为eq?L%28%5Chat%7B%5Cmu%7D%2C%5Chat%7BA%7D%2C%5Chat%7B%5Csum%20%7D%29%3DmaxL%28%5Cmu%2CA%2C%5Csum%29

注意对极大似然解,当因子数增加时,愿挨银子的估计载荷以及对x的贡献度发生改变,区别于前两种方法。

1.3因子正交旋转

        满足方差结构的因子模型并不唯一,模型的公因子和载荷矩阵不唯一,并且公因子和因子载荷矩阵作正交变换后并不改变公共度,乘因子载荷的正交变换和伴随的因子正交变换为因子正交旋转,从而得到更简单的结构。

1.4因子得分

        因子得分即对公因子的估计

1.4.1加权最小二乘法

        先将因子模型改写为eq?X-%5Cmu%3DAF+%5Cvarepsilon后经过变化并由最小二乘法可得eq?F的估计。是集中通常用它们的某种估计来代替eq?A%2C%5Csum%2C%5Cmu

1.4.2回归法

        在正交因子模型中假设eq?%5Cbegin%7Bpmatrix%7D%20F%5C%5C%20X%20%5Cend%7Bpmatrix%7D服从eq?%28m+p%29元正态分布,用回归预测的方法估计。

1.4.3综合因子得分

        以各因子的方差贡献率为权重,由各因子的下行组合得到综合评价指标函数:

eq?f%3D%5Cfrac%7B%5Csum%7B%5Clambda_%7Bi%7Df_%7Bi%7D%7D%7D%7B%5Csum%7B%5Clambda_%7Bi%7D%7D%7D%3D%5Csum%7Bw_%7Bi%7Df_%7Bi%7D%7D

二、案例分析

  1. ####导入数据 安装相应库###############
  2. setwd('C:/Users/myq20170530/data')
  3. data<-read.csv('eg6.1.csv',header = 1)
  4. data<-scale(data)##数据标准化处理
  5. cor(data) ##观察各个变量之间的相关程度
  6. install.packages('psych')##笔者mvstats库无法下载故而用psych代替
  7. library('psych')
  8. install.packages('GPArotation')
  9. library('GPArotation')
  10. ####用主成分分析和极大似然法进行因子分析##########
  11. fa(data,nfactors=2,fm='ml',rotate = 'none')
  12. >Factor Analysis using method = ml
  13. Call: fa(r = data, nfactors = 2, rotate = "none", fm = "ml")
  14. Standardized loadings (pattern matrix) based upon correlation matrix
  15. ML1 ML2 h2 u2 com
  16. x1 -0.68 0.56 0.77 0.23 1.9
  17. x2 -0.60 0.43 0.54 0.46 1.8
  18. x3 -0.49 0.66 0.67 0.33 1.8
  19. x4 0.92 0.10 0.85 0.15 1.0
  20. x5 0.86 0.24 0.79 0.21 1.2
  21. x6 0.88 0.27 0.85 0.15 1.2
  22. ML1 ML2
  23. SS loadings 3.40 1.07
  24. Proportion Var 0.57 0.18
  25. Cumulative Var 0.57 0.75
  26. Proportion Explained 0.76 0.24
  27. Cumulative Proportion 0.76 1.00
  28. Mean item complexity = 1.5
  29. Test of the hypothesis that 2 factors are sufficient.
  30. df null model = 15 with the objective function = 4.28 with Chi Square = 205.97
  31. df of the model are 4 and the objective function was 0.08
  32. The root mean square of the residuals (RMSR) is 0.02
  33. The df corrected root mean square of the residuals is 0.04
  34. The harmonic n.obs is 52 with the empirical chi square 0.62 with prob < 0.96
  35. The total n.obs was 52 with Likelihood Chi Square = 3.64 with prob < 0.46
  36. Tucker Lewis Index of factoring reliability = 1.007
  37. RMSEA index = 0 and the 90 % confidence intervals are 0 0.203
  38. BIC = -12.17
  39. Fit based upon off diagonal values = 1
  40. Measures of factor score adequacy
  41. ML1 ML2
  42. Correlation of (regression) scores with factors 0.97 0.89
  43. Multiple R square of scores with factors 0.95 0.80
  44. Minimum correlation of possible factor scores 0.89 0.59
  45. > fac1=principal(data,2,rotate='none')
  46. > fac1
  47. Principal Components Analysis
  48. Call: principal(r = data, nfactors = 2, rotate = "none")
  49. Standardized loadings (pattern matrix) based upon correlation matrix
  50. PC1 PC2 h2 u2 com
  51. x1 -0.79 0.42 0.81 0.19 1.5
  52. x2 -0.73 0.40 0.70 0.30 1.5
  53. x3 -0.64 0.63 0.81 0.19 2.0
  54. x4 0.89 0.31 0.89 0.11 1.2
  55. x5 0.81 0.47 0.87 0.13 1.6
  56. x6 0.83 0.46 0.90 0.10 1.6
  57. PC1 PC2
  58. SS loadings 3.71 1.26
  59. Proportion Var 0.62 0.21
  60. Cumulative Var 0.62 0.83
  61. Proportion Explained 0.75 0.25
  62. Cumulative Proportion 0.75 1.00
  63. Mean item complexity = 1.6
  64. Test of the hypothesis that 2 components are sufficient.
  65. The root mean square of the residuals (RMSR) is 0.06
  66. with the empirical chi square 5.96 with prob < 0.2
  67. Fit based upon off diagonal values = 0.99
  68. fac2=principal(data,2,rotate = 'varimax')
  69. > fac2
  70. Principal Components Analysis
  71. Call: principal(r = data, nfactors = 2, rotate = "varimax")
  72. Standardized loadings (pattern matrix) based upon correlation matrix
  73. RC1 RC2 h2 u2 com
  74. x1 -0.32 0.84 0.81 0.19 1.3
  75. x2 -0.29 0.78 0.70 0.30 1.3
  76. x3 -0.07 0.90 0.81 0.19 1.0
  77. x4 0.88 -0.35 0.89 0.11 1.3
  78. x5 0.92 -0.18 0.87 0.13 1.1
  79. x6 0.93 -0.20 0.90 0.10 1.1
  80. RC1 RC2
  81. SS loadings 2.66 2.31
  82. Proportion Var 0.44 0.39
  83. Cumulative Var 0.44 0.83
  84. Proportion Explained 0.54 0.46
  85. Cumulative Proportion 0.54 1.00
  86. Mean item complexity = 1.2
  87. Test of the hypothesis that 2 components are sufficient.
  88. The root mean square of the residuals (RMSR) is 0.06
  89. with the empirical chi square 5.96 with prob < 0.2
  90. Fit based upon off diagonal values = 0.99
  1. ###对结果进行可视化处理######################
  2. plot(fac2$loadings,xlabel='Factor1',ylabel='Factor2')#输出因子载荷图
  3. text(fac2$loadings,paste=("x",1:12,sep=""),cex=1.5)
  4. fac2.plotdata<-fac2$scores
  5. rownames(fac2.plotdata)<-unlist(name)
  6. plot.text(fac2.plotdata)#因子得分图
  7. plot(fac2$loadings,xlab="Factor1",ylab="Factor2")#各因子得分图和原坐标在因子上的方向图

48be9233c64f494ba7c8038ac8d76459.png

4004d187bff148f7862c2acf5696bacb.png 

 三、结果分析

        由因子载荷图可以看出后三个随机变量离第一个因子较近,前三者离第二个因子较近。

        从上述极大似然法和主成分法得到的因子分析结果可以看出:当m取2时极大似然法累计贡献率为74%而主成分法的累计贡献率为87%,说明主成分法效果比极大似然法好。

      从因子正交旋转的结果可以看出累计贡献率为82.87%。可见作正交旋转后因子的含义更清晰。

      本文内容主要来源于费宇先生所著《多元统计分析——基于R》一文,笔者才疏学浅,若有不妥谬误之处,还望温和批评指正。

 

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

闽ICP备14008679号