目录
原始数据是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