R语言主成分分析

目录

一、导入数据

二、KMO与Bartlett检验

三、判定主成分个数

四、主成分分析

五、综合主成分得分计算 


原始数据是31*24的矩阵(省份/各指标)

一、导入数据

library(xlsx)
data <- read.xlsx("D://input.xlsx, sheetIndex = 1)
std <- scale(data)  # 标准化
df <- as.data.frame(std)

二、KMO与Bartlett检验

library(psych)
c <- as.data.frame(cor(df))  # 相关系数矩阵
KMO(c)  # KMO
bartlett.test(c)  # 巴特利球形检验

bartlett.test是方差齐性检验不是球形度检验,球形度检验可用psych包的cortest.bartlett函数

-- 用户 qq_41785446

KMO抽样适当性用于研究变量之间的偏相关系数,值越接近1,越适合做因子分析,0.7以上适合,0.5以下不可用因子分析。

Bartlett's球形检验,研究相关矩阵中变量的相关性,是否独立,假设α=0.05,计算得出p<0.05即适合应用因子分析。

结果如下:

Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = c)
Overall MSA =  0.73


	Bartlett test of homogeneity of variances

data:  as.data.frame(cor(data))
Bartlett's K-squared = 38.511, df = 23, p-value = 0.02243

三、判定主成分个数

fa.parallel(df, fa = "pc", n.iter = 100, show.legend = F, main = "Scree plot with parallel analysis")

画出碎石图,第一个参数为待研究的数据集或相关系数矩阵,fa为主成分分析(fa= "pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。

如图,结合实际情况,判断4个主成分可解释大部分数据信息。

四、主成分分析

df.pc <- principal(df, nfactors = 4, score = T, rotate = 'varimax')

第一个参数为原始数据或数据的相关系数矩阵,nfactors指定主成分个数,score表示是否计算主成分得分,rotate表示旋转方法,varimax为最大方差旋转。

运行结果:

Principal Components Analysis
Call: principal(r = data, nfactors = 4, rotate = "varimax", scores = T)
Standardized loadings (pattern matrix) based upon correlation matrix
      RC1    RC2    RC3    RC4    h2     u2    com
X1    0.81   0.32  -0.02  -0.29  0.84   0.160  1.6
X2   -0.03   0.83   0.07  -0.05  0.70   0.296  1.0
X3    0.01   0.96  -0.01  -0.06  0.92   0.082  1.0
X4   -0.04  -0.49   0.63  -0.37  0.78   0.222  2.6
X5    0.09   0.53   0.77   0.03  0.89   0.111  1.8
X6    0.23   0.18   0.89   0.19  0.91   0.086  1.3
X7    0.09  -0.04   0.92   0.11  0.86   0.138  1.1
X8    0.79  -0.20   0.33   0.14  0.80   0.198  1.6
X9    0.93   0.31   0.05   0.03  0.97   0.035  1.2
X10   0.16   0.91  -0.05   0.05  0.86   0.136  1.1
X1    0.92  -0.01   0.14   0.33  0.97   0.033  1.3
X12   0.25  -0.02   0.09   0.87  0.82   0.179  1.2
X13   0.31   0.04   0.26   0.33  0.27   0.729  2.9
X14   0.97   0.05   0.09   0.06  0.95   0.047  1.0
X15   0.97  -0.02   0.12   0.13  0.98   0.024  1.1
X16   0.94  -0.06   0.10   0.16  0.91   0.087  1.1
X17   0.96   0.09   0.05   0.05  0.94   0.055  1.0
X18   0.96   0.06   0.10   0.14  0.96   0.040  1.1
X19   0.95   0.01   0.14   0.14  0.95   0.051  1.1
X20   0.89   0.33  -0.07  -0.03  0.90   0.099  1.3
X21   0.92  -0.01   0.08   0.29  0.93   0.066  1.2
X22   0.93   0.05   0.05   0.22  0.93   0.072  1.1
X23   0.12   0.83   0.19   0.08  0.75   0.253  1.2
X24   0.78   0.57   0.08  -0.11  0.94   0.057  1.9

                        RC1  RC2  RC3  RC4
SS loadings           11.89 4.39 2.96 1.50
Proportion Var         0.50 0.18 0.12 0.06
Cumulative Var         0.50 0.68 0.80 0.86
Proportion Explained   0.57 0.21 0.14 0.07
Cumulative Proportion  0.57 0.78 0.93 1.00

Mean item complexity =  1.4
Test of the hypothesis that 4 components are sufficient.

The root mean square of the residuals (RMSR) is  0.03 
 with the empirical chi square  16.63  with prob <  1 

Fit based upon off diagonal values = 1

RC列为旋转的成分载荷(component loadings),成分载荷是原始变量与主成分的相关系数。

h2列是成分公因子方差,是主成分对每个变量的方差解释度。u2列是成分唯一性,是主成分无法解释变量方差的比例,u2 = 1-h2。

SS loadings包含了与主成分相关联的特征值,其含义是与特定主成分相关联的标准化后的方差值。

Proportion  Var和Cumulative  Var分别为主成分对整个数据集的方差解释度和累积解释度。

df.pc$scores

scores为最终得出的主成分得分表,手工计算过程如下:

r <- round(unclass(df.pc$weights),4)

计算主成分得分的系数如下:

      RC1     RC2     RC3     RC4
X1    0.1067  0.0405 -0.0260 -0.3003
X2   -0.0298  0.1996  0.0180 -0.0166
X3   -0.0267  0.2291 -0.0164 -0.0127
X4    0.0282 -0.1393  0.2647 -0.3473
X5   -0.0416  0.1152  0.2713 -0.0184
X6   -0.0342  0.0269  0.3050  0.0739
X7   -0.0351 -0.0239  0.3287  0.0174
X8    0.0660 -0.0774  0.0872 -0.0006
X9    0.0850  0.0415 -0.0218 -0.0700
X10  -0.0182  0.2173 -0.0418  0.0525
X11   0.0605 -0.0259 -0.0047  0.1536
X12  -0.0655  0.0136 -0.0317  0.6542
X13  -0.0128  0.0063  0.0606  0.2178
X14   0.0931 -0.0223 -0.0085 -0.0546
X15   0.0879 -0.0375  0.0005 -0.0079
X16   0.0833 -0.0449 -0.0088  0.0197
X17   0.0939 -0.0108 -0.0221 -0.0608
X18   0.0831 -0.0161 -0.0088  0.0091
X19   0.0823 -0.0279  0.0074  0.0051
X20   0.0901  0.0491 -0.0626 -0.1039
X21   0.0668 -0.0272 -0.0236  0.1271
X22   0.0743 -0.0137 -0.0327  0.0769
X23  -0.0325  0.1963  0.0473  0.0689
X24   0.0726  0.1041  0.0005 -0.1588

主成分得分计算公式如下:

Y1 = 0.1067 * X1 + (-0.0298) * X2 + ... + 0.0726 * X24
Y2 = 0.0405 * X1 + 0.1996 * X2 + ... + 0.1041* X24
Y3 = (-0.0260) * X1 + 0.0180 * X2 + ... + 0.0005 * X24
Y4 = (-0.3003) * X1 + (-0.0166) * X2 + ... + (-0.1588) * X24

其中X1 - X24为原始数据标准化后各省份的24个指标,可用矩阵乘法:

score <- std%*%r  # 与df.pc$scores相等

结果主成分得分表如下:

              RC1          RC2           RC3         RC4
 [1,]  0.40729898 -0.173988020  0.3874556281 -0.05301080
 [2,] -1.11682799  3.104539282  0.2310040265  0.60184756
 [3,] -0.04509375  0.229832267 -1.1062683021 -0.39688093
 [4,] -0.71721994 -0.749769819  0.3995516215  1.13331645
 [5,]  2.91766096  0.734141346 -1.1791637869 -2.14197781
 [6,]  0.17749738 -0.690481842 -0.5628109196  0.53953253
 [7,] -0.03367267 -0.723251304 -1.0836460962  1.09011180
 [8,] -0.86022463 -0.291414007 -1.9600090694 -0.37513876
 [9,]  0.50495206 -0.424048981  1.6929722708 -0.68088505
[10,]  1.45359875 -0.267438597  1.2868414727  1.09157465
[11,] -0.59200310 -0.736893391 -0.5732582975 -0.30519019
[12,]  0.13895423  0.029367429  0.2163135817  1.32646802
[13,]  0.63922771 -0.586245802 -0.1177545454  1.47301905
[14,] -0.62147239 -0.500275978 -0.2545086584 -0.68977632
[15,]  1.34318980  0.981143787  0.0981679196 -0.11875221
[16,]  0.02204232 -0.595260913 -0.0001144507  0.07397632
[17,] -0.26121812 -0.466174073  0.8677822669 -1.20619899
[18,] -0.52920640 -0.615121445 -0.0818874678 -1.11865934
[19,] -1.13707465 -0.450476775  0.5863590254 -0.57419736
[20,] -1.05941504 -0.712859015 -0.7051014525 -0.33757004
[21,]  2.06363902 -0.002806274  0.8336204460 -0.29548958
[22,] -0.36818901 -0.879116908  2.1644096748 -1.87451025
[23,] -0.32916947  0.049866331  0.9159014132  0.72551819
[24,] -0.88449846  3.122386723 -0.1570580513 -0.10809760
[25,]  1.30733297 -0.209142083 -0.4173914171  1.30022098
[26,] -1.11881175  0.989024251  1.2014332388 -1.11430325
[27,] -0.92599215 -0.622679157 -1.9232374802 -1.32427272
[28,] -0.78797400 -0.470430084  1.1359083954  1.14567797
[29,]  0.13066474 -0.557327941 -1.3221012565  0.67248017
[30,]  0.81304934  1.248037288 -0.6996913436  0.10561151
[31,] -0.53104474  0.236863707  0.1262816138  1.43555602

五、综合主成分得分计算 

从Proportion  Var和Cumulative  Var可得出RC1方差解释率为0.50,RC2为0.18,RC3为0.12,RC4为0.06,累计方差解释率0.86。

各成分系数分别为R1 = 0.50/0.86、R2 = 0.18/0.86、R3 = 0.12/0.86、R4 = 0.06/0.86

综合主成分得分 = R1*X1 + R2*X2 + R3*X3 + R4*X4

  • 9
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值